別再只知道 ChatGPT!RAG 才是企業(yè)落地 AI 的 “剛需神器”,3 分鐘搞懂核心邏輯

0 評(píng)論 1167 瀏覽 1 收藏 8 分鐘

ChatGPT很強(qiáng),但它不是萬(wàn)能。這篇文章用通俗語(yǔ)言講清楚:RAG到底是什么、為什么它才是企業(yè)真正需要的AI技術(shù),適合每一個(gè)想搞懂AI落地邏輯的人看看。

RAG(Retrieval-Augmented Generation,檢索增強(qiáng)生成)

我們來(lái)詳細(xì)拆解一下 RAG (檢索增強(qiáng)生成) 的工作流程。這是一個(gè)將信息檢索(IR) 與大語(yǔ)言模型(LLM) 的強(qiáng)大生成能力相結(jié)合的過(guò)程。

核心思想是:不要讓LLM憑空想象,而是讓它基于提供的“參考資料”來(lái)回答問(wèn)題。

整個(gè)工作流程可以清晰地劃分為兩個(gè)主要階段:索引(Indexing) 和查詢(Retrieval & Generation)。下圖展示了這一過(guò)程的完整藍(lán)圖:

第一階段:索引(Indexing) – “準(zhǔn)備知識(shí)庫(kù)”

這個(gè)階段是離線的,目的是將原始知識(shí)庫(kù)處理成易于檢索的格式。

1)加載(Loading)

輸入:原始文檔(PDF、Word、HTML、Markdown、數(shù)據(jù)庫(kù)等)。

過(guò)程:使用文檔加載器讀取文件內(nèi)容,并將其轉(zhuǎn)換為純文本格式。

輸出:原始文本數(shù)據(jù)。

2)分割(Splitting)

輸入:上一步得到的原始文本。

過(guò)程:使用文本分割器將長(zhǎng)文本切分成更小的、有重疊的“塊”(Chunks)。這是因?yàn)椋?/p>

  • LLM有上下文長(zhǎng)度限制,無(wú)法處理過(guò)長(zhǎng)文本。
  • 小塊文本更易于精準(zhǔn)檢索,避免返回包含大量無(wú)關(guān)信息的大文檔。

輸出:多個(gè)文本塊(Text chunks)。

3)向量化(Embedding)

輸入:文本塊。

過(guò)程:使用嵌入模型(Embedding Model) 將每個(gè)文本塊轉(zhuǎn)換為一個(gè)高維數(shù)值向量(Vector Embedding)。這個(gè)向量可以理解為該文本語(yǔ)義的數(shù)學(xué)表示,語(yǔ)義相似的文本其向量在空間中的距離也更近。

輸出:文本塊對(duì)應(yīng)的向量數(shù)組。

4)存儲(chǔ)(Storing)

輸入:向量 + 原始的文本塊(以及可選的元數(shù)據(jù),如來(lái)源、標(biāo)題等)。

過(guò)程:將這些(向量, 文本, 元數(shù)據(jù))對(duì)存儲(chǔ)到向量數(shù)據(jù)庫(kù)(Vector Database) 中。向量數(shù)據(jù)庫(kù)專門為高效相似性搜索而設(shè)計(jì)。

輸出:一個(gè)準(zhǔn)備好的、可供查詢的向量知識(shí)庫(kù)。

第二階段:查詢(Retrieval & Generation) – “問(wèn)答進(jìn)行時(shí)”

這個(gè)階段是在線、實(shí)時(shí)進(jìn)行的,每當(dāng)用戶提出一個(gè)問(wèn)題時(shí)觸發(fā)。

1)查詢輸入(Query):

用戶提出一個(gè)問(wèn)題,例如:“公司今年的年假政策有什么主要變化?”

2)查詢向量化(Query Embedding):

使用第一階段相同的嵌入模型,將用戶的問(wèn)題也轉(zhuǎn)換為一個(gè)向量。

3)檢索(Retrieval):

過(guò)程:在向量數(shù)據(jù)庫(kù)中,進(jìn)行相似性搜索(Similarity Search)。算法(如k-NN)會(huì)計(jì)算查詢向量與庫(kù)中所有向量之間的“距離”,并找出距離最近(即語(yǔ)義最相似)的 Top-K個(gè)文本塊。

在 RAG(檢索增強(qiáng)生成)里,Top-K 指的是從海量文檔中,根據(jù)與問(wèn)題的相關(guān)性,篩選出最匹配的前 K 個(gè)片段。

比如你問(wèn) “貓的飲食習(xí)慣”,系統(tǒng)會(huì)從文檔中找相關(guān)內(nèi)容,Top-K=3 就取最相關(guān)的 3 段。K 是可調(diào)整的參數(shù),比如 K=5 就取前 5 個(gè)。

選多少合適?K 太小可能漏掉關(guān)鍵信息,太大則引入冗余內(nèi)容,影響 AI 回答的準(zhǔn)確性和效率。實(shí)際應(yīng)用中需根據(jù)場(chǎng)景調(diào)試,平衡相關(guān)性和處理速度。

1)輸出:最相關(guān)的幾個(gè)文本片段(Contexts)。

2)增強(qiáng)(Augmentation):

過(guò)程:將用戶的問(wèn)題和檢索到的相關(guān)文本片段組合成一個(gè)新的、增強(qiáng)后的提示(Prompt),交給LLM。

提示示例:

“”” 請(qǐng)僅根據(jù)以下提供的上下文信息來(lái)回答問(wèn)題。如果答案不在上下文中,請(qǐng)直接說(shuō)“根據(jù)提供的信息,我無(wú)法回答這個(gè)問(wèn)題”。

【上下文開始】 {這里插入檢索到的Top-K個(gè)相關(guān)文本片段} 【上下文結(jié)束】

問(wèn)題:{用戶的問(wèn)題} 答案: “””

3)生成(Generation):

過(guò)程:LLM接收到這個(gè)增強(qiáng)后的提示后,會(huì)基于提供的上下文(而不是其內(nèi)部可能過(guò)時(shí)或不準(zhǔn)確的知識(shí))來(lái)生成答案。

輸出:一個(gè)準(zhǔn)確、有據(jù)可循的最終答案。

總結(jié)與類比

你可以把RAG的工作流程想象成一個(gè)開卷考試:

  • 索引階段:就像你把所有的教科書、筆記和資料(知識(shí)庫(kù))做好標(biāo)簽、目錄和索引(向量化并存入數(shù)據(jù)庫(kù)),方便快速查找。
  • 查詢與生成階段:當(dāng)考試時(shí)遇到一個(gè)問(wèn)題(用戶查詢),你會(huì)先去翻看你的索引,找到相關(guān)的章節(jié)和頁(yè)面(檢索),然后基于這些參考資料(上下文)組織你的答案(生成)。

這種方式有效解決了LLM的“幻覺(jué)”問(wèn)題,提高了答案的可信度,并且可以通過(guò)更新知識(shí)庫(kù)來(lái)讓LLM獲取最新知識(shí),而無(wú)需重新訓(xùn)練模型,成本極低。

RAG優(yōu)化技巧

1. 召回源-多路召回(稀疏召回、語(yǔ)義召回、字面召回)

截?cái)嗪驼倩胤謹(jǐn)?shù)的對(duì)齊問(wèn)題-采用的召回后加一重排序的階段(精簡(jiǎn)召回?cái)?shù)、提升召回質(zhì)量)

embedding模型、重排序模型、生成模型-根據(jù)系統(tǒng)作答-針對(duì)性微調(diào)

2. RAG評(píng)測(cè)

1、檢索-MRR平均倒排率、top-k(Hits Rate)命中率、NDCG排序指標(biāo)

2、生成

  • 準(zhǔn)確率(量化指標(biāo):Rouge-L文本相似度、關(guān)鍵詞重合度)
  • 多樣性
  • 人工評(píng)估 對(duì)模型回答進(jìn)行質(zhì)量、準(zhǔn)確性、連貫性的評(píng)分

3. 如何做RAG項(xiàng)目(AI訓(xùn)練師)

  1. 由于標(biāo)注內(nèi)容的復(fù)雜程度,通過(guò)目前優(yōu)質(zhì)大模型的生成能力進(jìn)行參考答案的生成,通過(guò)篩選以及改寫答案,快速提供高質(zhì)量的回答。
  2. 先生成3個(gè)答案,通過(guò)對(duì)3個(gè)答案的篩選以及基礎(chǔ)之上的改寫,進(jìn)行高質(zhì)量答案的產(chǎn)出。

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

題圖來(lái)自作者提供

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!