從RAG到Agentic RAG的變化
從RAG到Agentic RAG,是AI從“信息調(diào)用”走向“任務(wù)執(zhí)行”的一次范式躍遷。本文將系統(tǒng)梳理Agentic RAG的架構(gòu)演進(jìn)、能力擴(kuò)展與應(yīng)用場(chǎng)景,幫助讀者理解生成式AI如何從“工具”變成“智能體”。
RAG
RAG(Retrieval-Augmented Generation,檢索增強(qiáng)生成)是一種結(jié)合外部知識(shí)檢索與大語(yǔ)言模型(LLM)生成的技術(shù)框架,核心目標(biāo)是解決純 LLM 存在的 “知識(shí)滯后、事實(shí)錯(cuò)誤(幻覺)、無(wú)法引用特定來(lái)源” 等問題,讓模型生成的內(nèi)容更準(zhǔn)確、更具時(shí)效性、更可追溯。
RAG大致可以分為:
①分片→索引
②召回→重排→生成這一樣的一個(gè)基本流程
即將用戶的query提取相應(yīng)的關(guān)鍵詞并轉(zhuǎn)化成向量,通過(guò)將RAG所存入的內(nèi)容,通過(guò)在內(nèi)部知識(shí)庫(kù)的內(nèi)容,并返回chunk,并且根據(jù)模型的統(tǒng)計(jì),選擇其中的內(nèi)容,比如說(shuō)前幾的內(nèi)容,然后根據(jù)用戶的內(nèi)容內(nèi)容,將相應(yīng)排序前的內(nèi)容放在前面,模型進(jìn)行改寫,結(jié)合生成相應(yīng)的內(nèi)容
模型首先會(huì)對(duì)上下文的內(nèi)容(query+history)進(jìn)行結(jié)合,并相應(yīng)的改寫,作為上下文工程的存在進(jìn)行收集
然后模型會(huì)進(jìn)行改寫,并且進(jìn)入RAG進(jìn)行查詢,然后對(duì)知識(shí)進(jìn)行排序,并且將chunk和query進(jìn)行排序,生成相應(yīng)的prompt,進(jìn)入模型,經(jīng)過(guò)相應(yīng)的安全綠網(wǎng)進(jìn)行回答
使用RAG的意義
- 拓展模型所擁有的知識(shí),以提升模型的局限性
- 降低幻覺問題的概率
- 降低自身數(shù)據(jù)的泄露問題
RAG的流程(分片→索引,召回→重排→生成)
分片
將文本內(nèi)容切分。RAG切分的方法:
1. 規(guī)則切分方法
① 固定長(zhǎng)度切分
- 原理:按固定字符數(shù)、token數(shù)或句子數(shù)分割文檔,超過(guò)長(zhǎng)度則截?cái)唷?/li>
- 優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,適合結(jié)構(gòu)松散的文本(如純文本、小說(shuō))。
- 缺點(diǎn):可能破壞語(yǔ)義完整性(如切斷句子、段落邏輯)。
- 示例:每500字符或200token切分為一個(gè)chunk,保留一定重疊(如50token)避免信息割裂。
②結(jié)構(gòu)感知切分
- 原理:根據(jù)文檔固有結(jié)構(gòu)(如段落、章節(jié)、標(biāo)題層級(jí))分割,優(yōu)先按自然邊界切分。
- 優(yōu)點(diǎn):保留語(yǔ)義完整性,適合結(jié)構(gòu)化文檔(如PDF、Markdown、HTML)。
③標(biāo)點(diǎn) / 符號(hào)切分
- 原理:以標(biāo)點(diǎn)符號(hào)(如句號(hào)、分號(hào))或特殊符號(hào)作為切分點(diǎn),避免截?cái)嗤暾渥印?/li>
- 優(yōu)點(diǎn):減少句子被割裂的概率,適合正式文本(如論文、新聞)。
- 缺點(diǎn):長(zhǎng)句可能被過(guò)度拆分或保留過(guò)長(zhǎng)。
2. 基于語(yǔ)義的切分方法
①語(yǔ)義相似度切分
- 原理:通過(guò)計(jì)算句子/段落間的語(yǔ)義相似度(如用BERT等模型生成嵌入向量),將語(yǔ)義相近的內(nèi)容歸為一個(gè)chunk,相似度低于閾值則切分。
- 優(yōu)點(diǎn):按語(yǔ)義邏輯分組,避免切斷相關(guān)內(nèi)容(如同一主題的跨段落描述)。
- 缺點(diǎn):計(jì)算成本高,依賴預(yù)訓(xùn)練模型。
②主題檢測(cè)切分
- 原理:通過(guò)主題模型(如LDA)或transformer模型檢測(cè)文本中的主題邊界,當(dāng)主題發(fā)生切換時(shí)切分。
- 優(yōu)點(diǎn):適合長(zhǎng)文檔(如報(bào)告、書籍),確保每個(gè)chunk聚焦單一主題。
- 示例:用BERTopic模型識(shí)別主題變化點(diǎn),作為切分依據(jù)。
3. 混合切分方法
結(jié)合規(guī)則與語(yǔ)義的優(yōu)勢(shì),平衡效率與準(zhǔn)確性,是實(shí)際應(yīng)用中的常用策略:
- 示例1:先按段落分割(結(jié)構(gòu)規(guī)則),再對(duì)過(guò)長(zhǎng)段落用語(yǔ)義相似度二次切分;
- 示例2:固定長(zhǎng)度切分+重疊窗口,同時(shí)用句子邊界調(diào)整(確保chunk以完整句子結(jié)尾);
- 示例3:對(duì)結(jié)構(gòu)化文檔(如PDF)先提取標(biāo)題、正文、圖表等元素,再按元素類型分別采用不同切分策略。
RAG提高準(zhǔn)確率的切分方法
1. 交疊切分 知識(shí)片段有明確主題
即每個(gè)切片可以跟上個(gè)切片和下個(gè)切片有部分重疊
即一個(gè)切片中和上下切片中的內(nèi)容,有相互交疊的部分
2. 多顆粒度混合切分
多顆粒度混合,即多種顆粒度在同一情況下使用
按照顆粒度不同可以分為:
- 粗顆粒度,即大塊的知識(shí)單元
- 中顆粒度,即章節(jié)、模塊的知識(shí)
- 細(xì)顆粒度,即單條概念或者是知識(shí)點(diǎn)
多顆粒度混合使用,通常會(huì)以以下方式實(shí)現(xiàn):
- 層次化切分:按照知識(shí)的多級(jí)結(jié)構(gòu),去分層
- 動(dòng)態(tài)組合:根據(jù)需要將不同顆粒度的知識(shí)單元進(jìn)行靈活組合
- 元數(shù)據(jù)標(biāo)注:為每個(gè)知識(shí)單元添加顆粒度標(biāo)簽,便于檢索
3. 知識(shí)片段的上下相鄰片段也可以一并取出,提高信息完整度
通過(guò)與該知識(shí)片段的聯(lián)系,幫助去將有關(guān)的知識(shí)片段做相關(guān)的鏈接
4. 檢索時(shí)多召回結(jié)果,再用單獨(dú)的模型去進(jìn)行重排序
通過(guò)對(duì)多召回的結(jié)果通過(guò)rerank模型去做重排序,去看準(zhǔn)確率
5. 向量+關(guān)鍵詞混合檢索
一般分為兩個(gè)階段:
- 關(guān)鍵詞檢索得到初步文檔
- 向量檢索精準(zhǔn)匹配相關(guān)段落
6. user prompt重構(gòu)
通過(guò)LLM通過(guò)將prompt重構(gòu)成幾種不同的表達(dá),然后再根據(jù)相應(yīng)的表達(dá)生成對(duì)應(yīng)向量去檢索,最后綜合得出結(jié)果
7. 粗檢+細(xì)檢
粗檢→提取關(guān)鍵詞→細(xì)檢
8. 考慮上下文
即上下文工程結(jié)合內(nèi)容回答用戶
索引
即當(dāng)接收用戶查詢后,通過(guò)Embedding將片段文本轉(zhuǎn)換為向量,將片段文本和片段向量存入數(shù)據(jù)庫(kù)的一個(gè)過(guò)程
Embedding就是一個(gè)編碼器,將內(nèi)容轉(zhuǎn)換成機(jī)器可以理解的語(yǔ)言
召回
就是搜索與用戶相關(guān)片段的過(guò)程
即:
query→Embedding模型→向量數(shù)據(jù)庫(kù)→片段文本的召回
返回的片段文本會(huì)計(jì)算與用戶query有關(guān)的內(nèi)容,計(jì)算向量相似度,從而選取其中的前幾
召回的特點(diǎn):
- 成本低
- 耗時(shí)短
- 準(zhǔn)確率低
適合場(chǎng)景:適合做初篩
重排
針對(duì)性的對(duì)返回的文本進(jìn)行二次排序,挑選出與用戶問題匹配度更好的文本,更加符合用戶語(yǔ)意回答的方式
cross-encoder的特點(diǎn):
- 成本高
- 耗時(shí)長(zhǎng)
- 準(zhǔn)確率高
適合場(chǎng)景:精挑細(xì)選
生成
用戶問題+與用戶問題匹配度高的參考片段,模型參考以上內(nèi)容,回答
文檔解析技術(shù)
模型會(huì)通過(guò)OCR,對(duì)文檔進(jìn)行解析,同時(shí)將內(nèi)容進(jìn)行分析,標(biāo)題,內(nèi)容,先后等內(nèi)容
同時(shí)目前可以對(duì)表格進(jìn)行分析,輸出markdown、html、邏輯坐標(biāo)
同時(shí)模型可以對(duì)內(nèi)容進(jìn)行分析層級(jí)分析
通過(guò)利用模型不同模態(tài)的訓(xùn)練,可以對(duì)于文檔中的圖片等內(nèi)容進(jìn)行解析,從而轉(zhuǎn)換成自然語(yǔ)言,作為RAG的內(nèi)容
即對(duì)圖片、表格進(jìn)行描述,生成相應(yīng)的內(nèi)容理解
在遇到query時(shí),可以通過(guò)對(duì)內(nèi)容分析,進(jìn)行排序,生成相應(yīng)的回復(fù)。
RAG需要注意的點(diǎn)
RAG不等于百科全書
- 干擾信息過(guò)多
- 我們需要在知識(shí)庫(kù)中添加核心業(yè)務(wù)的核心問答數(shù)據(jù)
數(shù)據(jù)質(zhì)量
好的模型+優(yōu)質(zhì)的數(shù)據(jù),才可以對(duì)用戶進(jìn)行優(yōu)質(zhì)的回復(fù)
要注意數(shù)據(jù)的:
- 時(shí)效性
- 數(shù)據(jù)的結(jié)構(gòu)
- 數(shù)據(jù)的表達(dá)
動(dòng)態(tài)更新的必要
知識(shí)庫(kù)的數(shù)據(jù)會(huì)隨著時(shí)間的更新去過(guò)期,就需要人為的進(jìn)行動(dòng)態(tài)的更新維護(hù),保證數(shù)據(jù)質(zhì)量以及數(shù)據(jù)的時(shí)效性
方法:
- 增加時(shí)間戳
- 設(shè)置更新機(jī)制,人為去進(jìn)行優(yōu)化
知識(shí)庫(kù)并不代表了理解
RAG的本質(zhì)更多的是基于Embedding模型,針對(duì)性的在向量數(shù)據(jù)庫(kù)中,召回相似的內(nèi)容,然后進(jìn)行回答,并不能直接對(duì)內(nèi)容進(jìn)行理解,在這個(gè)基礎(chǔ)上,需要搭載模型,讓模型針對(duì)性的進(jìn)行理解回答
Agentic RAG
Agentic RAG是增加在RAG的基礎(chǔ)上增加了一些開創(chuàng)性思路
ReAct框架(協(xié)同推理與行動(dòng))
通過(guò)引入”思考-行動(dòng)-觀察“的循環(huán)。AI不再只是想,通過(guò)做,然后不斷調(diào)整和驗(yàn)證自己的思考
Self-RAG框架(自我反思與修正)
賦予AI一種自我思考,判斷是否需要調(diào)用一種能力,不斷反思
其獨(dú)特性在于可以對(duì)復(fù)雜問題進(jìn)行拆解,逐步完成,并且在過(guò)程中,針對(duì)性的調(diào)整自己的策略
本文由 @一葉 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
- 目前還沒評(píng)論,等你發(fā)揮!