Dokumentenabruf optimieren

Retrieval Augmented Generation (RAG) mit LangChain

Meri Nova

Machine Learning Engineer

Das R in RAG einbauen …

Dokumente werden aus einer Vektordatenbank abgerufen und zur Antwortgenerierung an die Anwendung zurückgesendet.

Retrieval Augmented Generation (RAG) mit LangChain

Dense

Chunks als einzelnen Vektor mit nicht-null Komponenten encodieren

Ein Vektorraum mit gruppierten ähnlichen Begriffen: Large Language Model, AI und Machine Learning.

  • Vorteile: Erfasst Semantik
  • Nachteile: Rechenintensiv
Retrieval Augmented Generation (RAG) mit LangChain

Dense

Chunks als einzelnen Vektor mit nicht-null Komponenten encodieren

Eingebettete Begriffe in einem Vektorraum, semantisch ähnliche Begriffe liegen näher beieinander.

  • Vorteile: Erfasst Semantik
  • Nachteile: Rechenintensiv

Sparse

Encodierung per Wortabgleich mit überwiegend Null-Komponenten

Die Dokumente mit bestimmten Begriffen; die mit den meisten hervorgehobenen Begriffen sind markiert.

  • Vorteile: Präzise, erklärbar, seltene Wörter
  • Nachteile: Geringe Generalisierbarkeit
Retrieval Augmented Generation (RAG) mit LangChain

Sparse-Retrieval-Methoden

TF-IDF: Encodiert Dokumente über Wörter, die sie einzigartig machen

Die Dokumente mit bestimmten Begriffen; die mit den meisten hervorgehobenen Begriffen sind markiert.

BM25: Dämpft den Einfluss hochfrequenter Wörter auf die Encodierung

Retrieval Augmented Generation (RAG) mit LangChain

BM25-Retrieval

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) mit LangChain

BM25-Retrieval

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) mit 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) mit LangChain

BM25 in RAG

print(chain.invoke("How can LLM hallucination impact a RAG application?"))
Die RAG-App kann Antworten erzeugen, die themenfremd oder ungenau sind.
Retrieval Augmented Generation (RAG) mit LangChain

Lass uns üben!

Retrieval Augmented Generation (RAG) mit LangChain

Preparing Video For Download...