Optimizarea recuperării documentelor

Retrieval Augmented Generation (RAG) cu LangChain

Meri Nova

Machine Learning Engineer

R-ul din RAG...

Documente recuperate dintr-o bază de date vectorială și trimise aplicației pentru generarea unui răspuns.

Retrieval Augmented Generation (RAG) cu LangChain

Dens

Codifică fragmentele ca un singur vector cu componente nenule

Spațiu vectorial cu termeni similari grupați împreună: Large Language Model, AI și Machine Learning.

  • Avantaje: Captează sensul semantic
  • Dezavantaje: Costisitor computațional
Retrieval Augmented Generation (RAG) cu LangChain

Dens

Codifică fragmentele ca un singur vector cu componente nenule

Termeni integrați într-un spațiu vectorial, cu termeni mai similari grupați mai aproape.

  • Avantaje: Captează sensul semantic
  • Dezavantaje: Costisitor computațional

Rar

Codifică prin potrivire de cuvinte cu preponderent componente zero

Documentele care conțin instanțe ale unor termeni specifici, cu documentele ce conțin cei mai mulți termeni evidențiate.

  • Avantaje: Precizie, explicabilitate, gestionarea cuvintelor rare
  • Dezavantaje: Generalizabilitate
Retrieval Augmented Generation (RAG) cu LangChain

Metode de recuperare rară

TF-IDF: Codifică documentele folosind cuvintele care le fac unice

Documentele care conțin instanțe ale unor termeni specifici, cu documentele ce conțin cei mai mulți termeni evidențiate.

BM25: Reduce saturarea codificării cauzată de cuvintele cu frecvență ridicată

Retrieval Augmented Generation (RAG) cu LangChain

Recuperare 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) cu LangChain

Recuperare 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) cu LangChain

BM25 în 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) cu LangChain

BM25 în RAG

print(chain.invoke("How can LLM hallucination impact a RAG application?"))
The RAG application may generate responses that are off-topic or inaccurate.
Retrieval Augmented Generation (RAG) cu LangChain

Să exersăm!

Retrieval Augmented Generation (RAG) cu LangChain

Preparing Video For Download...