Optymalizacja wyszukiwania dokumentów

Retrieval Augmented Generation (RAG) z LangChain

Meri Nova

Machine Learning Engineer

R jak Retrieval w RAG...

Dokumenty pobierane z bazy wektorowej i zwracane do aplikacji w celu wygenerowania odpowiedzi.

Retrieval Augmented Generation (RAG) z LangChain

Gęste

Koduje fragmenty jako jeden wektor z komponentami niezerowymi

Przestrzeń wektorowa z podobnymi terminami zgrupowanymi razem: Large Language Model, AI i Machine Learning.

  • Zalety: Uchwycenie znaczenia semantycznego
  • Wady: Duże wymagania obliczeniowe
Retrieval Augmented Generation (RAG) z LangChain

Gęste

Koduje fragmenty jako jeden wektor z komponentami niezerowymi

Osadzone terminy w przestrzeni wektorowej – im bardziej podobne semantycznie, tym bliżej siebie.

  • Zalety: Uchwycenie znaczenia semantycznego
  • Wady: Duże wymagania obliczeniowe

Rzadkie

Koduje przy użyciu dopasowania słów z przewagą komponentów zerowych

Dokumenty zawierające wystąpienia określonych terminów; wyróżnione dokumenty zawierające ich najwięcej.

  • Zalety: Precyzja, interpretowalność, obsługa rzadkich słów
  • Wady: Ograniczona ogólność
Retrieval Augmented Generation (RAG) z LangChain

Rzadkie metody wyszukiwania

TF-IDF: Koduje dokumenty przy użyciu słów wyróżniających dany dokument

Dokumenty zawierające wystąpienia określonych terminów; wyróżnione dokumenty zawierające ich najwięcej.

BM25: Ogranicza wpływ często występujących słów na kodowanie

Retrieval Augmented Generation (RAG) z LangChain

Wyszukiwanie 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) z LangChain

Wyszukiwanie 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) z LangChain

BM25 w 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) z LangChain

BM25 w 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) z LangChain

Czas na ćwiczenia!

Retrieval Augmented Generation (RAG) z LangChain

Preparing Video For Download...