RAG實戰(zhàn)篇:優(yōu)化查詢轉換的五種高級方法,讓大模型真正理解用戶意圖
在這篇文章中,我們將深入探討如何通過高級查詢轉換技巧,優(yōu)化大型語言模型的理解能力,從而更準確地把握用戶的意圖。
在《RAG實戰(zhàn)篇:構建一個最小可行性的Rag系統(tǒng)》中,風叔詳細介紹了Rag系統(tǒng)的實現(xiàn)框架,以及如何搭建一個最基本的Naive Rag系統(tǒng)。
在這篇文章中,圍繞Query Translation(查詢轉換)環(huán)節(jié),如下圖紅框所示,風叔詳細介紹一下如何讓大模型更準確地理解用戶輸入意圖。
Query Translation(查詢轉換)主要處理用戶的輸入。在Naive Rag中,往往直接使用原始Query進行檢索,這樣會存在三個問題:
第一,原始query的措辭不當,尤其是涉及到很多專業(yè)詞匯時,query可能存在概念使用錯誤的問題;
第二,往往知識庫內(nèi)的數(shù)據(jù)無法直接回答,需要組合知識才能找到答案;
第三,當query涉及比較多的細節(jié)時,由于檢索效率有限,大模型往往無法進行高質(zhì)量的回答。
下面,我們結合源代碼,在查詢轉換環(huán)節(jié)實現(xiàn)Multi-query(多查詢)、Rag-Fusion、Decomposition(查詢分解)、Stepback和HYDE這五種優(yōu)化方案。
一、Multi-query(多查詢)
Multi-query是指借助提示工程通過大型語言模型來擴展查詢,將原始Query擴展成多個相似的Query,然后并行執(zhí)行,是一種非常簡單直觀的優(yōu)化方案,如下圖所示。
通過構建Prompt,告訴大模型在收到Query之后,生成5個相似的擴展問題。后續(xù)的步驟和Naive Rag一樣,對所有Query進行檢索和生成。
二、Rag-Fusion
Rag-Fusion也是Multi-Query的一種,相比Multi-query只是多了一個步驟,即在對多個query進行檢索之后,應用倒數(shù)排名融合算法,根據(jù)文檔在多個查詢中的相關性重新排列文檔,生成最終輸出。
以下代碼中的reciprocal_rank_fusion,就是rag-fusion多出來的一步。
三、Decomposition(問題分解)
通過分解和規(guī)劃復雜問題,將原始Query分解成為多個子問題。比如原始Query的問題是“請詳細且全面的介紹Rag“,這個問題就可以拆解為幾個子問題,“Rag的概念是什么?”,“為什么會產(chǎn)生Rag?”,“Rag的原理是怎樣的?”,“Rag有哪些使用場景”等等。
首先,構建Prompt,告訴大模型要將輸入的問題分解成3個子問題。
在最終回答子問題的時候有兩種方式。
第一種是遞歸回答,即先接收一個子問題,先回答這個子問題并接受這個答案,并用它來幫助回答第二個子問題。
給出prompt:
下面是遞歸回答的主邏輯,生成最終回答:
第二種方式是獨立回答,然后再把所有的這些答案串聯(lián)起來,得出最終答案。這更適合于一組有幾個獨立的問題,問題之間的答案不互相依賴的情況。
四、Step-back(Query后退)
如果原始查詢太復雜或返回的信息太廣泛,我們可以選擇生成一個抽象層次更高的“退后”問題,與原始問題一起用于檢索,以增加返回結果的數(shù)量。
例如,對于問題“勒布朗詹姆斯在2005年至2010年在哪些球隊?”這個問題因為有時間范圍的詳細限制,比較難直接解決,可以提出一個后退問題,“勒布朗詹姆斯的職業(yè)生涯是怎么樣的?”,從這個回答的召回結果中再檢索上一個問題的答案。
先給大模型提供一些step-back的示例:
然后對輸入問題進行step-back
結合prompt,生成最終回答
五、HYDE
全稱是Hypothetical Document Embeddings,即用LLM生成一個“假設”答案,將其和問題一起進行檢索。
HyDE的核心思想是接收用戶提問后,先讓LLM在沒有外部知識的情況下生成一個假設性的回復。然后,將這個假設性回復和原始查詢一起用于向量檢索。假設回復可能包含虛假信息,但蘊含著LLM認為相關的信息和文檔模式,有助于在知識庫中尋找類似的文檔。
到這里,優(yōu)化查詢轉化的五種高級方法就介紹完了。
六、總結
在這篇文章中,風叔詳細介紹了優(yōu)化Query Translation(查詢轉換)的具體方法,包括Multi-Query、Rag-Fusion、Decomposition、Step-Back和HYDE這五種比較高級的方法。
在下一篇文章中,風叔將重點介紹Routing(路由)環(huán)節(jié),通過對用戶輸入進行路由,從而讓系統(tǒng)自動選擇最合適的處理方案。因為Routing的存在,RAG系統(tǒng)具備了處理復雜問題和場景的能力。
本文由人人都是產(chǎn)品經(jīng)理作者【風叔】,微信公眾號:【風叔云】,原創(chuàng)/授權 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉載。
題圖來自Unsplash,基于 CC0 協(xié)議。
- 目前還沒評論,等你發(fā)揮!