LangChain實(shí)戰(zhàn) | MultiQueryRetriever 讓 RAG 更懂你的問題
MultiQueryRetriever是 LangChain 提供的一種增強(qiáng)檢索工具,能夠通過生成多個(gè)查詢變體提高召回率,解決單一查詢匹配度不足的問題。它適用于模糊查詢、開放域問答、長(zhǎng)文檔檢索等場(chǎng)景
原標(biāo)題:LangChain實(shí)戰(zhàn) | MultiQueryRetriever 讓 RAG 更懂你的問題
文章來源:AI取經(jīng)路
內(nèi)容字?jǐn)?shù):6554字
LangChain中的MultiQueryRetriever:提升檢索召回率的利器
在信息檢索領(lǐng)域,準(zhǔn)確高效地獲取相關(guān)信息至關(guān)重要。然而,傳統(tǒng)的檢索方法往往受限于單一查詢的表達(dá)能力,容易遺漏重要的信息,導(dǎo)致召回率低下。為了解決這個(gè)問題,LangChain提供了一種強(qiáng)大的檢索增強(qiáng)工具——MultiQueryRetriever,它能夠通過生成多個(gè)查詢變體來顯著提升檢索的全面性和準(zhǔn)確性。
什么是MultiQueryRetriever?
MultiQueryRetriever的核心思想是克服單一查詢的局限性。它并非依賴于單一查詢檢索到的文檔集來生成最終結(jié)果,而是利用大型語(yǔ)言模型(LLM)自動(dòng)生成多個(gè)表達(dá)相同信息需求的查詢變體。這些變體以不同的方式表達(dá)同一問題,從而確保檢索涵蓋更廣泛的相關(guān)內(nèi)容。這在處理模糊、不精確或用戶表達(dá)方式多樣化的查詢時(shí)尤為有效,能夠有效提高檢索的召回率和魯棒性。
MultiQueryRetriever的工作原理
傳統(tǒng)檢索的局限性
傳統(tǒng)的基于嵌入向量的檢索方法,通常將查詢文本轉(zhuǎn)換為固定向量或關(guān)鍵詞集合進(jìn)行搜索。這種方法存在以下不足:首先,不同用戶可能使用不同的詞語(yǔ)表達(dá)同一問題,導(dǎo)致查詢表述不統(tǒng)一;其次,如果查詢與索引庫(kù)中的向量或關(guān)鍵詞不精確匹配,則可能無(wú)法檢索到相關(guān)文檔,導(dǎo)致召回率低;最后,這種方法難以處理語(yǔ)義上的變體,可能錯(cuò)過與查詢語(yǔ)義相關(guān)但表達(dá)方式不同的文檔。
MultiQueryRetriever的核心機(jī)制
MultiQueryRetriever巧妙地解決了這些問題。它的工作流程主要包括三個(gè)步驟:首先,利用LLM(例如OpenAI GPT)根據(jù)用戶輸入生成多個(gè)查詢變體;其次,將這些變體分別提交給底層的檢索器(Retriever),獲取各自的相關(guān)文檔;最后,對(duì)所有檢索結(jié)果進(jìn)行去重和排序,以確保最終返回的文檔質(zhì)量更高,并兼顧全面性和準(zhǔn)確性。
代碼示例與執(zhí)行過程
以下是一個(gè)簡(jiǎn)單的代碼示例,演示如何使用MultiQueryRetriever進(jìn)行檢索:(由于篇幅限制,此處僅提供代碼框架,具體的代碼實(shí)現(xiàn)需要根據(jù)實(shí)際環(huán)境和庫(kù)版本進(jìn)行調(diào)整。)
首先,加載文檔并進(jìn)行分塊處理;然后,創(chuàng)建基于OpenAIEmbeddings的向量數(shù)據(jù)庫(kù);接著,創(chuàng)建MultiQueryRetriever實(shí)例,并指定LLM;最后,利用創(chuàng)建好的檢索器和LLM構(gòu)建檢索鏈,并進(jìn)行查詢。
在執(zhí)行過程中,MultiQueryRetriever會(huì)根據(jù)用戶問題生成多個(gè)查詢變體,然后分別進(jìn)行檢索,最后合并并去重結(jié)果,最終返回高質(zhì)量的檢索結(jié)果。
適用場(chǎng)景
MultiQueryRetriever適用于多種場(chǎng)景,能夠顯著提升檢索效果:
模糊查詢的搜索場(chǎng)景
當(dāng)用戶輸入的查詢過于簡(jiǎn)短或表述不清時(shí),MultiQueryRetriever可以生成更詳細(xì)、更全面的查詢變體,例如將“AI 未來”擴(kuò)展為“人工智能的未來發(fā)展趨勢(shì)”、“AI技術(shù)未來發(fā)展方向”等,從而提高召回率。
開放域問答
在開放域問答中,用戶的問題可能有多種表達(dá)方式。MultiQueryRetriever能夠生成多個(gè)查詢變體,確保檢索系統(tǒng)涵蓋不同角度的答案,提升問答質(zhì)量。
長(zhǎng)文檔檢索
對(duì)于長(zhǎng)文檔,MultiQueryRetriever可以幫助拆解查詢,并從多個(gè)角度進(jìn)行搜索,從而提高檢索的準(zhǔn)確性和全面性。
總結(jié)
MultiQueryRetriever是LangChain提供的一個(gè)強(qiáng)大的檢索增強(qiáng)工具,它通過生成多個(gè)查詢變體來提高檢索召回率,解決了單一查詢匹配度不足的問題。其在模糊查詢、開放域問答和長(zhǎng)文檔檢索等場(chǎng)景中具有顯著的優(yōu)勢(shì),能夠有效提升RAG系統(tǒng)的性能和效率。結(jié)合其他檢索增強(qiáng)工具,可以構(gòu)建更強(qiáng)大的信息檢索系統(tǒng),為用戶提供更精準(zhǔn)、更全面的信息服務(wù)。
聯(lián)系作者
文章來源:AI取經(jīng)路
作者微信:
作者簡(jiǎn)介:踏上取經(jīng)路,比抵達(dá)靈山更重要! AI技術(shù)、 AI知識(shí) 、 AI應(yīng)用 、 人工智能 、 大語(yǔ)言模型