一、 Retrieval 的本質
Retrieval是什么?
LangChain通過其Retrieval(檢索)組件,簡化了檢索增強生成(RAG)過程中外部數據的檢索與管理,為大型語言模型 (LLM)應用高效地提供了用戶特定的數據。
高效檢索 :快速準確地從大量數據中檢索出相關信息。
靈活集成 :適應不同數據源和數據格式的檢索需求。
可擴展性 :能夠應對不斷增長的數據量和查詢負載。
Retrieval
Many LLM applications require user-specific data that is not part of the model's training set. The primary way of accomplishing this is through Retrieval Augmented Generation (RAG). In this process, external data is retrieved and then passed to the LLM when doing the generation step.
LangChain provides all the building blocks for RAG applications - from simple to complex. This section of the
documentation covers everything related to the retrieval step - e.g. the fetching of the data. Although this sounds simple, it can be subtly complex. This encompasses several key modules.
Retrieval 由幾個部分組成。
Document loaders :負責從各種數據源加載數據,并將其格式化為“文檔”(包含文本和相關元數據)。
Text Splitters :用于對加載的文檔進行轉換,以適應應用程序的需求。
Text embedding models :用于將文本轉換為向量 表示,這使得可以在向量空間中進行語義搜索等操作。
Vector stores :負責存儲嵌入向量,并執行向量搜索。
Retrievers :是一個接口,它根據非結構化查詢返回文檔。
Indexing :索引API 允許您從任何數據源加載并保持文檔與向量存儲的同步。
Retrieval 組成部分
Retrieval能干什么?
Retrieval能夠高效地處理用戶查詢并從多個數據源中檢索相關信息。
LangChain的數據索引是一個將原始數據轉化為可高效檢索格式的過程。
數據提取 :從各類數據源中收集并整理出關鍵信息。
向量化(Embedding) :將文本數據轉換為數值向量 ,以捕獲其語義信息。
創建索引 :使用向量構建高效索引結構,支持快速查詢和檢索。
數據索引-檢索-生成
許多大型語言模型 (LLM)應用需要用戶特定的數據,這些數據并不是模型訓練集的一部分。實現這一點的主要方法是通過檢索增強生成(RAG)。
檢索增強生成(RAG)的工作流程,從用戶的查詢開始,經過向量 數據庫的檢索,到提示填充,最后生成回應。
檢索(Retrieval) :
目的 :從大量文檔或知識庫中檢索與用戶查詢或任務最相關的信息。
方法 :使用信息檢索技術,如倒排索引、向量 搜索(如基于BERT的句向量搜索)或密集向量檢索等,來查找與用戶輸入最相似的文檔或段落。
輸出 :一組與用戶查詢高度相關的文檔或段落。
增強(Augmentation) :
目的 :將檢索到的信息有效地整合到生成過程中,以豐富模型 的輸出。
方法 :可以通過多種方式實現增強,包括簡單的拼接、注意力機制(如交叉注意力)、記憶網絡或更復雜的融合策略。
輸出 :一個結合了原始輸入和檢索到的信息的增強表示,用于后續的生成步驟。
生成(Generation) :
目的 :基于增強后的信息,生成符合用戶意圖和查詢條件的自然語言輸出。
方法 :使用條件語言模型(如Transformer架構中的解碼器)來生成文本。生成過程可以是自回歸的(即逐個詞或逐個標記地生成文本),也可以是其他生成策略。
輸出 :最終生成的文本,它結合了用戶特定的數據和模型 的生成能力。
檢索增強生成 (RAG)的工作流程
二、Retrieval 的原理
Retrieval的工作流程:從指定來源獲取并讀取文檔,經過預處理和向量 化后,將文檔存儲并索引化,最終根據用戶查詢進行高效搜索并返回相關結果。
Retrieval流程包含以下六個核心步驟:
Source(來源)
Load(加載)
關鍵詞:讀取 ,代表從來源中加載并讀取文檔或數據的過程。
Transform(轉換)
關鍵詞:預處理 ,表示對加載的文檔或數據進行清洗、格式化和轉換,以適應后續步驟。
Embed(嵌入)
關鍵詞:向量化 ,代表將文檔或數據轉換為向量 表示,以捕捉其語義信息。
Store(存儲)
關鍵詞:索引化 ,表示將嵌入后的向量存儲在數據庫中,并建立索引以優化檢索性能。
Retrieve(檢索)
關鍵詞:搜索 ,代表根據用戶查詢從存儲的向量數據庫中檢索相關文檔或數據的過程。
Retrieval的工作流程
Retrieval的核心組件:Retrieval的六個核心組件共同協作,實現文檔的高效加載、精確拆分、語義嵌入、向量 存儲、智能檢索及優化索引,為各類應用場景提供強大且靈活的文檔處理與檢索能力。
LangChain文檔檢索和處理組成部分:
一、文檔加載 (Document Loaders)
功能:從多種來源加載文檔。
特性:支持100+加載器,與AirByte、Unstructured等集成。
應用:加載HTML、PDF、代碼等,來源包括私有S3桶、公共網站等。
二、文本拆分 (Text Splitting)
功能:將大文檔拆分為小片段,以便更精確地檢索相關內容。
特性:提供多種拆分算法,優化特定文檔類型(如代碼、Markdown)。
三、文本嵌入模型 (Text Embedding Models)
功能:為文檔創建語義嵌入,以快速找到相似文本。
特性:支持25+嵌入提供商和方法,包括開源和專有API 。
優點:標準接口,方便模型 切換。
四、向量存儲 (Vector Stores)
功能:高效存儲和搜索文檔嵌入。
特性:支持50+向量 存儲解決方案,包括開源和云托管選項。
優點:標準接口,輕松切換存儲方案。
五、檢索器 (Retrievers)
功能:從數據庫中檢索文檔。
特性:支持多種檢索算法,包括語義搜索和高級算法(如父文檔檢索器、自查詢檢索器、集成檢索器)。
應用:提高檢索性能和準確性。
六、索引 (Indexing)
功能:將數據源同步到向量 存儲,避免重復和冗余。
特性:LangChain索引API ,優化存儲和檢索過程。
優點:節省時間和成本,改善搜索結果質量。
三、Retrieval 的應用
LangChain使用RAG技術構建問答 (Q&A) 聊天機器人的介紹和說明,包括其架構、組件以及一些構建和使用這些應用程序的指南。
架構:問答(Q&A)聊天機器人的架構通常包括兩個主要部分:索引和檢索與生成。
一、索引 :
數據加載:首先,需要從各種源加載數據。這些數據可以是文本文件、數據庫、網頁等。加載數據的過程需要使用適當的加載器(如DocumentLoaders),以便將數據以適合后續處理的形式讀入系統。
數據拆分:加載后的數據通常需要被拆分成較小的塊或段落。這是因為大型文檔難以直接搜索,并且可能無法適應模型的有限上下文窗口。拆分可以使用文本拆分器(Text Splitters)完成,它們將文檔分割成更易于管理和搜索的小塊。
存儲與索引:拆分后的數據需要存儲在可以高效檢索的地方。通常,這涉及使用向量存儲(VectorStore)和嵌入模型 (Embeddings)。向量 存儲允許將數據表示為高維空間中的點,而嵌入模型則用于將這些點映射到向量空間中,以便進行相似性搜索和檢索。
檢索與生成
組件 : 問答 (Q&A) 聊天機器人 的關鍵組件包括:
DocumentLoaders :用于從各種源加載數據的組件。
Text Splitters :將大型文檔拆分為較小塊的組件。
VectorStore 和 Embeddings :用于存儲和索引拆分后的數據,并支持相似性搜索和檢索的組件。
Retriever :根據用戶輸入檢索最相關數據塊的組件。
ChatModel / LLM :使用檢索到的數據和用戶問題生成答案的模型 。
構建和使用指南
快速入門 :建議從快速入門指南開始,以了解如何設置和使用問答聊天機器人的基本功能。這通常涉及安裝必要的庫、配置索引和檢索組件以及運行示例代碼。
返回源文檔 :了解如何在生成答案時返回使用的源文檔。這對于提供答案的上下文和驗證答案的準確性非常有用。
流式處理 :學習如何流式傳輸最終答案以及中間步驟。這對于處理大型數據集或需要逐步構建答案的復雜查詢特別有用。
添加聊天歷史 :了解如何將聊天歷史添加到問答應用程序中。這可以提高用戶體驗,允許用戶在對話中引用先前的問題和答案。
每個用戶的檢索 :如果每個用戶都有自己的私有數據,需要了解如何為每個用戶執行獨立的檢索操作。這涉及在索引和檢索過程中考慮用戶身份和權限。
使用代理 :了解如何使用代理來增強問答功能。代理可以提供額外的上下文、執行更復雜的任務或與其他系統進行交互。
使用本地模型 :對于需要更高性能或隱私要求的應用程序,了解如何使用本地模型 進行問答操作。這涉及在本地環境中部署和運行模型,而不是依賴于云服務或外部API 。
本文章轉載微信公眾號@架構師帶你玩轉AI
我們有何不同?
API服務商零注冊
多API并行試用
數據驅動選型,提升決策效率
查看全部API→