最佳化文件擷取

使用 LangChain 的 Retrieval Augmented Generation(RAG)

Meri Nova

Machine Learning Engineer

把 R 放進 RAG…

從向量資料庫擷取文件並傳回應用程式以產生回應。

使用 LangChain 的 Retrieval Augmented Generation(RAG)

稠密

將片段編碼為具有非零成分的單一向量

向量空間中相似術語被分組在一起:Large Language Model、AI、Machine Learning。

  • 優點:捕捉語意
  • 缺點:計算成本高
使用 LangChain 的 Retrieval Augmented Generation(RAG)

稠密

將片段編碼為具有非零成分的單一向量

在向量空間中的嵌入術語,更相近的語意彼此更接近。

  • 優點:捕捉語意
  • 缺點:計算成本高

稀疏

文字比對編碼,多數成分為

包含特定術語實例的文件,其中包含最多術語的文件被標示。

  • 優點:精確、可解釋、能處理罕見詞
  • 缺點:泛化能力
使用 LangChain 的 Retrieval Augmented Generation(RAG)

稀疏擷取方法

TF-IDF:用能凸顯文件獨特性的詞來編碼

包含特定術語實例的文件,其中包含最多術語的文件被標示。

BM25:減緩高頻詞造成的編碼飽和

使用 LangChain 的 Retrieval Augmented Generation(RAG)

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)
使用 LangChain 的 Retrieval Augmented Generation(RAG)

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."
使用 LangChain 的 Retrieval Augmented Generation(RAG)

RAG 中的 BM25

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
使用 LangChain 的 Retrieval Augmented Generation(RAG)

RAG 中的 BM25

print(chain.invoke("How can LLM hallucination impact a RAG application?"))
The RAG application may generate responses that are off-topic or inaccurate.
使用 LangChain 的 Retrieval Augmented Generation(RAG)

一起來練習吧!

使用 LangChain 的 Retrieval Augmented Generation(RAG)

Preparing Video For Download...