基于博文 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í)筆記(四)
重排序與過(guò)濾
在獲取檢索結(jié)果后泛烙,可以根據(jù)通過(guò)過(guò)濾愿汰、重新排序或者其他的轉(zhuǎn)換方法來(lái)進(jìn)行檢索結(jié)果的優(yōu)化顺呕。
這是將檢索結(jié)果提供給 LLM 的最后一步。
LlamaIndex 有多種后處理器(Postprocessor)可以進(jìn)行過(guò)濾和重排序:
- 可以根據(jù)相似度得分碉渡,關(guān)鍵詞焰扳,元數(shù)據(jù)進(jìn)行過(guò)濾
- 可以使用其他的LLM禽捆,sentence-transformer cross-encoder拾徙,Cohere 重排序方法洲炊,或者根據(jù)最近日期進(jìn)行重排序
動(dòng)手練習(xí):Rerank LangChain 實(shí)現(xiàn): Cohere Rerank 和 Cross-encoder Rerank
下面的內(nèi)容是更為復(fù)雜的 RAG 技術(shù),涉及 Agent 相關(guān)知識(shí)尼啡,包括 LLM 推理的一些復(fù)雜邏輯暂衡。
查詢轉(zhuǎn)換
查詢轉(zhuǎn)換通過(guò)使用LLM作為推理引擎對(duì)用戶輸入進(jìn)行修改,從而提高檢索質(zhì)量崖瞭。
方法一:查詢拆分
- 如果查詢語(yǔ)句復(fù)雜狂巢,可以使用 LLM 分解為多個(gè)子查詢
- 將多個(gè)子查詢并行執(zhí)行,將檢索到的結(jié)果合并读恃,提供給 LLM
比如:
- 原始查詢語(yǔ)句:What framework has more stars on Github, Langchain or LlamaIndex?
- 分解后的子查詢:
- How many stars does Langchain have on Github?
- How many stars does Llamaindex have on Github?
實(shí)例
- LangChain 實(shí)現(xiàn):Multi Query Retriever
- LlamaIndex 實(shí)現(xiàn):Sub Question Query Engine
方法二:回退(step-back)法
- 將原始查詢語(yǔ)句通過(guò) LLM 生成更加通用的查詢隧膘,以供檢索出更通用或更高級(jí)別的上下文
- 使用原始查詢進(jìn)行檢索
- 將兩個(gè)查詢的檢索結(jié)果合并代态,提供給 LLM
比如:
- 原始查詢:Could the members of The Police perform lawful arrests?
- 更加通用的查詢:What can the members of The Police do?
實(shí)例
LangChain 實(shí)現(xiàn):LangChain cookbook: Step-Back Prompting
方法三:查詢重寫(xiě)
使用 LLM 將原始查詢重新表述(reformulate)
實(shí)例
- LangChain 實(shí)現(xiàn):LangChain Cookbook: Rewrite-Retrieve-Read
- LlamaIndex 實(shí)現(xiàn):Query Rewriting Retriever Pack
理解回退(step-back)法和查詢重寫(xiě)法寺惫,請(qǐng)看:Query rewrite 和 Step-back Prompting 對(duì)比學(xué)習(xí)