別再只知道 ChatGPT!RAG 才是企業(yè)落地 AI 的 “剛需神器”,3 分鐘搞懂核心邏輯
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)練師)
- 由于標(biāo)注內(nèi)容的復(fù)雜程度,通過(guò)目前優(yōu)質(zhì)大模型的生成能力進(jìn)行參考答案的生成,通過(guò)篩選以及改寫答案,快速提供高質(zhì)量的回答。
- 先生成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)自作者提供
- 目前還沒(méi)評(píng)論,等你發(fā)揮!