基于博文 Advanced RAG Techniques: an Illustrated Overview 的學(xué)習(xí)和練習(xí)的記錄。
中文內(nèi)容可以查看博主@寶玉的譯文 高級(jí) RAG 技術(shù):圖解概覽 [譯]
系列筆記:
RAG 學(xué)習(xí)筆記(一)
RAG 學(xué)習(xí)筆記(二)
RAG 學(xué)習(xí)筆記(三)
RAG 學(xué)習(xí)筆記(四)
RAG 學(xué)習(xí)筆記(五)
參考引用
用戶最終獲得的回答來(lái)自于多個(gè)源:
- 復(fù)雜查詢:使用多個(gè)子查詢檢索獲得的上下文整合為一個(gè)回答
- 單個(gè)查詢:從各種文檔中檢索到的相關(guān)上下文合并成一個(gè)回答
問(wèn)題:如何準(zhǔn)確回溯回答內(nèi)容的來(lái)源
方法:
- 將內(nèi)容引用的任務(wù)增加到 prompt 中,讓 LLM 來(lái)提示內(nèi)容引用來(lái)源的 id
-
將生成的回答與檢索到的文本塊匹配。
- LlamaIndex 實(shí)現(xiàn):Fuzzy Citation Query Engine Pack
- LangChain 實(shí)現(xiàn):CitationFuzzyMatch_chain
- 使用技術(shù):字符串模糊匹配
參考引用是一個(gè)工具,并不是改進(jìn)檢索性能的方法。
對(duì)話引擎(Chat Engine)
RAG 系統(tǒng),只有單次查詢是不夠的。一個(gè)優(yōu)秀的 RAG 系統(tǒng)需要支持對(duì)話邏輯,在查詢的時(shí)候能夠?qū)?duì)話的上下文考慮在內(nèi)。
技術(shù)點(diǎn)
查詢壓縮技術(shù)(query compression)
- 將對(duì)話歷史和用戶查詢語(yǔ)句一并考慮
實(shí)現(xiàn)方法

兩種方法的圖示
-
ContextChatEngine:簡(jiǎn)單且流行的方法
- 使用用戶查詢語(yǔ)句獲取相關(guān)內(nèi)容
- 將檢索結(jié)果和對(duì)話歷史一并發(fā)送給 LLM,用于生成回答
-
CondensePlusContextMode:更為復(fù)雜的實(shí)現(xiàn)
- 將用戶查詢語(yǔ)句和對(duì)話歷史一并發(fā)送給 LLM,生成一個(gè)新的查詢語(yǔ)句
- 使用新的查詢語(yǔ)句獲取檢索結(jié)果
- 將檢索結(jié)果和用戶的原始查詢語(yǔ)句一并發(fā)送給 LLM,生成回答
ReAct Agent:內(nèi)容和 Agent 相關(guān),后面一并介紹
動(dòng)手練習(xí)
LangChain ConversationalRetrievalChain 對(duì)話方法實(shí)現(xiàn)
查詢路由(Query Routing)
- 由 LLM 支持的決策步驟
- 用來(lái)決定根據(jù)用戶的查詢,下面要做什么事情。通常有以下任務(wù):
- 內(nèi)容總結(jié)
- 從某個(gè)數(shù)據(jù)源檢索數(shù)據(jù)(關(guān)系型數(shù)據(jù)庫(kù),圖數(shù)據(jù)庫(kù),向量數(shù)據(jù)庫(kù)等)
- 執(zhí)行多個(gè)不同的路由,并將各個(gè)路由的執(zhí)行結(jié)果合并,提供給 LLM 生成回答。
技術(shù)說(shuō)明
- 查詢路由的定義中包含可以執(zhí)行的選項(xiàng),可以是
- 檢索某個(gè)數(shù)據(jù)源的數(shù)據(jù)
- 如果是 Agent 應(yīng)用,可能是執(zhí)行子任務(wù)鏈或者其他的 Agent(如多文檔 Agent,后面會(huì)介紹)
- 通過(guò) LLM 決定具體執(zhí)行的選項(xiàng),返回的結(jié)果是預(yù)先定義的格式,方便程序調(diào)用方法執(zhí)行具體任務(wù)。