Optimización de la recuperación de documentos

Retrieval Augmented Generation (RAG) con LangChain

Meri Nova

Machine Learning Engineer

Poniendo la R en RAG...

Documentos recuperados de una base de datos vectorial y devueltos a la aplicación para generar una respuesta.

Retrieval Augmented Generation (RAG) con LangChain

Denso

Codifica fragmentos como un único vector con componentes no nulos

Un espacio vectorial que agrupa términos similares: Large Language Model, AI y Machine Learning.

  • Pros: Captura el significado semántico
  • Contras: Costoso computacionalmente
Retrieval Augmented Generation (RAG) con LangChain

Denso

Codifica fragmentos como un único vector con componentes no nulos

Términos incrustados en un espacio vectorial, con los más similares agrupados más cerca.

  • Pros: Captura el significado semántico
  • Contras: Costoso computacionalmente

Disperso

Codifica usando coincidencia de palabras con componentes mayormente cero

Los documentos que contienen ciertos términos, destacando los que contienen más términos.

  • Pros: Preciso, explicable, maneja palabras raras
  • Contras: Generalización
Retrieval Augmented Generation (RAG) con LangChain

Métodos de recuperación dispersa

TF-IDF: Codifica documentos usando las palabras que los hacen únicos

Los documentos que contienen ciertos términos, destacando los que contienen más términos.

BM25: Evita que palabras muy frecuentes saturen la codificación

Retrieval Augmented Generation (RAG) con LangChain

Recuperación 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) con LangChain

Recuperación 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) con LangChain

BM25 en 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) con LangChain

BM25 en RAG

print(chain.invoke("How can LLM hallucination impact a RAG application?"))
La app RAG puede generar respuestas fuera de tema o inexactas.
Retrieval Augmented Generation (RAG) con LangChain

¡Vamos a practicar!

Retrieval Augmented Generation (RAG) con LangChain

Preparing Video For Download...