AI產(chǎn)品經(jīng)理必修課:RAG(1)

1 評論 2246 瀏覽 12 收藏 17 分鐘

你可能聽過RAG,但你真的知道它如何影響AI產(chǎn)品的設計嗎?從原理到應用,從技術到產(chǎn)品思維,這篇文章將帶你快速掌握RAG的核心邏輯,為你的AI產(chǎn)品打下堅實的認知基礎。

1. 什么是 RAG ?

RAG 的全拼是 Retrieval-Augmented Generation,中文常稱“檢索增強生成”。它是一種把外部知識檢索步驟與大語言模型的生成步驟解耦再重新編排的技術范式。核心思想是:在模型回答用戶問題之前,先從外部可控的知識庫中尋找相關資料,把這些資料與用戶原始問題一起構造成上下文,再讓模型基于“所給材料”進行回答。這樣不僅降低憑空臆造(幻覺)的概率,也讓知識更新與溯源變得更加靈活與透明。

解耦再重新編排是什么意思?

第一,所謂解耦,根本指的是把“知識的獲?。z索)”與“語言的組織輸出(生成)”從一個不可分的、隱含在同一大模型參數(shù)內(nèi)部的過程,拆分為兩個各自可獨立優(yōu)化的模塊。傳統(tǒng)純參數(shù)化大模型回答問題時,問題向量一路向前傳播,最終在解碼端直接生成答案;知識查找、事實關聯(lián)和語言輸出全部混雜在同一巨大的權重空間里,既不可觀察也不可局部替換。RAG 將“找到相關材料”這件事外移:用獨立的文檔切分、向量嵌入、索引結構與相似度/重排算法來完成。這意味著如果知識更新、召回策略或排序算法需要改進,可以單獨迭代,不必動模型主參數(shù)。

第二,被解開的耦合不僅是功能職責的拆分,更關鍵在于時間尺度與演化節(jié)奏的主動分離?,F(xiàn)實里,知識層的變動頻率遠高于模型參數(shù)層:政策條款、價格庫存、內(nèi)部 SOP、故障告警、財務數(shù)據(jù)、版本 Changelog、合規(guī)紅線、熱點資訊,這些可能以小時、甚至分鐘級在變化;而對大模型做一次參數(shù)級訓練 / 微調(diào) / 安全審計 通常是天或周級,且伴隨計算、風險與合規(guī)成本。若二者耦合,你會被迫高頻觸發(fā)“大動作”(再訓練、重新安全評估、重新回歸測試)。不僅昂貴,還會人為放大新數(shù)據(jù)中的偶然噪聲、擴大潛在回歸面。

通過結構化地把知識“外置”到一個可迭代的檢索層,你是在建立兩個不同節(jié)奏的演化軌:快速軌(知識采集→清洗→切分→嵌入→寫入 / 更新索引 / 失效淘汰)與慢速軌(模型核心推理與語言風格參數(shù));二者之間以“上下文注入?yún)f(xié)議”(Prompt 模板 + 片段選擇規(guī)則 + 引用格式)為接口,從而做到“高頻改知識,低頻改模型”。

第三,“重新編排”不是把檢索到的段落粗暴拼接進 Prompt,而是為“問題 + 候選材料”走一條加工流水線(檢索結果收集-相關性打分-篩選-排序與重組-去重與精簡-格式化)。因為原料進入時往往是噪聲多、表達不統(tǒng)一、覆蓋可能殘缺的混合體,輸出時則應成為覆蓋充分、要點高密、沖突已裁決且語義角色清晰的結構化上下文。

2. RAG 有啥用?

雖然大型語言模型功能強大,但它也存在一些固有的技術問題,比如容易產(chǎn)生“幻覺”(生成不真實或不準確的信息),以及可能犯事實性錯誤。

這些問題和模型的底層邏輯有關——LLM 是通過大量數(shù)據(jù)訓練后,基于概率最高的選項生成答案。這種生成機制使得模型存在以下四個問題:

  1. 信息缺乏深度:公開數(shù)據(jù)庫中的內(nèi)容往往缺乏真正有價值的深度信息,大語言模型從中學到的知識通常比較淺顯,因此生成的答案往往只能停留在表面,缺乏深入的分析和專業(yè)性。
  2. 信息存在誤差:如果模型在訓練過程中接觸到不準確或有偏差的數(shù)據(jù),這些錯誤信息會直接影響模型生成答案的質(zhì)量,導致輸出結果出現(xiàn)偏差甚至誤導。
  3. 生成基于概率:大語言模型的答案是基于概率分布生成的。即使是“1加1等于幾”這樣看似簡單的問題,模型也是通過訓練時發(fā)現(xiàn)“1+1后面出現(xiàn)2”的概率最高才得出答案。因此,對于像“1+1=2”這樣的基礎事實,模型通常不會出錯,但對于復雜或開放性問題,模型無法保證答案始終正確。
  4. 無法實時更新:大語言模型無法實時更新知識庫。以ChatGPT3.5為例,它的訓練數(shù)據(jù)僅覆蓋到2021年9月之前的信息,因此對于之后發(fā)生的事件或最新的知識,模型無法提供準確的答案。

RAG 的核心思路是通過從外部知識庫中檢索與用戶查詢相關的信息,將這些信息作為參考輸入到LLM中,幫助模型生成更有依據(jù)、更貼近實際的回答。

這種技術的最大價值在于擴展了LLM的知識范圍。相比于單純依賴模型內(nèi)部的預訓練知識,RAG讓模型能夠動態(tài)訪問外部數(shù)據(jù),包括專屬知識庫實時更新的信息。這意味著,模型不僅可以回答基于通用知識的問題,還能處理那些需要專業(yè)領域知識或最新動態(tài)的查詢。比如,當面對一個涉及最新政策、市場動態(tài)或行業(yè)趨勢的問題時,RAG可以檢索到相關的最新資料并輔助生成更精準的回答。

優(yōu)勢:RAG 能確保回答的準確性和時效性。它可以讓模型的輸出內(nèi)容始終與當前情況保持同步。這種能力在需要高頻更新的場景中尤為重要,例如新聞摘要、金融分析或技術支持。

總的來說,RAG不僅提升了LLM的內(nèi)容質(zhì)量,還解決了模型知識固化的問題,為實際應用場景提供了更靈活、更可靠的解決方案。在實際業(yè)務中,合理利用這項技術,可以顯著提高用戶體驗和信息服務的質(zhì)量。

3. RAG 的整個工作流程是怎么樣的?

RAG與傳統(tǒng)語言模型的最大區(qū)別就在于, RAG通過訪問外部知識增強上下文意識,提供更準確詳實的響應,而傳統(tǒng)語言模型(GPT-4)則無法從外部源檢索信息。RAG 的完整流程可以分為兩個主要階段:數(shù)據(jù)準備階段和檢索生成階段。

1、數(shù)據(jù)準備階段(離線):

(A)數(shù)據(jù)提取–> (B)分塊(Chunking)–> (C)向量化(embedding)–> (D)數(shù)據(jù)入庫

2、檢索生成階段(在線):

(1)問題向量化–> (2)根據(jù)問題查詢匹配數(shù)據(jù)–> (3)獲取索引數(shù)據(jù) –> (4)將數(shù)據(jù)注入Prompt–> (5)LLM生成答案

接下來展開具體的技術細節(jié)和操作步驟:

1. 數(shù)據(jù)準備階段(離線處理)

這一階段的核心任務是構建一個高效的知識庫,以便后續(xù)能夠快速檢索相關信息。

1)數(shù)據(jù)提取

首先,需要從各種數(shù)據(jù)源中獲取原始內(nèi)容。數(shù)據(jù)源可以是文檔、網(wǎng)頁、數(shù)據(jù)庫或其他結構化、非結構化的數(shù)據(jù)。提取過程可能需要進行格式轉換、去重以及基礎清理,確保內(nèi)容質(zhì)量和一致性。

2)分塊(Chunking)

提取后的數(shù)據(jù)通常較為龐大且不均勻,為了提高檢索效率,需將數(shù)據(jù)劃分為小塊。分塊的粒度需要根據(jù)實際場景設計,既要保證每塊數(shù)據(jù)足夠完整提供上下文,又不能過大導致向量表示不精準。

3)向量化(Embedding)

每個分塊的數(shù)據(jù)通過預訓練的嵌入模型(例如 OpenAI 的 Embedding API 或其他語義向量模型)轉換為高維向量。這些向量能夠捕捉文本的語義信息,為后續(xù)的相似度匹配提供基礎。

4)數(shù)據(jù)入庫

向量化后的數(shù)據(jù)需要存儲到一個支持向量檢索的數(shù)據(jù)庫中,例如 Pinecone、Weaviate 或 Milvus。這類數(shù)據(jù)庫支持高效的向量查詢,同時可以存儲原始數(shù)據(jù)塊作為檢索結果的一部分。

2. 檢索生成階段(在線處理)

這一階段是 RAG 的核心應用場景,通過實時檢索和生成回答用戶的問題。

5)問題向量化

用戶提出問題后,首先將問題通過嵌入模型轉化為語義向量。這個過程與數(shù)據(jù)分塊的向量化類似,目的是將問題轉化為可用于向量匹配的形式。

6)查詢匹配

將問題的向量輸入到向量數(shù)據(jù)庫中,利用相似度算法(例如余弦相似度或歐幾里得距離)檢索出與問題相關性最高的數(shù)據(jù)塊。這一步?jīng)Q定了檢索結果的質(zhì)量,因此選擇合適的向量搜索算法至關重要。

7)獲取索引數(shù)據(jù)

檢索到的數(shù)據(jù)塊通常包含原始內(nèi)容及其相關元信息(如來源、時間戳等)。這些內(nèi)容會被進一步處理,用于生成最終答案。

8)注入 Prompt

將檢索到的數(shù)據(jù)塊與用戶問題整合,形成一個完整的 Prompt 輸入給大語言模型(LLM)。Prompt 的設計非常關鍵,需要確保數(shù)據(jù)塊能夠自然融入上下文,同時避免信息冗余或沖突。

9)LLM生成答案

最后,大語言模型根據(jù) Prompt 生成回答。這一過程結合了模型本身的語言理解能力與檢索到的信息,能夠提供準確且具有上下文感的答案。

★ 4. RAG的數(shù)據(jù)源從哪里來,出現(xiàn)錯誤信息,結果不合預期怎么辦?

在RAG系統(tǒng)中,可以使用各種類型的數(shù)據(jù)源,包括:

  • 文檔集合:RAG系統(tǒng)通常使用文本文檔的集合,如書籍、文章和網(wǎng)站,作為數(shù)據(jù)源,這些集合為生成模型提供了豐富的信息來源,可以檢索和利用。
  • 知識庫:RAG系統(tǒng)也可以使用包含事實信息的結構化數(shù)據(jù)庫,如維基百科或百科全書,作為檢索特定和事實信息的數(shù)據(jù)源。
  • 網(wǎng)絡資源:RAG系統(tǒng)也可以通過訪問在線數(shù)據(jù)庫、網(wǎng)站或搜索引擎結果從網(wǎng)絡中檢索信息,以收集生成響應的相關數(shù)據(jù)。

RAG中容易產(chǎn)出存在偏見或錯誤的信息。設計者可以配置檢索組件,在從文檔集合或知識庫檢索信息時優(yōu)先考慮可信和權威的來源。同時,他們可以訓練生成模型在生成響應之前對檢索到的信息進行交叉引用和驗證,從而減少偏見或不準確信息的傳播。通過優(yōu)先使用權威數(shù)據(jù)和交叉引用的機制,提供更可靠和準確的響應。

面對知識問答的結果未達到預期或出現(xiàn)明顯問題,排查思路和解決方案:

(1)問題排查的思路:先觀察現(xiàn)象再進行定位,最后排查出原因。

(2)知識庫的整個問答體系鏈路較長,其中包含幾個主要環(huán)節(jié),首先是解析,其次是改寫,也就是對輸入進行解析后進行改寫;接著是召回、排序,最后是生成。所以在每個環(huán)節(jié)都需要進行一定的定位, 這是一個正向的鏈路流程 。

(3)排查問題的時候需要“從后往前”進行:按照以下逆向步驟一層一層往前排查,確定是哪個環(huán)節(jié)出了問題,然后進行解決。

4.1 排查步驟:逆向排查

a)先查看生成環(huán)節(jié)的問題排查:先看Prompt,檢查其拼接結果中是否召回了正確答案,答案是否有缺失。如果答案沒有缺失但答非所問,那就說明是大模型本身在生成環(huán)節(jié)出現(xiàn)問題。

b)如果在Prompt拼接的召回片段中沒有答案,那就說明需要再往前看排序環(huán)節(jié)是否有問題,答案是否沒有排在靠前位置。

c)如果排序正常,那就繼續(xù)往前查看是否有召回,也許根本就沒有召回。

這樣一層一層往前排查,確定是哪個環(huán)節(jié)出了問題,然后進行解決。

4.2 解決方案

(1)業(yè)務策略上制定很多方案:比如進行文檔的增刪改查,篩選出一些優(yōu)質(zhì)的對話示例讓大模型學習,區(qū)分不同的Agent來處理不同的業(yè)務,使單個Agent能力更強、更聚焦

(2)在業(yè)務上進行分層,區(qū)分不同渠道并綁定不同知識庫,使知識更純粹而不會相互纏繞等。 ?

(3)工程鏈路優(yōu)化:如文檔解析、檢索召回優(yōu)化、prompt優(yōu)化

(4)算法調(diào)優(yōu):改寫策略、必要時微調(diào)

結語

RAG 的流程通過離線構建知識庫與在線實時檢索生成答案相結合,實現(xiàn)了知識增強型問答系統(tǒng)。離線階段注重數(shù)據(jù)質(zhì)量和結構化處理,而在線階段則強調(diào)檢索效率與生成質(zhì)量,兩者缺一不可。在實際應用中,如何平衡檢索速度、嵌入模型性能和數(shù)據(jù)庫容量,是技術落地時需要重點考慮的問題。

本文由 @黃曉澤 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 配合AI食用更佳

    來自浙江 回復