Skip to content

Retrieval

許多 LLM 應用程式需要特定的使用者(user-specific)的數據,這些數據不屬於模型訓練集的一部分。實現這一目標的主要方法是透過 Retrieval Augmented Generation (RAG)。在此過程中,將檢索外部數據,然後在執行生成步驟時將其傳遞給 LLM。

LangChain 提供了 RAG 應用程式的所有建置模組。Retrieval 文件涵蓋了與檢索步驟相關的所有內容 - 例如數據的獲取。雖然這聽起來很簡單,但實際上可能非常複雜。這包含幾個關鍵模塊。

Document 載入器

從許多不同的來源載入文件。 LangChain 提供 100 多種不同的文件載入器,並與該領域的其他主要服務提供者(例如 AirByte 和 Unstructed)整合。Langchain 也提供從所有類型的位置 (private s3 儲存桶、公用網站) 來載入相關類型的文件 (HTML、PDF、程式碼) 的整合模組。

Document 轉換器

檢索的關鍵部分是僅取得文件的相關文本資料。這涉及幾個轉換步驟,以便最好地準備文件以供檢索。這裡的主要任務之一是將大文檔分割(或分塊)為更小的區塊。

LangChain 提供了幾種不同的演算法來執行此操作,以及針對特定文件類型(程式碼、Markdown 等)最佳化的邏輯。

Embedding 模型

檢索的另一個關鍵部分是為文件建立詞嵌入(embeddings)。詞嵌入捕獲文字的語義,使您能夠快速有效地找到其他相似的文字片段。 LangChain 提供與超過 25 種不同詞嵌入服務提供者和方法的集成,從開源到專有 API,讓您可以選擇最適合您需求的一個。 LangChain提供了標準的接口,讓您可以輕鬆地在模型之間進行切換。

Vector 存儲

隨著嵌入(embeddings)的興起,需要資料庫來支援這些嵌入的高效儲存和搜尋。 LangChain 提供與 50 多種不同向量儲存的集成,從開源本地向量儲存到雲端託管專有向量存儲,讓您可以選擇最適合您需求的一個。 LangChain 公開了一個標準接口,讓您可以輕鬆地在向量儲存之間進行交換。

Retriever 語意搜尋

一旦資料進入 Vector 資料庫,您仍然需要檢索它。 LangChain 支援多種不同的檢索演算法,是我們增加最大價值的地方之一。我們支援易於上手的基本方法 - 即簡單語義搜尋。然而,我們也在此基礎上添加了一系列演算法以提高效能。這些包括:

  • Parent Document Retriever: 這允許您為每個父文檔建立多個嵌入,從而允許您查找較小的區塊但返回更大的上下文(larger context)。

  • Self Query Retriever: 使用者問題通常包含對某些內容的引用,這些內容不僅是語義的,而且表達了一些可以最好地表示為元資料過濾器的邏輯。自查詢可讓您從查詢中存在的其他元資料篩選器解析出查詢的語意部分。

  • Ensemble Retriever: 有時您可能想要從多個不同的來源檢索文檔,或使用多種不同的演算法。整合檢索器可以讓您輕鬆地做到這一點。

  • 其它...