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

1 評(píng)論 2265 瀏覽 14 收藏 17 分鐘

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

1. 什么是 RAG ?

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

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

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

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

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

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

2. RAG 有啥用?

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

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

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

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

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

優(yōu)勢(shì):RAG 能確?;卮鸬?strong>準(zhǔn)確性和時(shí)效性。它可以讓模型的輸出內(nèi)容始終與當(dāng)前情況保持同步。這種能力在需要高頻更新的場(chǎng)景中尤為重要,例如新聞?wù)⒔鹑诜治龌蚣夹g(shù)支持。

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

3. RAG 的整個(gè)工作流程是怎么樣的?

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

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

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

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

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

接下來(lái)展開具體的技術(shù)細(xì)節(jié)和操作步驟:

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

這一階段的核心任務(wù)是構(gòu)建一個(gè)高效的知識(shí)庫(kù),以便后續(xù)能夠快速檢索相關(guān)信息。

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

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

2)分塊(Chunking)

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

3)向量化(Embedding)

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

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

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

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

這一階段是 RAG 的核心應(yīng)用場(chǎng)景,通過(guò)實(shí)時(shí)檢索和生成回答用戶的問(wèn)題。

5)問(wèn)題向量化

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

6)查詢匹配

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

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

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

8)注入 Prompt

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

9)LLM生成答案

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

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

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

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

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

面對(duì)知識(shí)問(wèn)答的結(jié)果未達(dá)到預(yù)期或出現(xiàn)明顯問(wèn)題,排查思路和解決方案:

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

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

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

4.1 排查步驟:逆向排查

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

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

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

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

4.2 解決方案

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

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

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

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

結(jié)語(yǔ)

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

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

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

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

    來(lái)自浙江 回復(fù)