基于博文 Advanced RAG Techniques: an Illustrated Overview 的學(xué)習(xí)和練習(xí)的記錄重父。
中文內(nèi)容可以查看博主@寶玉的譯文 高級 RAG 技術(shù):圖解概覽 [譯]
系列筆記:
RAG 學(xué)習(xí)筆記(一)
RAG 學(xué)習(xí)筆記(二)
RAG 學(xué)習(xí)筆記(三)
RAG 學(xué)習(xí)筆記(四)
RAG 學(xué)習(xí)筆記(五)
RAG 學(xué)習(xí)筆記(六)
RAG 中的 Agent
Agent 本身就是一個大的話題歇万,本文只討論 RAG 涉及的相關(guān)內(nèi)容
Agent
Agent 是使用 LLM 進行推理捐名,為其提供一系列工具完成一個任務(wù)稼病。
工具包括一系列定義好的函數(shù),比如:代碼函數(shù)、外部API、其他的 Agent。
OpenAI 助理
OpenAI 助理基本上實現(xiàn)了很多工具供 LLM 選擇粒督,比如:
- 對話歷史
- 知識庫
- 文檔上傳
- 函數(shù)調(diào)用 API
函數(shù)調(diào)用可以將自然語言轉(zhuǎn)換為對外部工具、數(shù)據(jù)庫查詢的API調(diào)用
LlamaIndex 中的 OpenAIAgent 队橙,將函數(shù)調(diào)用與 ChatEngine 和 QueryEngine 結(jié)合起來坠陈,提供了基于知識和上下文感知的對話功能,并能夠在單輪對話中進行多次 OpenAI 函數(shù)調(diào)用捐康,帶來了智能 Agent 的能力仇矾。
多文檔 Agent 架構(gòu)
- 多文檔 Agent 包括:
- 對每個文檔初始化一個 Agent (OpanAIAgent),可以完成文檔總結(jié)和問答
- 一個頂級 Agent解总,負責(zé)將查詢路由到文檔 Agent 和進行最后回答的合成
- 文檔 Agent 有兩個工具:向量索引和摘要索引贮匕,根據(jù)查詢決定使用哪個工具
- 對于頂級 Agent,所有的文檔 Agent 都是工具
優(yōu)點:
- 可以支持“文檔集合對話” 場景中的幾乎所有的用例花枫,比如:對比不同文檔中描述的方案或?qū)嶓w刻盐,傳統(tǒng)的單文檔總結(jié)掏膏、問答。
缺點
- Agent 內(nèi)部需要進行多次來回迭代敦锌,所以執(zhí)行速度會比較慢馒疹。
- 在 RAG pipeline 中,LLM 調(diào)用時最耗時的乙墙。
對于大型的多文檔存儲颖变,作者建議簡化架構(gòu),使其具有可擴展性听想。
響應(yīng)內(nèi)容合成器
內(nèi)容響應(yīng)合成是 RAG pipeline 的最后一步腥刹,根據(jù)檢索到的上下文內(nèi)容和用戶原始的查詢,生成最后的響應(yīng)內(nèi)容汉买。
- 簡單方法:將檢索到的上下文和查詢拼接衔峰,一起發(fā)送給 LLM
- 高級方法:多次調(diào)用 LLM,優(yōu)化檢索到的上下文蛙粘,從而生成更好的回答
主要合成響應(yīng)內(nèi)容的高級方法有:
- 迭代細化答案:逐個將檢索到的上下文文本塊發(fā)送給 LLM垫卤,根據(jù)上一個文本塊生成的答案會和下一個文本塊內(nèi)容一同發(fā)送給 LLM
- 總結(jié)檢索到的上下文
- 根據(jù)每一個檢索到的文本塊生成各自的答案,然后將答案拼接或者總結(jié)组题。
詳細可以查看 LlamaIndex 文檔的介紹:Response Synthesizer