Optimiser la recherche de documents

Retrieval Augmented Generation (RAG) avec LangChain

Meri Nova

Machine Learning Engineer

Mettre le R dans RAG…

Documents extraits d'une base de vecteurs et renvoyés à l'application pour générer une réponse.

Retrieval Augmented Generation (RAG) avec LangChain

Dense

Encoder des segments en un seul vecteur avec des composantes non nulles

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

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

Dense

Encoder des segments 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 : saisit le 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 mise en évidence de ceux qui en contiennent le plus.

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

Méthodes sparse

TF-IDF : encode les documents à partir des mots qui les rendent uniques

Les documents contenant certaines occurrences de termes, avec mise en évidence de ceux qui en contiennent le plus.

BM25 : atténue l'effet de saturation causé par les 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 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 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) avec LangChain

Passons à la pratique !

Retrieval Augmented Generation (RAG) avec LangChain

Preparing Video For Download...