Nesta atividade, implementei e validei o fluxo principal de uma pipeline RAG utilizando LangChain, passando pelas etapas essenciais de carregamento de documento, divisão em chunks, geração de embeddings, criação de banco vetorial em memória, configuração de retriever, montagem de prompt template e execução de uma cadeia com modelo de linguagem.
Durante a execução da atividade, optei inicialmente por seguir o caminho proposto pelo curso, utilizando OpenAI para o modelo de linguagem e para os embeddings. Porém, ao realizar os testes, a API retornou erro 429 - insufficient_quota, indicando ausência de crédito/quota disponível na conta. Também tentei manter o LangSmith habilitado para rastreabilidade, mas o serviço retornou erro 403 - Forbidden, relacionado à falta de permissão ou chave válida para envio dos traces.
Como o objetivo principal da atividade era compreender e implementar a arquitetura RAG, decidi não interromper o exercício por causa dessas limitações externas. Em vez disso, adaptei a solução para um caminho alternativo sem custo, mantendo a mesma lógica técnica proposta pelo curso.
A implementação final utiliza:
TextLoader para carregar o documento base;
RecursiveCharacterTextSplitter para realizar o chunking;
HuggingFaceEmbeddings como alternativa ao OpenAIEmbeddings;
InMemoryVectorStore para armazenar os vetores em memória;
retriever para recuperar os chunks mais relevantes;
ChatPromptTemplate para estruturar mensagens de system e usuário;
ChatOllama como alternativa local ao ChatOpenAI;
LangSmith desabilitado temporariamente, com a configuração comentada no projeto.
O fluxo implementado foi:
documento → chunks → embeddings → banco vetorial → retriever → prompt → modelo → resposta
Também configurei o ambiente local do zero, utilizando Python em ambiente virtual, Jupyter Notebook com kernel próprio do projeto e dependências isoladas. Durante esse processo, enfrentei alguns problemas de ambiente, como erro de caminho longo no Windows durante a instalação de pacotes do Jupyter, problema de codificação UTF-8 em arquivos Python e .env, além de ajustes relacionados ao uso do Ollama local.
Outro ponto importante foi a atenção com segurança no versionamento. Durante o commit, identifiquei problemas relacionados a token/chave sensível e corrigi antes de finalizar o envio para o repositório. O arquivo .env foi tratado para não expor credenciais, e a configuração sensível ficou separada/comentada.
Mesmo com a limitação de qualidade do modelo local utilizado, a estrutura técnica da pipeline foi construída e executada corretamente. O modelo local não apresentou respostas tão boas quanto se esperaria de um modelo maior ou da OpenAI, mas o foco da atividade foi preservado: entender e montar a arquitetura RAG de ponta a ponta, aplicando contornos técnicos quando os serviços pagos não estavam disponíveis.
No final, a entrega demonstra não apenas a execução do exemplo, mas também a capacidade de diagnosticar problemas reais de ambiente, quota, permissões, encoding, versionamento e adaptar a solução mantendo o objetivo técnico da atividade.
Os principais arquivos criados e utilizados foram:
politica_cartao.txt
Arquivo de texto usado como documento base para a pipeline RAG.
carregar_arquivo.py
Script utilizado para validar o carregamento inicial do documento com TextLoader.
arquivo_chunking.py
Script utilizado para realizar o chunking do documento com RecursiveCharacterTextSplitter.
criar_banco_vetorial.py
Script responsável por gerar embeddings alternativos com HuggingFaceEmbeddings, criar o InMemoryVectorStore e configurar o retriever.
rag_prompt_ollama.py
Script principal da solução final, reunindo carregamento do documento, chunking, embeddings, banco vetorial, retriever, prompt template, modelo local com ChatOllama e execução da cadeia RAG.
requirements.txt
Arquivo com as dependências utilizadas no projeto.
.env.example
Arquivo de exemplo para configuração de variáveis de ambiente, sem expor chaves reais.
.gitignore
Arquivo criado para evitar o versionamento de ambiente virtual, .env, cache e arquivos sensíveis.
Aqui está o link do git: https://github.com/Moquiuti/tecnicas_avancadas_rag