一、Retrieval的本質(zhì)

Retrieval是什么?

LangChain通過(guò)其Retrieval(檢索)組件,簡(jiǎn)化了檢索增強(qiáng)生成(RAG)過(guò)程中外部數(shù)據(jù)的檢索與管理,為大型語(yǔ)言模型(LLM)應(yīng)用高效地提供了用戶(hù)特定的數(shù)據(jù)。

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由幾個(gè)部分組成。

Retrieval 組成部分

Retrieval能干什么?

Retrieval能夠高效地處理用戶(hù)查詢(xún)并從多個(gè)數(shù)據(jù)源中檢索相關(guān)信息。

LangChain的數(shù)據(jù)索引是一個(gè)將原始數(shù)據(jù)轉(zhuǎn)化為可高效檢索格式的過(guò)程。

數(shù)據(jù)索引-檢索-生成

許多大型語(yǔ)言模型(LLM)應(yīng)用需要用戶(hù)特定的數(shù)據(jù),這些數(shù)據(jù)并不是模型訓(xùn)練集的一部分。實(shí)現(xiàn)這一點(diǎn)的主要方法是通過(guò)檢索增強(qiáng)生成(RAG)。

檢索增強(qiáng)生成(RAG)的工作流程,從用戶(hù)的查詢(xún)開(kāi)始,經(jīng)過(guò)向量數(shù)據(jù)庫(kù)的檢索,到提示填充,最后生成回應(yīng)。

  1. 檢索(Retrieval):
  2. 增強(qiáng)(Augmentation):
  3. 生成(Generation):

檢索增強(qiáng)生成(RAG)的工作流程

二、Retrieval的原理

Retrieval的工作流程:從指定來(lái)源獲取并讀取文檔,經(jīng)過(guò)預(yù)處理和向量化后,將文檔存儲(chǔ)并索引化,最終根據(jù)用戶(hù)查詢(xún)進(jìn)行高效搜索并返回相關(guān)結(jié)果。

Retrieval流程包含以下六個(gè)核心步驟:

Retrieval的工作流程

Retrieval的核心組件:Retrieval的六個(gè)核心組件共同協(xié)作,實(shí)現(xiàn)文檔的高效加載、精確拆分、語(yǔ)義嵌入、向量存儲(chǔ)、智能檢索及優(yōu)化索引,為各類(lèi)應(yīng)用場(chǎng)景提供強(qiáng)大且靈活的文檔處理與檢索能力。

LangChain文檔檢索和處理組成部分:

一、文檔加載 (Document Loaders)

二、文本拆分 (Text Splitting)

三、文本嵌入模型 (Text Embedding Models)

四、向量存儲(chǔ) (Vector Stores)

五、檢索器 (Retrievers)

六、索引 (Indexing)

三、Retrieval的應(yīng)用

LangChain使用RAG技術(shù)構(gòu)建問(wèn)答(Q&A)聊天機(jī)器人的介紹和說(shuō)明,包括其架構(gòu)、組件以及一些構(gòu)建和使用這些應(yīng)用程序的指南。

架構(gòu):?jiǎn)柎穑≦&A)聊天機(jī)器人的架構(gòu)通常包括兩個(gè)主要部分:索引和檢索與生成。

一、索引

數(shù)據(jù)加載:首先,需要從各種源加載數(shù)據(jù)。這些數(shù)據(jù)可以是文本文件、數(shù)據(jù)庫(kù)、網(wǎng)頁(yè)等。加載數(shù)據(jù)的過(guò)程需要使用適當(dāng)?shù)募虞d器(如DocumentLoaders),以便將數(shù)據(jù)以適合后續(xù)處理的形式讀入系統(tǒng)。

數(shù)據(jù)拆分:加載后的數(shù)據(jù)通常需要被拆分成較小的塊或段落。這是因?yàn)榇笮臀臋n難以直接搜索,并且可能無(wú)法適應(yīng)模型的有限上下文窗口。拆分可以使用文本拆分器(Text Splitters)完成,它們將文檔分割成更易于管理和搜索的小塊。

存儲(chǔ)與索引:拆分后的數(shù)據(jù)需要存儲(chǔ)在可以高效檢索的地方。通常,這涉及使用向量存儲(chǔ)(VectorStore)和嵌入模型(Embeddings)。向量存儲(chǔ)允許將數(shù)據(jù)表示為高維空間中的點(diǎn),而嵌入模型則用于將這些點(diǎn)映射到向量空間中,以便進(jìn)行相似性搜索和檢索。

檢索與生成

組件問(wèn)答(Q&A)聊天機(jī)器人的關(guān)鍵組件包括:

  1. DocumentLoaders:用于從各種源加載數(shù)據(jù)的組件。
  2. Text Splitters:將大型文檔拆分為較小塊的組件。
  3. VectorStore 和 Embeddings:用于存儲(chǔ)和索引拆分后的數(shù)據(jù),并支持相似性搜索和檢索的組件。
  4. Retriever:根據(jù)用戶(hù)輸入檢索最相關(guān)數(shù)據(jù)塊的組件。
  5. ChatModel / LLM:使用檢索到的數(shù)據(jù)和用戶(hù)問(wèn)題生成答案的模型

構(gòu)建和使用指南

  1. 快速入門(mén):建議從快速入門(mén)指南開(kāi)始,以了解如何設(shè)置和使用問(wèn)答聊天機(jī)器人的基本功能。這通常涉及安裝必要的庫(kù)、配置索引和檢索組件以及運(yùn)行示例代碼。
  2. 返回源文檔:了解如何在生成答案時(shí)返回使用的源文檔。這對(duì)于提供答案的上下文和驗(yàn)證答案的準(zhǔn)確性非常有用。
  3. 流式處理:學(xué)習(xí)如何流式傳輸最終答案以及中間步驟。這對(duì)于處理大型數(shù)據(jù)集或需要逐步構(gòu)建答案的復(fù)雜查詢(xún)特別有用。
  4. 添加聊天歷史:了解如何將聊天歷史添加到問(wèn)答應(yīng)用程序中。這可以提高用戶(hù)體驗(yàn),允許用戶(hù)在對(duì)話(huà)中引用先前的問(wèn)題和答案。
  5. 每個(gè)用戶(hù)的檢索:如果每個(gè)用戶(hù)都有自己的私有數(shù)據(jù),需要了解如何為每個(gè)用戶(hù)執(zhí)行獨(dú)立的檢索操作。這涉及在索引和檢索過(guò)程中考慮用戶(hù)身份和權(quán)限。
  6. 使用代理:了解如何使用代理來(lái)增強(qiáng)問(wèn)答功能。代理可以提供額外的上下文、執(zhí)行更復(fù)雜的任務(wù)或與其他系統(tǒng)進(jìn)行交互。
  7. 使用本地模型:對(duì)于需要更高性能或隱私要求的應(yīng)用程序,了解如何使用本地模型進(jìn)行問(wèn)答操作。這涉及在本地環(huán)境中部署和運(yùn)行模型,而不是依賴(lài)于云服務(wù)或外部API

本文章轉(zhuǎn)載微信公眾號(hào)@架構(gòu)師帶你玩轉(zhuǎn)AI

上一篇:

一文徹底搞懂機(jī)器學(xué)習(xí) - 基礎(chǔ)知識(shí)

下一篇:

大模型開(kāi)發(fā) - 一文搞懂 LangChain(四):Agents
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門(mén)場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)