Оптимізація отримання документів

Retrieval Augmented Generation (RAG) з LangChain

Meri Nova

Machine Learning Engineer

Ставимо R у RAG...

Отримання документів із векторної бази та повернення їх у застосунок для формування відповіді.

Retrieval Augmented Generation (RAG) з LangChain

Dense

Кодує фрагменти як один вектор із невідомими нулям компонентами

Векторний простір, де подібні терміни згруповані разом: Large Language Model, AI і Machine Learning.

  • Переваги: Уловлює семантичний зміст
  • Недоліки: Обчислювально витратно
Retrieval Augmented Generation (RAG) з LangChain

Dense

Кодує фрагменти як один вектор із невідомими нулям компонентами

Вбудовані терміни у векторному просторі, де більш семантично подібні терміни розташовані ближче.

  • Переваги: Уловлює семантичний зміст
  • Недоліки: Обчислювально витратно

Sparse

Кодує за допомогою збігу слів з переважно нульовими компонентами

Документи, що містять певні терміни; документи з найбільшою кількістю таких термінів підсвічені.

  • Переваги: Точність, пояснюваність, робота з рідкісними словами
  • Недоліки: Узагальнюваність
Retrieval Augmented Generation (RAG) з LangChain

Методи sparse-отримання

TF-IDF: Кодує документи за словами, що роблять документ унікальним

Документи, що містять певні терміни; документи з найбільшою кількістю таких термінів підсвічені.

BM25: Допомагає уникати насичення кодування височастотними словами

Retrieval Augmented Generation (RAG) з LangChain

Пошук 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) з LangChain

Пошук 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) з LangChain

BM25 у 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) з LangChain

BM25 у RAG

print(chain.invoke("How can LLM hallucination impact a RAG application?"))
Застосунок RAG може генерувати відповіді, що не по темі або неточні.
Retrieval Augmented Generation (RAG) з LangChain

Давайте потренуємось!

Retrieval Augmented Generation (RAG) з LangChain

Preparing Video For Download...