Ottimizzare il recupero dei documenti

Retrieval Augmented Generation (RAG) con LangChain

Meri Nova

Machine Learning Engineer

Mettere la R in RAG...

Documenti recuperati da un database vettoriale e inviati all'applicazione per generare una risposta.

Retrieval Augmented Generation (RAG) con LangChain

Denso

Codifica i chunk come un unico vettore con componenti non zero

Uno spazio vettoriale che mostra termini simili raggruppati: Large Language Model, AI e Machine Learning.

  • Pro: Cattura il significato semantico
  • Contro: Computazionalmente costoso
Retrieval Augmented Generation (RAG) con LangChain

Denso

Codifica i chunk come un unico vettore con componenti non zero

Termini incorporati in uno spazio vettoriale, con termini più simili semanticamente più vicini tra loro.

  • Pro: Cattura il significato semantico
  • Contro: Computazionalmente costoso

Sparso

Codifica usando il match delle parole con componenti per lo più zero

I documenti che contengono determinati termini, con evidenza dei documenti che ne contengono di più.

  • Pro: Preciso, spiegabile, gestisce parole rare
  • Contro: Generalizzabilità
Retrieval Augmented Generation (RAG) con LangChain

Metodi di retrieval sparso

TF-IDF: Codifica i documenti usando le parole che li rendono unici

I documenti che contengono determinati termini, con evidenza dei documenti che ne contengono di più.

BM25: Riduce l'impatto delle parole ad alta frequenza che saturano la codifica

Retrieval Augmented Generation (RAG) con LangChain

Recupero con 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

Recupero con 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 in 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 in RAG

print(chain.invoke("How can LLM hallucination impact a RAG application?"))
L'applicazione RAG può generare risposte fuori tema o inaccurate.
Retrieval Augmented Generation (RAG) con LangChain

Esercitiamoci!

Retrieval Augmented Generation (RAG) con LangChain

Preparing Video For Download...