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

[Projeto] Faça como eu fiz: pipeline de RAG

Durante a implementação da pipeline RAG, a etapa de geração dos embeddings com OpenAI apresentou erro de quota insuficiente na API. Para não interromper o desenvolvimento e manter o foco no conceito principal da atividade, adaptei a solução utilizando um modelo open source de embeddings executado localmente no Google Colab, por meio do HuggingFaceEmbeddings.

Com essa alteração, foi possível manter a mesma arquitetura da pipeline: extração dos documentos, divisão em chunks, geração dos embeddings, armazenamento na VectorStore com FAISS e recuperação semântica dos trechos relevantes. A mudança ocorreu apenas no provedor dos embeddings, substituindo o modelo proprietário da OpenAI por um modelo open source.

Essa adaptação também reforça um ponto importante da arquitetura RAG: a escolha entre embeddings pagos e open source pode depender de custo, disponibilidade de cota, sensibilidade dos dados e necessidade de controle sobre o ambiente de execução.

https://github.com/Moquiuti/Arquiteturas-RAG-com-LLMs-embeddings-busca-sem-ntica-e-cria-o-de-agentes-com-LangChain/blob/main/RAG.ipynb

2 respostas

Oi, Leandro! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei bastante da forma como você manteve toda a arquitetura da pipeline RAG funcionando mesmo após o limite de cota da API. Sua decisão de substituir os embeddings da OpenAI por HuggingFaceEmbeddings mostra uma boa compreensão da arquitetura, já que você preservou etapas importantes como chunking, geração de embeddings, armazenamento no FAISS e recuperação semântica. Essa adaptação demonstra pensamento prático ao lidar com limitações de ambiente e custos.

Uma dica interessante para o futuro é utilizar o método similarity_search_with_score do FAISS para recuperar os trechos junto com a pontuação de similaridade. Isso ajuda a entender o quanto cada resultado está relacionado à pergunta.


pergunta = "quais sao os principais pontos do documento"

resultados = vectorstore.similarity_search_with_score(pergunta, k=3)

for doc, score in resultados:
    print("score:", score)
    print(doc.page_content[:200])

Esse código faz uma busca semântica e também mostra a pontuação de similaridade, ajudando a avaliar a qualidade da recuperação dos chunks.

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

Olá Rafaela, tudo bem! obrigado pelo feedback e pelas valiosas dicas.