Optimiser la recherche de documents

Retrieval Augmented Generation (RAG) avec LangChain

Meri Nova

Machine Learning Engineer

Mettre le R dans RAG…

Des documents sont extraits d’une base vectorielle et renvoyés à l’application pour générer une réponse.

Retrieval Augmented Generation (RAG) avec LangChain

Dense

Encoder les chunks en un seul vecteur avec des composantes non nulles

Un espace vectoriel montrant des termes similaires groupés : Large Language Model, IA et Machine Learning.

  • Avantages : sens sémantique capturé
  • Inconvénients : coûteux en calcul
Retrieval Augmented Generation (RAG) avec LangChain

Dense

_Encoder les chunks en un seul vecteur avec des composantes non nulles

Termes intégrés dans un espace vectoriel, où les termes plus proches sont plus similaires sémantiquement.

  • Avantages : capture du sens sémantique
  • Inconvénients : coûteux en calcul

Sparse

Encoder par appariement de mots, avec des composantes surtout nulles

Les documents contenant certaines occurrences de termes, avec les documents contenant le plus de termes mis en évidence.

  • Avantages : précis, explicable, gère les mots rares
  • Inconvénients : faible généralisation
Retrieval Augmented Generation (RAG) avec LangChain

Méthodes de recherche clairsemée

TF-IDF : encode les documents via les mots qui les rendent uniques

Les documents contenant certaines occurrences de termes, avec les documents contenant le plus de termes mis en évidence.

BM25 : atténue la saturation due aux mots très fréquents

Retrieval Augmented Generation (RAG) avec LangChain

Recherche 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) avec LangChain

Recherche 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) avec LangChain

BM25 dans le 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) avec LangChain

BM25 dans le RAG

print(chain.invoke("How can LLM hallucination impact a RAG application?"))
L’application RAG peut produire des réponses hors sujet ou inexactes.
Retrieval Augmented Generation (RAG) avec LangChain

Passons à la pratique !

Retrieval Augmented Generation (RAG) avec LangChain

Preparing Video For Download...