RAG實戰(zhàn)篇:優(yōu)化查詢轉(zhuǎn)換的五種高級方法,讓大模型真正理解用戶意圖

0 評論 459 瀏覽 1 收藏 9 分鐘

在這篇文章中,我們將深入探討如何通過高級查詢轉(zhuǎn)換技巧,優(yōu)化大型語言模型的理解能力,從而更準(zhǔn)確地把握用戶的意圖。

《RAG實戰(zhàn)篇:構(gòu)建一個最小可行性的Rag系統(tǒng)》中,風(fēng)叔詳細(xì)介紹了Rag系統(tǒng)的實現(xiàn)框架,以及如何搭建一個最基本的Naive Rag系統(tǒng)。

在這篇文章中,圍繞Query Translation(查詢轉(zhuǎn)換)環(huán)節(jié),如下圖紅框所示,風(fēng)叔詳細(xì)介紹一下如何讓大模型更準(zhǔn)確地理解用戶輸入意圖。

Query Translation(查詢轉(zhuǎn)換)主要處理用戶的輸入。在Naive Rag中,往往直接使用原始Query進(jìn)行檢索,這樣會存在三個問題:

第一,原始query的措辭不當(dāng),尤其是涉及到很多專業(yè)詞匯時,query可能存在概念使用錯誤的問題;

第二,往往知識庫內(nèi)的數(shù)據(jù)無法直接回答,需要組合知識才能找到答案;

第三,當(dāng)query涉及比較多的細(xì)節(jié)時,由于檢索效率有限,大模型往往無法進(jìn)行高質(zhì)量的回答。

下面,我們結(jié)合源代碼,在查詢轉(zhuǎn)換環(huán)節(jié)實現(xiàn)Multi-query(多查詢)、Rag-Fusion、Decomposition(查詢分解)、Stepback和HYDE這五種優(yōu)化方案。

一、Multi-query(多查詢)

Multi-query是指借助提示工程通過大型語言模型來擴(kuò)展查詢,將原始Query擴(kuò)展成多個相似的Query,然后并行執(zhí)行,是一種非常簡單直觀的優(yōu)化方案,如下圖所示。

通過構(gòu)建Prompt,告訴大模型在收到Query之后,生成5個相似的擴(kuò)展問題。后續(xù)的步驟和Naive Rag一樣,對所有Query進(jìn)行檢索和生成。

二、Rag-Fusion

Rag-Fusion也是Multi-Query的一種,相比Multi-query只是多了一個步驟,即在對多個query進(jìn)行檢索之后,應(yīng)用倒數(shù)排名融合算法,根據(jù)文檔在多個查詢中的相關(guān)性重新排列文檔,生成最終輸出。

以下代碼中的reciprocal_rank_fusion,就是rag-fusion多出來的一步。

三、Decomposition(問題分解)

通過分解和規(guī)劃復(fù)雜問題,將原始Query分解成為多個子問題。比如原始Query的問題是“請詳細(xì)且全面的介紹Rag“,這個問題就可以拆解為幾個子問題,“Rag的概念是什么?”,“為什么會產(chǎn)生Rag?”,“Rag的原理是怎樣的?”,“Rag有哪些使用場景”等等。

首先,構(gòu)建Prompt,告訴大模型要將輸入的問題分解成3個子問題。

在最終回答子問題的時候有兩種方式。

第一種是遞歸回答,即先接收一個子問題,先回答這個子問題并接受這個答案,并用它來幫助回答第二個子問題。

給出prompt:

下面是遞歸回答的主邏輯,生成最終回答:

第二種方式是獨(dú)立回答,然后再把所有的這些答案串聯(lián)起來,得出最終答案。這更適合于一組有幾個獨(dú)立的問題,問題之間的答案不互相依賴的情況。

四、Step-back(Query后退)

如果原始查詢太復(fù)雜或返回的信息太廣泛,我們可以選擇生成一個抽象層次更高的“退后”問題,與原始問題一起用于檢索,以增加返回結(jié)果的數(shù)量。

例如,對于問題“勒布朗詹姆斯在2005年至2010年在哪些球隊?”這個問題因為有時間范圍的詳細(xì)限制,比較難直接解決,可以提出一個后退問題,“勒布朗詹姆斯的職業(yè)生涯是怎么樣的?”,從這個回答的召回結(jié)果中再檢索上一個問題的答案。

先給大模型提供一些step-back的示例:

然后對輸入問題進(jìn)行step-back

結(jié)合prompt,生成最終回答

五、HYDE

全稱是Hypothetical Document Embeddings,即用LLM生成一個“假設(shè)”答案,將其和問題一起進(jìn)行檢索。

HyDE的核心思想是接收用戶提問后,先讓LLM在沒有外部知識的情況下生成一個假設(shè)性的回復(fù)。然后,將這個假設(shè)性回復(fù)和原始查詢一起用于向量檢索。假設(shè)回復(fù)可能包含虛假信息,但蘊(yùn)含著LLM認(rèn)為相關(guān)的信息和文檔模式,有助于在知識庫中尋找類似的文檔。

到這里,優(yōu)化查詢轉(zhuǎn)化的五種高級方法就介紹完了。

六、總結(jié)

在這篇文章中,風(fēng)叔詳細(xì)介紹了優(yōu)化Query Translation(查詢轉(zhuǎn)換)的具體方法,包括Multi-Query、Rag-Fusion、Decomposition、Step-Back和HYDE這五種比較高級的方法。

在下一篇文章中,風(fēng)叔將重點介紹Routing(路由)環(huán)節(jié),通過對用戶輸入進(jìn)行路由,從而讓系統(tǒng)自動選擇最合適的處理方案。因為Routing的存在,RAG系統(tǒng)具備了處理復(fù)雜問題和場景的能力。

本文由人人都是產(chǎn)品經(jīng)理作者【風(fēng)叔】,微信公眾號:【風(fēng)叔云】,原創(chuàng)/授權(quán) 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于 CC0 協(xié)議。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!