Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Faça como eu fiz: integração RAG

Olá! Tudo bem?

Segue o link do repositório com a implementação da atividade:

Link do Git: https://github.com/Moquiuti/tecnicas_avancadas_rag

Nesta etapa, avancei na construção de uma pipeline RAG mais completa, colocando em prática os conteúdos abordados sobre DocLoaders, chunking, embeddings, vector stores e busca por similaridade. A ideia foi ir além de um exemplo isolado e montar uma estrutura mais próxima de um cenário real, trabalhando com múltiplas fontes de documentos e estratégias diferentes de processamento.

Como já havia ocorrido na atividade anterior, mantive a decisão de não depender da OpenAI por conta da limitação de quota/crédito identificada anteriormente. Por isso, a implementação foi adaptada para uma abordagem local-first, utilizando modelos e ferramentas locais ou gratuitas, sem perder o objetivo técnico principal da atividade.

O fluxo implementado nesta entrega foi:

documentos → loaders → metadados → chunking → embeddings → vector store → busca por similaridade → validação dos resultados

O que foi implementado

Nesta atividade, implementei e validei o carregamento de documentos a partir de diferentes fontes:

arquivos .txt com TextLoader;
arquivos PDF com PyPDFLoader, incluindo extração de metadados como fonte, página e total de páginas;
páginas web com WebBaseLoader;
múltiplos arquivos dentro de diretórios com DirectoryLoader;
união de fontes diferentes com MergedDataLoader.

Depois disso, apliquei diferentes estratégias de divisão dos documentos:

chunking simples por contagem de caracteres;
chunking recursivo com RecursiveCharacterTextSplitter;
chunking por tokens com tiktoken;
chunking semântico com SemanticChunker.

Também implementei a geração de embeddings usando alternativa local ao OpenAI:

HuggingFaceEmbeddings, com modelo multilíngue;
posteriormente, avancei também para testes com bge-m3 via Ollama, buscando melhorar a qualidade dos embeddings em um cenário local.

Na parte de armazenamento vetorial, utilizei:

InMemoryVectorStore;
FAISS local.

E por fim, validei a recuperação semântica dos documentos por meio de:

busca por similaridade;
retorno de scores;
filtro por metadados;
conferência manual dos trechos recuperados.

Validação da execução

A execução foi concluída com sucesso.
No primeiro script da atividade, consegui validar:

carregamento de TXT;
carregamento de PDF com metadados;
carregamento de conteúdo web;
carregamento de diretório;
união das fontes;
chunking por caracteres;
chunking recursivo;
chunking por tokens;
chunking semântico;
criação de vector store em memória;
criação de vector store FAISS;
busca por similaridade com score;
busca com filtro por metadados.

Os resultados de similaridade foram coerentes. Por exemplo, perguntas sobre cartão corporativo recuperaram a política de cartão, perguntas sobre reembolso recuperaram a política de reembolso, perguntas sobre fornecedores localizaram o conteúdo do PDF e perguntas sobre viagens recuperaram a política de viagens. Isso ajudou a validar que a recuperação semântica estava funcionando corretamente.

Além disso, avancei em uma segunda variação mais completa da pipeline, utilizando PDFs reais em uma pasta própria, embeddings locais com bge-m3, modelo local llama3.2:3b e FAISS. Nessa execução, o pipeline carregou vários PDFs, extraiu dezenas de páginas/documentos, gerou chunks com tokenizer Hugging Face e validou a geração de embeddings locais com vetores de 1024 dimensões.

Arquivos principais para validação

rag_pdfs_ollama_faiss_langchain.ipynb
rag_pipeline_completo.py

Commit da atividade

Implementa loaders, chunking e busca vetorial com alternativas locais
2 respostas

Oi, Leandro! Como vai?

Agradeço por compartilhar suas reflexões e aprendizados com a comunidade Alura.

Muito legal ver o seu progresso, você estruturou bem a pipeline completa de RAG e explorou múltiplas estratégias de chunking e embeddings. Sua decisão de seguir com uma abordagem local-first mostra domínio do cenário real e adaptação às limitações, além de reforçar o entendimento prático do fluxo de documentos → processamento → recuperação semântica. A validação dos resultados com diferentes tipos de consultas também mostra um cuidado consistente com a qualidade da recuperação.

Continue avançando nesse caminho, você está construindo uma base sólida em RAG aplicada. ✨

Dica: para evoluir ainda mais, você pode comparar o desempenho entre diferentes estratégias de chunking e embeddings criando pequenos testes controlados (mesmas queries, mudando apenas uma variável por vez) e analisando os scores e relevância dos resultados. Isso ajuda a entender melhor o impacto de cada escolha no pipeline.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

O que você achou mais desafiador ao comparar as diferentes estratégias que implementou?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

Olá Monalisa, obrigado por seu feedback!