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

0 評(píng)論 1079 瀏覽 3 收藏 9 分鐘

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

《RAG實(shí)戰(zhàn)篇:構(gòu)建一個(gè)最小可行性的Rag系統(tǒng)》中,風(fēng)叔詳細(xì)介紹了Rag系統(tǒng)的實(shí)現(xiàn)框架,以及如何搭建一個(gè)最基本的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)行檢索,這樣會(huì)存在三個(gè)問(wèn)題:

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

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

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

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

一、Multi-query(多查詢)

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

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

二、Rag-Fusion

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

以下代碼中的reciprocal_rank_fusion,就是rag-fusion多出來(lái)的一步。

三、Decomposition(問(wèn)題分解)

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

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

在最終回答子問(wèn)題的時(shí)候有兩種方式。

第一種是遞歸回答,即先接收一個(gè)子問(wèn)題,先回答這個(gè)子問(wèn)題并接受這個(gè)答案,并用它來(lái)幫助回答第二個(gè)子問(wèn)題。

給出prompt:

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

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

四、Step-back(Query后退)

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

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

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

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

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

五、HYDE

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

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

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

六、總結(jié)

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

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

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

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

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