Optimalizace načítání dokumentů

Retrieval Augmented Generation (RAG) with LangChain

Meri Nova

Machine Learning Engineer

R v RAG...

Dokumenty načítané z vektorové databáze a odesílané zpět do aplikace pro generování odpovědi.

Retrieval Augmented Generation (RAG) with LangChain

Husté

Kóduje bloky jako jediný vektor s nenulovými složkami

Vektorový prostor zobrazující sémanticky podobné pojmy pohromadě: Large Language Model, AI a Machine Learning.

  • Výhody: Zachycení sémantického významu
  • Nevýhody: Vysoká výpočetní náročnost
Retrieval Augmented Generation (RAG) with LangChain

Husté

Kóduje bloky jako jediný vektor s nenulovými složkami

Zakódované pojmy ve vektorovém prostoru; sémanticky podobné pojmy jsou si blíže.

  • Výhody: Zachycení sémantického významu
  • Nevýhody: Vysoká výpočetní náročnost

Řídké

Kóduje pomocí shody slov s převážně nulovými složkami

Dokumenty obsahující výskyty konkrétních pojmů; zvýrazněny jsou dokumenty s nejvíce shodami.

  • Výhody: Přesnost, vysvětlitelnost, zpracování vzácných slov
  • Nevýhody: Zobecnitelnost
Retrieval Augmented Generation (RAG) with LangChain

Metody řídkého vyhledávání

TF-IDF: Kóduje dokumenty pomocí slov, která je odlišují

Dokumenty obsahující výskyty konkrétních pojmů; zvýrazněny jsou dokumenty s nejvíce shodami.

BM25: Omezuje vliv vysoce frekventovaných slov na kódování

Retrieval Augmented Generation (RAG) with LangChain

Vyhledávání 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) with LangChain

Vyhledávání 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) with LangChain

BM25 v 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) with LangChain

BM25 v 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) with LangChain

Pojďme si procvičit!

Retrieval Augmented Generation (RAG) with LangChain

Preparing Video For Download...