Otimizando a recuperação de documentos

Retrieval Augmented Generation (RAG) com LangChain

Meri Nova

Machine Learning Engineer

Colocando o R no RAG...

Documentos sendo recuperados de um banco de dados vetorial e enviados de volta ao app para gerar uma resposta.

Retrieval Augmented Generation (RAG) com LangChain

Denso

Codifica chunks como um único vetor com componentes não zero

Um espaço vetorial mostrando termos semelhantes agrupados: Large Language Model, AI e Machine Learning.

  • Prós: Captura o significado semântico
  • Contras: Computacionalmente caro
Retrieval Augmented Generation (RAG) com LangChain

Denso

Codifica chunks como um único vetor com componentes não zero

Termos incorporados em um espaço vetorial, com termos mais semelhantes mais próximos.

  • Prós: Captura o significado semântico
  • Contras: Computacionalmente caro

Esparso

Codifica por correspondência de palavras, com componentes majoritariamente zero

Os documentos contendo ocorrências de certos termos, com os documentos com mais termos destacados.

  • Prós: Preciso, explicável, lida bem com palavras raras
  • Contras: Generalização
Retrieval Augmented Generation (RAG) com LangChain

Métodos de recuperação esparsa

TF-IDF: Codifica documentos usando as palavras que tornam o documento único

Os documentos contendo ocorrências de certos termos, com os documentos com mais termos destacados.

BM25: Reduz o efeito de palavras muito frequentes saturarem a codificação

Retrieval Augmented Generation (RAG) com LangChain

Recuperação com BM25

from langchain_community.retrievers import BM25Retriever

chunks = [ "Python was created by Guido van Rossum and released in 1991.", "Python is a popular language for machine learning (ML).", "The PyTorch library is a popular Python library for AI and ML." ]
bm25_retriever = BM25Retriever.from_texts(chunks, k=3)
Retrieval Augmented Generation (RAG) com LangChain

Recuperação com BM25

results = bm25_retriever.invoke("When was Python created?")
print("Most Relevant Document:")
print(results[0].page_content)
Most Relevant Document:
Python was created by Guido van Rossum and released in 1991.
  • Python was created by Guido van Rossum and released in 1991."
  • "Python is a popular language for machine learning (ML)."
  • "The PyTorch library is a popular Python library for AI/ML."
Retrieval Augmented Generation (RAG) com LangChain

BM25 em RAG

retriever = BM25Retriever.from_documents(
    documents=chunks, 
    k=5
)

chain = ({"context": retriever, "question": RunnablePassthrough()} | prompt | llm | StrOutputParser() )
1 https://www.datacamp.com/blog/what-is-retrieval-augmented-generation-rag
Retrieval Augmented Generation (RAG) com LangChain

BM25 em RAG

print(chain.invoke("How can LLM hallucination impact a RAG application?"))
O app RAG pode gerar respostas fora do tópico ou imprecisas.
Retrieval Augmented Generation (RAG) com LangChain

Vamos praticar!

Retrieval Augmented Generation (RAG) com LangChain

Preparing Video For Download...