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

Retrieval Augmented Generation (RAG) с LangChain

Meri Nova

Machine Learning Engineer

R в аббревиатуре RAG...

Документы, извлекаемые из векторной базы данных и передаваемые в приложение для генерации ответа.

Retrieval Augmented Generation (RAG) с LangChain

Плотный

Кодирует фрагменты в виде одного вектора с ненулевыми компонентами

Векторное пространство, в котором схожие термины сгруппированы вместе: Large Language Model, AI и Machine Learning.

  • Плюсы: учитывает семантику
  • Минусы: высокие вычислительные затраты
Retrieval Augmented Generation (RAG) с LangChain

Плотный

Кодирует фрагменты в виде одного вектора с ненулевыми компонентами

Термины в векторном пространстве: семантически близкие термины расположены рядом.

  • Плюсы: учитывает семантику
  • Минусы: высокие вычислительные затраты

Разреженный

Кодирует данные через совпадение слов, большинство компонентов нулевые

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

  • Плюсы: точность, интерпретируемость, обработка редких слов
  • Минусы: слабая обобщаемость
Retrieval Augmented Generation (RAG) с LangChain

Методы разреженного поиска

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?"))
The RAG application may generate responses that are off-topic or inaccurate.
Retrieval Augmented Generation (RAG) с LangChain

Давайте потренируемся!

Retrieval Augmented Generation (RAG) с LangChain

Preparing Video For Download...