精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

【人工智能】AI如何精準(zhǔn)匹配RAG知識(shí)庫(kù)?揭秘混合檢索的奧秘! 精華

發(fā)布于 2025-4-11 00:00
瀏覽
0收藏

在人工智能(AI)領(lǐng)域,長(zhǎng)上下文生成與檢索(RAG) 已成為提升自然語(yǔ)言處理(NLP)模型性能的關(guān)鍵技術(shù)之一。隨著數(shù)據(jù)規(guī)模與應(yīng)用場(chǎng)景的不斷擴(kuò)展,如何高效地處理海量上下文信息,成為研究與應(yīng)用的熱點(diǎn)話題。本文將深入探討OpenAI最新發(fā)布的O1-preview和O1-mini模型在長(zhǎng)上下文RAG任務(wù)中的表現(xiàn),比較其與行業(yè)內(nèi)其他SOTA(State-of-the-Art)模型如GPT-4o和Google Gemini 1.5的性能差異,并提供實(shí)用的優(yōu)化建議,助力開(kāi)發(fā)者在構(gòu)建LLM(大型語(yǔ)言模型)應(yīng)用時(shí)實(shí)現(xiàn)更高效、更精準(zhǔn)的性能表現(xiàn)。

引言:長(zhǎng)上下文RAG的重要性

在現(xiàn)代AI應(yīng)用中,大型語(yǔ)言模型(LLM) 已廣泛應(yīng)用于文本生成、問(wèn)答系統(tǒng)、內(nèi)容總結(jié)等多個(gè)領(lǐng)域。然而,隨著應(yīng)用場(chǎng)景的復(fù)雜性和數(shù)據(jù)量的急劇增加,傳統(tǒng)的短上下文處理能力已難以滿足需求。長(zhǎng)上下文RAG(Retrieve and Generate) 技術(shù)通過(guò)在生成過(guò)程中引入檢索機(jī)制,使模型能夠處理更大規(guī)模的上下文信息,從而顯著提升了回答的準(zhǔn)確性與相關(guān)性。

【CodeMoss】集成13個(gè)種AI模型(GPT4、o1等)、支持Open API調(diào)用、自定義助手、文件上傳等強(qiáng)大功能,助您提升工作效率! >>> - CodeMoss & ChatGPT-AI中文版

>>> https://pc.aihao123.cn/index.html#/page/login?invite=1141439&fromChannel=CodeMoss_1212RAG

OpenAI O1模型概述

OpenAI的O1模型 是最新發(fā)布的SOTA模型之一,分為O1-preview 和O1-mini 兩個(gè)版本。O1模型在2023年10月發(fā)布后,憑借其卓越的長(zhǎng)上下文處理能力,迅速在行業(yè)內(nèi)嶄露頭角。與之前的GPT-4o模型相比,O1模型在多個(gè)長(zhǎng)上下文RAG基準(zhǔn)測(cè)試中表現(xiàn)更為出色,尤其是在處理超過(guò)百萬(wàn)級(jí)詞元的超長(zhǎng)文本時(shí)展現(xiàn)出了顯著優(yōu)勢(shì)。

O1-mini 版本在性能上幾乎與GPT-4o持平,而O1-preview 則在一些特定任務(wù)中超越了GPT-4o,顯示出其強(qiáng)大的泛化能力和適應(yīng)性。這兩款模型不僅在標(biāo)準(zhǔn)數(shù)據(jù)集上的表現(xiàn)優(yōu)異,還在諸如Databricks DocsQA和FinanceBench等內(nèi)部數(shù)據(jù)集上展現(xiàn)了卓越的性能。

O1模型在長(zhǎng)上下文RAG基準(zhǔn)測(cè)試中的表現(xiàn)

為了全面評(píng)估O1模型在長(zhǎng)上下文RAG任務(wù)中的性能,我們將其在多個(gè)數(shù)據(jù)集上的表現(xiàn)進(jìn)行詳盡分析,包括Databricks DocsQAFinanceBench 和 **Natural Questions (NQ)**。

在Databricks DocsQA數(shù)據(jù)集上的表現(xiàn)

Databricks DocsQA 是一個(gè)內(nèi)部數(shù)據(jù)集,專注于文檔問(wèn)答任務(wù),涵蓋了技術(shù)文檔的復(fù)雜結(jié)構(gòu)與多樣化內(nèi)容。在此數(shù)據(jù)集上,O1-preview和O1-mini模型在所有上下文長(zhǎng)度下的表現(xiàn)顯著優(yōu)于GPT-4o和Google Gemini模型。具體而言:

  • O1-preview模型在2k至200萬(wàn)詞元的上下文長(zhǎng)度范圍內(nèi),回答的正確性和相關(guān)性均穩(wěn)步提升,尤其在長(zhǎng)上下文下表現(xiàn)尤為突出。
  • O1-mini版本在處理超長(zhǎng)上下文時(shí),準(zhǔn)確率接近GPT-4o,但在某些任務(wù)中超越了GPT-4o,顯示出其高效的上下文處理能力。

圖2.1展示了不同模型在Databricks DocsQA數(shù)據(jù)集上的RAG性能對(duì)比,可以明顯看出O1模型的優(yōu)勢(shì)。

【人工智能】AI如何精準(zhǔn)匹配RAG知識(shí)庫(kù)?揭秘混合檢索的奧秘!-AI.x社區(qū)

在FinanceBench數(shù)據(jù)集上的表現(xiàn)

FinanceBench 數(shù)據(jù)集專注于金融領(lǐng)域的問(wèn)答任務(wù),涉及大量專業(yè)術(shù)語(yǔ)與復(fù)雜的金融邏輯。在此數(shù)據(jù)集上,O1模型同樣表現(xiàn)優(yōu)異:

  • O1-previewO1-mini在所有上下文長(zhǎng)度下,尤其是在8k及以上,準(zhǔn)確率均顯著高于GPT-4o和Gemini模型。
  • 尤其是在16k甚至更長(zhǎng)的上下文長(zhǎng)度下,O1模型能夠保持較高的回答質(zhì)量,展示出其在處理金融數(shù)據(jù)復(fù)雜性方面的優(yōu)勢(shì)。

圖2.2展示了O1模型在FinanceBench數(shù)據(jù)集上的長(zhǎng)上下文RAG性能,進(jìn)一步驗(yàn)證了其卓越表現(xiàn)。

【人工智能】AI如何精準(zhǔn)匹配RAG知識(shí)庫(kù)?揭秘混合檢索的奧秘!-AI.x社區(qū)

在Natural Questions (NQ)數(shù)據(jù)集上的表現(xiàn)

Natural Questions (NQ) 是一個(gè)標(biāo)準(zhǔn)的學(xué)術(shù)基準(zhǔn)測(cè)試數(shù)據(jù)集,涵蓋了廣泛的常識(shí)性問(wèn)題。在NQ數(shù)據(jù)集上,O1模型的表現(xiàn)總體優(yōu)異,但在短上下文長(zhǎng)度(2k詞元)下存在一定的性能下降:

  • 在短篇幅上下文中,如果檢索到的文檔中信息不足,O1模型傾向于回答“信息不可用”,而無(wú)法基于自身知識(shí)進(jìn)行補(bǔ)充回答。
  • 盡管如此,在更長(zhǎng)的上下文環(huán)境下,O1模型依然保持了較高的回答正確性,接近甚至超越了GPT-4o。

這種在短上下文下的性能下降主要源于檢索文檔的相關(guān)性不足,導(dǎo)致模型無(wú)法充分發(fā)揮其生成能力。

與Google Gemini 1.5模型的對(duì)比

Google Gemini 1.5 模型是目前市場(chǎng)上另一款領(lǐng)先的長(zhǎng)上下文RAG模型,擁有Pro 和Flash 兩個(gè)版本。在多個(gè)基準(zhǔn)測(cè)試中,Gemini 1.5展示出了其獨(dú)特的優(yōu)勢(shì),尤其是在處理超長(zhǎng)上下文時(shí)的穩(wěn)定性。

Gemini 1.5在超長(zhǎng)上下文下的穩(wěn)定性

盡管在128k詞元以下的整體答案正確性低于O1和GPT-4o模型,Gemini 1.5 在處理高達(dá)200萬(wàn)詞元的超長(zhǎng)上下文時(shí),表現(xiàn)出了驚人的穩(wěn)定性。具體表現(xiàn)如下:

  • 一致性:在超長(zhǎng)上下文下,Gemini 1.5模型能維持一致的回答質(zhì)量,而不會(huì)像其他模型那樣在上下文長(zhǎng)度增加時(shí)出現(xiàn)性能波動(dòng)。
  • 資源優(yōu)化:盡管處理超長(zhǎng)文本可能帶來(lái)較高的計(jì)算成本,Gemini 1.5通過(guò)優(yōu)化算法,有效控制了資源消耗,使其在長(zhǎng)文檔處理上具有成本效益。

圖2.1展示了Gemini 1.5在NQ數(shù)據(jù)集上的長(zhǎng)上下文RAG性能,顯示其在大規(guī)模文本處理中依然能夠保持高水平的回答正確性。

【人工智能】AI如何精準(zhǔn)匹配RAG知識(shí)庫(kù)?揭秘混合檢索的奧秘!-AI.x社區(qū)

成本與開(kāi)發(fā)便捷性的權(quán)衡

對(duì)于開(kāi)發(fā)者而言,選擇合適的模型不僅要考慮性能,還需權(quán)衡成本與開(kāi)發(fā)便捷性。Gemini 1.5在長(zhǎng)上下文處理上的優(yōu)勢(shì)意味著在某些應(yīng)用場(chǎng)景下,可以跳過(guò)傳統(tǒng)的檢索步驟,直接將整個(gè)數(shù)據(jù)集輸入模型進(jìn)行處理。然而,這種做法可能帶來(lái)較高的計(jì)算成本與資源消耗,但為開(kāi)發(fā)人員提供了更簡(jiǎn)化的開(kāi)發(fā)體驗(yàn),適合對(duì)開(kāi)發(fā)效率有較高要求的項(xiàng)目。

通過(guò)對(duì)比分析,我們可以得出:

  • O1模型在中短上下文下表現(xiàn)優(yōu)異,適合需要高準(zhǔn)確性和相關(guān)性的應(yīng)用場(chǎng)景。
  • Gemini 1.5則更適合處理超長(zhǎng)上下文且對(duì)成本有一定容忍度的項(xiàng)目,提供了一種簡(jiǎn)化的RAG工作流方案。

LLM在長(zhǎng)上下文RAG中的失敗模式分析

盡管大型語(yǔ)言模型在長(zhǎng)上下文RAG任務(wù)中展現(xiàn)了強(qiáng)大的能力,但在實(shí)際應(yīng)用中,仍然存在多種失敗模式。理解這些失敗模式有助于開(kāi)發(fā)者在構(gòu)建應(yīng)用時(shí)采取相應(yīng)的優(yōu)化措施,提升系統(tǒng)的整體性能與穩(wěn)定性。

OpenAI O1-preview與O1-mini的失敗模式

在對(duì)O1模型的失敗案例進(jìn)行分析時(shí),我們發(fā)現(xiàn)其主要失誤類別包括:

  1. 重復(fù)內(nèi)容(repeated_content):模型生成回答時(shí)出現(xiàn)重復(fù)的無(wú)意義詞組或字符,影響回答的可讀性與信息量。
  2. 隨機(jī)內(nèi)容(random_content):生成的回答與上下文內(nèi)容無(wú)關(guān),缺乏邏輯性和語(yǔ)法合理性。
  3. 未遵循指令(fail_follow_inst):未按照問(wèn)題要求生成回答,如在要求基于上下文回答時(shí),模型嘗試進(jìn)行總結(jié)。
  4. 空響應(yīng)(empty_resp):模型未生成任何回答,返回空字符串。
  5. 錯(cuò)誤答案(wrong_answer):盡管遵循了指令,模型提供了錯(cuò)誤的答案。
  6. 拒絕回答(refusal):模型因不確定性或其他原因拒絕回答問(wèn)題。
  7. 因API過(guò)濾導(dǎo)致的任務(wù)失敗:由于安全過(guò)濾規(guī)則,模型未生成回答。

O1-preview 和O1-mini 在處理不同上下文長(zhǎng)度時(shí),特別是在推理步驟的詞元長(zhǎng)度不可預(yù)測(cè)時(shí),可能會(huì)因上下文過(guò)長(zhǎng)而返回空響應(yīng)。此外,在NQ數(shù)據(jù)集中,短上下文下的性能下降表現(xiàn)為模型簡(jiǎn)單地回答“信息不可用”,即便在一些情況下存在支持回答的oracle文檔,模型仍未能提供正確答案。

下面兩個(gè)圖分別展示了O1-preview在Databricks DocsQA和NQ數(shù)據(jù)集上的失敗分析,可以看出不同數(shù)據(jù)集和上下文長(zhǎng)度對(duì)模型表現(xiàn)的影響。

【人工智能】AI如何精準(zhǔn)匹配RAG知識(shí)庫(kù)?揭秘混合檢索的奧秘!-AI.x社區(qū)

【人工智能】AI如何精準(zhǔn)匹配RAG知識(shí)庫(kù)?揭秘混合檢索的奧秘!-AI.x社區(qū)

Google Gemini 1.5 Pro與Flash的失敗模式

Gemini 1.5 模型的失敗模式分析顯示,其主要問(wèn)題在于:

  1. 主題敏感性:生成API對(duì)提示內(nèi)容的主題高度敏感,尤其在NQ基準(zhǔn)測(cè)試中,由于提示內(nèi)容被過(guò)濾,導(dǎo)致了大量任務(wù)失敗。
  2. 拒絕回答:在FinanceBench數(shù)據(jù)集中,模型經(jīng)常因?yàn)闄z索不到相關(guān)信息而拒絕回答,尤其在短上下文(2k詞元)下,96.2%的“拒絕”情況發(fā)生在缺失oracle文檔時(shí)。
  3. BlockedPromptException錯(cuò)誤:由于提示內(nèi)容被API過(guò)濾,導(dǎo)致生成任務(wù)失敗,這類錯(cuò)誤在NQ基準(zhǔn)測(cè)試中較為普遍。

圖3.3至圖3.5展示了Gemini 1.5 Pro在不同數(shù)據(jù)集上的失敗模式分布,可以明顯看出在不同上下文長(zhǎng)度和數(shù)據(jù)集環(huán)境下,模型表現(xiàn)出的特有問(wèn)題。

優(yōu)化長(zhǎng)上下文RAG性能的策略

針對(duì)上述模型的表現(xiàn)與失敗模式,開(kāi)發(fā)者可以采取以下策略優(yōu)化長(zhǎng)上下文RAG的性能,提升應(yīng)用的整體效果。

選擇合適的模型與上下文長(zhǎng)度

根據(jù)具體應(yīng)用需求選擇最合適的模型與上下文長(zhǎng)度,是提升RAG性能的第一步。

  • 中短上下文應(yīng)用:對(duì)于需要高準(zhǔn)確性和相關(guān)性的應(yīng)用,如技術(shù)文檔問(wèn)答、金融報(bào)告分析,推薦使用OpenAI O1-previewO1-mini,在2k至16k詞元的上下文長(zhǎng)度下表現(xiàn)優(yōu)異。
  • 超長(zhǎng)上下文應(yīng)用:對(duì)于需要處理超過(guò)200萬(wàn)詞元的超長(zhǎng)文本,如大型文檔解析、綜合報(bào)告生成,Google Gemini 1.5是更合適的選擇,其在超長(zhǎng)上下文下保持了相對(duì)穩(wěn)定的性能。【人工智能】AI如何精準(zhǔn)匹配RAG知識(shí)庫(kù)?揭秘混合檢索的奧秘!-AI.x社區(qū)

改進(jìn)檢索步驟以提升性能

檢索步驟在RAG流程中扮演著至關(guān)重要的角色,改進(jìn)檢索算法和策略,可以有效提升模型的回答質(zhì)量。

  • 增強(qiáng)檢索相關(guān)性:通過(guò)優(yōu)化檢索算法,確保檢索到的文檔與問(wèn)題高度相關(guān),減少模型生成隨機(jī)或錯(cuò)誤回答的概率。
  • 動(dòng)態(tài)上下文調(diào)整:根據(jù)問(wèn)題的復(fù)雜性和上下文的相關(guān)性,動(dòng)態(tài)調(diào)整輸入的上下文長(zhǎng)度,確保模型在不同任務(wù)中都能獲得足夠的信息支持。【人工智能】AI如何精準(zhǔn)匹配RAG知識(shí)庫(kù)?揭秘混合檢索的奧秘!-AI.x社區(qū)

處理模型的失敗模式

針對(duì)模型在不同場(chǎng)景下的失敗模式,采取相應(yīng)的預(yù)防和修正措施,能夠顯著提高系統(tǒng)的穩(wěn)定性和用戶體驗(yàn)。

  • 內(nèi)容過(guò)濾與指令優(yōu)化:在設(shè)計(jì)提示內(nèi)容時(shí),避免觸發(fā)模型的拒絕回答機(jī)制,采用更加明確和具體的指令,減少因安全過(guò)濾導(dǎo)致的任務(wù)失敗。
  • 多模型協(xié)同:結(jié)合多種模型的優(yōu)勢(shì),采用多模型協(xié)同策略,如在短上下文下優(yōu)先使用O1模型,在超長(zhǎng)上下文下切換至Gemini模型,最大化每種模型的優(yōu)點(diǎn)。
  • 錯(cuò)誤監(jiān)控與反饋機(jī)制:建立完善的錯(cuò)誤監(jiān)控系統(tǒng),實(shí)時(shí)檢測(cè)并記錄模型的失敗情況,采用反饋機(jī)制不斷優(yōu)化提示內(nèi)容和模型選擇策略。

結(jié)論:未來(lái)的發(fā)展與展望

隨著AI技術(shù)的不斷進(jìn)步,長(zhǎng)上下文RAG在各種應(yīng)用場(chǎng)景中的重要性日益凸顯。OpenAI O1模型 的發(fā)布,展示了其在處理長(zhǎng)上下文任務(wù)上的強(qiáng)大能力,超越了之前的GPT-4o模型,為行業(yè)樹(shù)立了新的標(biāo)桿。同時(shí),Google Gemini 1.5 在超長(zhǎng)上下文處理上的獨(dú)特優(yōu)勢(shì),也為開(kāi)發(fā)者提供了更多選擇,特別是在需要處理海量文本數(shù)據(jù)的應(yīng)用中,Gemini 1.5 的優(yōu)勢(shì)尤為明顯。

RAG作為一種減少模型幻覺(jué)(Model Hallucination)并提升模型在私域知識(shí)分析與回答能力的高效方法,受到了廣泛關(guān)注。然而,RAG的成功實(shí)施依賴于知識(shí)召回的準(zhǔn)確性,這直接影響到大語(yǔ)言模型(LLM)的表現(xiàn)。那么,RAG究竟是如何工作的?在實(shí)現(xiàn)過(guò)程中,哪些技術(shù)手段能夠確保知識(shí)召回的精準(zhǔn)性?本文將帶你深入了解這些問(wèn)題,尤其是混合檢索技術(shù)在其中扮演的關(guān)鍵角色。

單一檢索的局限性:為何僅靠關(guān)鍵詞檢索不夠?

在眾多檢索方法中,關(guān)鍵詞檢索無(wú)疑是最常用的一種。它通過(guò)匹配用戶輸入的關(guān)鍵詞與文檔中的關(guān)鍵詞來(lái)返回相關(guān)結(jié)果。然而,關(guān)鍵詞檢索存在明顯的局限性,這些問(wèn)題在實(shí)際應(yīng)用中往往難以忽視。

語(yǔ)義缺失:詞語(yǔ)之間的深層聯(lián)系被忽略

關(guān)鍵詞檢索的最大缺陷之一就是無(wú)法理解詞語(yǔ)之間的語(yǔ)義關(guān)系。舉個(gè)例子,當(dāng)用戶搜索“狗”時(shí),系統(tǒng)可能無(wú)法識(shí)別“犬”與“狗”是同義詞,導(dǎo)致相關(guān)文檔被遺漏。這種語(yǔ)義上的缺失,使得關(guān)鍵詞檢索在處理同義詞或近義詞時(shí)表現(xiàn)不佳。

多義詞問(wèn)題:一詞多義帶來(lái)的困擾

另一個(gè)常見(jiàn)問(wèn)題是多義詞的處理。例如,“蘋果”既可以指水果,也可以指科技公司。如果用戶搜索“蘋果”,系統(tǒng)無(wú)法確定用戶的具體意圖,從而可能返回不相關(guān)的結(jié)果。這種情況下,關(guān)鍵詞檢索的效果大打折扣。

【人工智能】AI如何精準(zhǔn)匹配RAG知識(shí)庫(kù)?揭秘混合檢索的奧秘!-AI.x社區(qū)

實(shí)例分析:?jiǎn)我粰z索的不足

讓我們通過(guò)一個(gè)具體的例子來(lái)更好地理解單一檢索的局限性。假設(shè)我們有以下代碼,通過(guò)關(guān)鍵詞匹配在兩個(gè)文本中尋找最相關(guān)的內(nèi)容:

def main():
    """
    主函數(shù),用于測(cè)試和演示
    """
    text1 = '把商品發(fā)到商鋪'
    text2 = '我想將商品掛到商鋪'
    text3 = '我想找商鋪問(wèn)下商品'

    # calculate_tfidf_similarity: 通過(guò)兩個(gè)文本TF-IDF相似度計(jì)算相似度
    tfidf_similarities2 = calculate_tfidf_similarity(text1, text2)
    tfidf_similarities3 = calculate_tfidf_similarity(text1, text3)

    print(f"\n匹配句子1得分:{tfidf_similarities2[0]} \n\n匹配句子2得分: {tfidf_similarities3[0]} \n\n")

運(yùn)行結(jié)果如下:

匹配句子1得分:0.8164965809277259 

匹配句子2得分:0.8164965809277259

可以看到,盡管text1與text2在語(yǔ)義上更為匹配,但由于關(guān)鍵詞“商品”和“閑魚”在三個(gè)句子中均有出現(xiàn),導(dǎo)致兩個(gè)句子的得分相同。這說(shuō)明,單純依賴關(guān)鍵詞匹配,無(wú)法有效區(qū)分哪些文檔更符合用戶需求。

混合檢索:打破單一檢索的束縛

為了克服單一檢索的局限性,混合檢索應(yīng)運(yùn)而生。混合檢索(Hybrid Retrieval)結(jié)合了多種檢索方法的優(yōu)勢(shì),旨在提升檢索結(jié)果的質(zhì)量和多樣性。通過(guò)將關(guān)鍵詞檢索與語(yǔ)義檢索相結(jié)合,混合檢索能夠更精準(zhǔn)地滿足用戶需求,提供更全面的檢索結(jié)果。

什么是混合檢索?

混合檢索是一種綜合運(yùn)用多種檢索技術(shù)的策略。它不僅依賴于傳統(tǒng)的關(guān)鍵詞匹配,還結(jié)合了語(yǔ)義理解和上下文分析等先進(jìn)技術(shù)。通過(guò)這種方式,混合檢索能夠在保持關(guān)鍵詞檢索高效性的同時(shí),彌補(bǔ)其在語(yǔ)義理解上的不足,從而實(shí)現(xiàn)更高的召回準(zhǔn)確性。

實(shí)現(xiàn)混合檢索的步驟

接下來(lái),我們將通過(guò)代碼示例,詳細(xì)拆解混合檢索的實(shí)現(xiàn)過(guò)程。

def main():
    """
    主函數(shù),用于測(cè)試和演示
    """
    text1 = '把商品發(fā)到商鋪'
    text2 = '我想將商品掛到商鋪'
    text3 = '我想找商鋪問(wèn)下商品'

    # 通過(guò)兩個(gè)文本TF-IDF相似度計(jì)算相似度
    tfidf_similarities2 = calculate_tfidf_similarity(text1, text2)
    tfidf_similarities3 = calculate_tfidf_similarity(text1, text3)

    # 通過(guò)兩個(gè)文本的嵌入相似度計(jì)算相似度
    embedding_similarities2 = calculate_similarity(text1, text2)
    embedding_similarities3 = calculate_similarity(text1, text3) 

    print(f"\n\n語(yǔ)義搜索句子1 {embedding_similarities2[0]} \n\n語(yǔ)義搜索句子2: {embedding_similarities3[0]}")

運(yùn)行結(jié)果:

語(yǔ)義搜索句子1 ('我想將商品掛到閑魚', 0.8553742925917707) 

語(yǔ)義搜索句子2: ('我想找閑魚問(wèn)下商品', 0.6846143988983046)

從結(jié)果中可以看出,語(yǔ)義檢索在區(qū)分句子相關(guān)性方面表現(xiàn)出色,能夠更準(zhǔn)確地識(shí)別出與用戶需求更為契合的句子。

【人工智能】AI如何精準(zhǔn)匹配RAG知識(shí)庫(kù)?揭秘混合檢索的奧秘!-AI.x社區(qū)

加權(quán)計(jì)算

為了進(jìn)一步提升檢索的準(zhǔn)確性,我們可以將關(guān)鍵詞檢索和語(yǔ)義檢索的得分進(jìn)行加權(quán)計(jì)算。這樣,用戶可以根據(jù)自身需求,調(diào)整關(guān)鍵詞檢索與語(yǔ)義檢索的權(quán)重,從而獲得最優(yōu)的檢索結(jié)果。

def main():
    """
    主函數(shù),用于測(cè)試和演示
    """
    text1 = '把商品發(fā)到商鋪'
    text2 = '我想將商品掛到商鋪'
    text3 = '我想找商鋪問(wèn)下商品'

    # 通過(guò)兩個(gè)文本TF-IDF相似度計(jì)算相似度
    tfidf_similarities2 = calculate_tfidf_similarity(text1, text2)
    tfidf_similarities3 = calculate_tfidf_similarity(text1, text3)

    embedding_similarities2 = calculate_similarity(text1, text2)
    embedding_similarities3 = calculate_similarity(text1, text3) 
    
    Semantic_Proportio = 0.8
    Word_Proportion = 0.2

    # 根據(jù)傳進(jìn)來(lái)的權(quán)重計(jì)算最終得分
    final_score2 = calculate_final_score(embedding_similarities2[0][1], tfidf_similarities2[0], Semantic_Proportio, Word_Proportion)
    final_score3 = calculate_final_score(embedding_similarities3[0][1], tfidf_similarities3[0], Semantic_Proportio, Word_Proportion)

    print(f"最終語(yǔ)句1得分: {final_score2} \n\n最終語(yǔ)句2得分: {final_score3}")

運(yùn)行結(jié)果:

最終語(yǔ)句1得分: 0.8475987502589617 

最終語(yǔ)句2得分: 0.7109908353041888

通過(guò)混合檢索,系統(tǒng)能夠更精準(zhǔn)地識(shí)別出最符合用戶需求的句子,大幅提升了檢索結(jié)果的質(zhì)量和準(zhǔn)確性。

完整代碼展示

為了幫助大家更好地理解混合檢索的實(shí)現(xiàn),以下是完整的代碼示例。請(qǐng)注意,運(yùn)行代碼前需將??dashscope??的API key替換為你自己的有效key。

import dashscope
from http import HTTPStatus
import numpy as np
import jieba
from jieba.analyse import extract_tags
import math

# 初始化dashscope,替換qwen的api key
dashscope.api_key = 'sk-xxxx'

def embed_text(text):
    """
    使用dashscope API獲取文本的嵌入向量
    :param text: 輸入的文本
    :return: 文本的嵌入向量,如果失敗則返回None
    """
    resp = dashscope.TextEmbedding.call(
        model=dashscope.TextEmbedding.Models.text_embedding_v2,
        input=text)
    if resp.status_code == HTTPStatus.OK:
        return resp.output['embeddings'][0]['embedding']
    else:
        print(f"Failed to get embedding: {resp.status_code}")
        returnNone

def cosine_similarity(vec1, vec2):
    """
    計(jì)算兩個(gè)向量之間的余弦相似度
    :param vec1: 第一個(gè)向量
    :param vec2: 第二個(gè)向量
    :return: 余弦相似度
    """
    dot_product = np.dot(vec1, vec2)
    norm_vec1 = np.linalg.norm(vec1)
    norm_vec2 = np.linalg.norm(vec2)
    return dot_product / (norm_vec1 * norm_vec2)

def calculate_similarity(text1, text2):
    """
    計(jì)算兩個(gè)文本之間的相似度
    :param text1: 第一個(gè)文本
    :param text2: 第二個(gè)文本,可以包含多個(gè)句子,用逗號(hào)分隔
    :return: 每個(gè)句子的相似度列表,格式為 (句子, 相似度)
    """
    embedding1 = embed_text(text1)
    if embedding1 isNone:
        return []

    similarities = []
    sentences = [sentence.strip() for sentence in text2.split(',') if sentence.strip()]

    for sentence in sentences:
        embedding2 = embed_text(sentence)
        if embedding2 isNone:
            continue
        similarity = cosine_similarity(embedding1, embedding2)
        similarities.append((sentence, similarity))

    return similarities

def extract_keywords(text):
    """
    提取文本中的關(guān)鍵詞
    :param text: 輸入的文本
    :return: 關(guān)鍵詞列表
    """
    return extract_tags(text)

def cosine_similarity_tfidf(vec1, vec2):
    """
    計(jì)算兩個(gè)TF-IDF向量之間的余弦相似度
    :param vec1: 第一個(gè)TF-IDF向量
    :param vec2: 第二個(gè)TF-IDF向量
    :return: 余弦相似度
    """
    intersection = set(vec1.keys()) & set(vec2.keys())
    numerator = sum(vec1[x] * vec2[x] for x in intersection)
    sum1 = sum(vec1[x] ** 2for x in vec1)
    sum2 = sum(vec2[x] ** 2for x in vec2)
    denominator = math.sqrt(sum1) * math.sqrt(sum2)
    return numerator / denominator if denominator else0.0

def calculate_tfidf_similarity(text, text2):
    """
    計(jì)算兩個(gè)文本之間的TF-IDF相似度
    :param text: 第一個(gè)文本
    :param text2: 第二個(gè)文本,可以包含多個(gè)文檔,用豎線分隔
    :return: 每個(gè)文檔的TF-IDF相似度列表
    """
    documents = [doc for doc in text2.split('|') if doc.strip()]
    query_keywords = extract_keywords(text)
    documents_keywords = [extract_keywords(doc) for doc in documents]

    query_keyword_counts = {kw: query_keywords.count(kw) for kw in set(query_keywords)}
    total_documents = len(documents)
    all_keywords = set(kw for doc in documents_keywords for kw in doc)
    keyword_idf = {kw: math.log((1 + total_documents) / (1 + sum(1for doc in documents_keywords if kw in doc))) + 1for kw in all_keywords}

    query_tfidf = {kw: count * keyword_idf.get(kw, 0) for kw, count in query_keyword_counts.items()}
    documents_tfidf = [{kw: doc.count(kw) * keyword_idf.get(kw, 0) for kw in set(doc)} for doc in documents_keywords]

    return [cosine_similarity_tfidf(query_tfidf, doc_tfidf) for doc_tfidf in documents_tfidf]

def calculate_final_score(embedding_similarity, tfidf_similarity, w1=0.5, w2=0.5):
    """
    計(jì)算最終得分,結(jié)合語(yǔ)義相似度和TF-IDF相似度
    :param embedding_similarity: 語(yǔ)義相似度
    :param tfidf_similarity: TF-IDF相似度
    :param w1: 語(yǔ)義相似度的權(quán)重
    :param w2: TF-IDF相似度的權(quán)重
    :return: 最終得分
    """
    return w1 * embedding_similarity + w2 * tfidf_similarity

def main():
    """
    主函數(shù),用于測(cè)試和演示
    """
    text1 = '把商品發(fā)到商鋪'
    text2 = '我想將商品掛到商鋪'
    text3 = '我想找商鋪問(wèn)下商品'

    tfidf_similarities2 = calculate_tfidf_similarity(text1, text2)
    tfidf_similarities3 = calculate_tfidf_similarity(text1, text3)

    embedding_similarities2 = calculate_similarity(text1, text2)
    embedding_similarities3 = calculate_similarity(text1, text3)

    Semantic_Proportio = 0.8
    Word_Proportion = 0.2

    final_score2 = calculate_final_score(embedding_similarities2[0][1], tfidf_similarities2[0], Semantic_Proportio, Word_Proportion)
    final_score3 = calculate_final_score(embedding_similarities3[0][1], tfidf_similarities3[0], Semantic_Proportio, Word_Proportion)

    print(f"最終語(yǔ)句1得分: {final_score2} \n\n最終語(yǔ)句2得分: {final_score3}")

if __name__ == '__main__':
    main()

通過(guò)上述代碼,開(kāi)發(fā)者可以輕松實(shí)現(xiàn)混合檢索功能,結(jié)合關(guān)鍵詞與語(yǔ)義檢索的優(yōu)勢(shì),提升知識(shí)庫(kù)匹配的精準(zhǔn)度。

總結(jié)

混合檢索技術(shù)通過(guò)整合關(guān)鍵詞檢索與語(yǔ)義檢索的優(yōu)勢(shì),實(shí)現(xiàn)了多維度的知識(shí)召回,顯著提高了檢索結(jié)果的準(zhǔn)確性和全面性。

希望本文的分享能夠?yàn)槟阍赗AG知識(shí)庫(kù)的構(gòu)建與優(yōu)化過(guò)程中提供有價(jià)值的參考與啟示。

本文轉(zhuǎn)載自??愛(ài)學(xué)習(xí)的蝌蚪??,作者:hpstream

已于2025-4-11 10:55:33修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
波多野结衣啪啪| 国产熟妇搡bbbb搡bbbb| www亚洲人| 精品中文字幕一区二区| 欧美日韩成人在线视频| 欧美 日本 国产| 成人国产网站| 亚洲国产成人av好男人在线观看| 欧美国产二区| 99久久亚洲精品日本无码| 亚洲国产日本| 久久久国产精品免费| 亚洲 欧美 日韩在线| 777午夜精品电影免费看| 亚洲精品国产无天堂网2021| 欧美在线视频二区| 精品人妻久久久久一区二区三区| 久久精品电影| 九九九热精品免费视频观看网站| 蜜桃精品成人影片| 玖玖玖电影综合影院| 在线亚洲高清视频| 日韩亚洲欧美视频| 精产国品自在线www| 久久综合网色—综合色88| 亚洲va久久久噜噜噜久久天堂| 亚洲 欧美 成人| 国语精品一区| 久久偷看各类女兵18女厕嘘嘘 | 国产·精品毛片| 国产精品pans私拍| 日韩人妻无码一区二区三区99| 日韩在线综合| 亚洲人成电影网站色| 欧美图片自拍偷拍| 免费观看在线一区二区三区| 欧美日韩精品一区二区三区| 六月丁香婷婷激情| 91禁在线看| 一区二区欧美精品| 欧美 国产 精品| 在线观看黄av| 国产三区在线成人av| 久久国产日韩欧美| 人人妻人人澡人人爽久久av | 亚洲s色大片| 久久久久久免费网| 精品欧美国产一区二区三区不卡| 精品国产一级片| 国产一区二区三区综合| 成人黄色生活片| 在线观看黄色国产| 麻豆精品一二三| 国产精品免费一区豆花| 中文字幕乱伦视频| 免费人成在线不卡| 国产在线不卡精品| 国产欧美久久久| 久久成人免费电影| 91麻豆蜜桃| 午夜精品一二三区| 成人午夜激情影院| 久久av一区二区三区亚洲| 外国精品视频在线观看 | 色婷婷av在线| 一卡二卡三卡日韩欧美| 日韩精品在线视频免费观看| 国产夫妻在线播放| 日韩欧美在线视频免费观看| 久久久久免费精品| av在线不卡精品| 欧美日韩国产美| 特级黄色片视频| 国产成人福利av| 精品性高朝久久久久久久| av小说在线观看| 热久久天天拍国产| 久热精品视频在线免费观看| 91高清免费看| 一区久久精品| 国产mv久久久| 97人妻人人澡人人爽人人精品| 国产精品一二三四| 久久久精品有限公司| 成人免费在线电影| 一区二区三区国产| 久久精品免费一区二区| 最新日韩一区| 欧美成人免费网站| 蜜桃无码一区二区三区| 久久精品欧美一区| 欧美亚洲日本黄色| 一级黄色片在线| 成人精品一区二区三区四区 | 视频一区二区三区国产| 国产欧美1区2区3区| 国产手机视频在线观看| 亚洲少妇视频| 欧美丰满美乳xxx高潮www| 国产69视频在线观看| 欧美精选视频在线观看| 欧美二区在线播放| 国产精品高清无码| 成人av在线资源| 亚洲欧美日韩综合一区| h片精品在线观看| 欧美日韩精品系列| 亚洲激情 欧美| 久久久久电影| 国产不卡精品视男人的天堂| www.五月激情| 国产精品美女视频| 亚洲中文字幕无码不卡电影| 国产一区二区| 中文字幕亚洲情99在线| av黄色在线看| 国产激情一区二区三区桃花岛亚洲| 欧美午夜精品理论片a级大开眼界| 亚洲色图美国十次| 欧美裸体一区二区三区| 亚洲性猛交xxxx乱大交| 一道本一区二区| 97久久精品午夜一区二区| av网站在线播放| 91久久一区二区| 三级电影在线看| 亚洲视频免费| 亚洲在线视频观看| 韩国中文字幕在线| 欧美丝袜丝交足nylons图片| 中日韩精品一区二区三区| 伊人成人在线| 国产精品久久九九| 日本高清在线观看视频| 欧美一区二区三区视频免费| 999久久久国产| 日韩成人精品视频| 久久久99爱| 蜜桃视频www网站在线观看| 日韩写真欧美这视频| 可以直接看的黄色网址| 国产一区欧美日韩| 免费观看黄色的网站| 欧美亚洲人成在线| 久久久国产91| 999免费视频| 亚洲乱码国产乱码精品精的特点 | 成人动漫一区二区| 男人天堂av片| 国产调教精品| 91精品国产91久久久久久不卡| 丰满人妻一区二区三区四区53| 亚洲视频免费在线| av在线网站免费观看| 欧美激情无毛| 国产亚洲第一区| 日本色护士高潮视频在线观看| 欧美电视剧在线看免费| 精品一区二区三区人妻| 99riav一区二区三区| aa免费在线观看| 日韩一区自拍| 91九色在线免费视频| 欧美1234区| 亚洲第一中文字幕| 日本一区二区免费电影| 久久精品视频一区二区| 亚洲天堂2018av| 久久精品亚洲人成影院| av一区二区三区免费| 91超碰国产在线| 亚洲欧美成人一区二区在线电影| 无码人妻精品一区二区蜜桃色欲| 国产精品久久久久久久午夜片| 中文字幕中文在线| 欧美成人一品| 久久久99爱| 欧美成人黄色| 欧美极品美女视频网站在线观看免费| 天天射,天天干| 欧美在线综合视频| 麻豆精品一区二区三区视频| 91在线视频18| 午夜剧场在线免费观看| 一区二区亚洲| 相泽南亚洲一区二区在线播放 | 日韩色在线观看| 97人人澡人人爽人人模亚洲| 欧美极品另类videosde| 日本美女视频网站| 免费成人在线观看视频| 日韩中字在线观看| 日韩在线观看电影完整版高清免费悬疑悬疑| 亚洲综合色av| 性欧美hd调教| 久久久亚洲国产天美传媒修理工| 国产尤物视频在线| 精品国产制服丝袜高跟| 最近中文字幕在线观看视频| 亚洲小说欧美激情另类| 男女男精品视频网站| 99视频在线精品| 奇米视频7777| 亚洲影院在线| 一级性生活视频| 精品美女久久久| 国产亚洲欧美一区二区三区| 四虎视频在线精品免费网址| 欧美自拍视频在线| 宅男网站在线免费观看| 这里只有精品视频| 欧美扣逼视频| 精品国产一区二区三区四区四| 一区二区三区免费在线| 色综合网色综合| 国产精彩视频在线| 亚洲欧美在线高清| 亚洲精品午夜视频| 99久久伊人精品| 日本r级电影在线观看| 蜜桃av噜噜一区| 成人黄色片视频| 亚洲免费黄色| 国产小视频免费| 国产精品久久久久久麻豆一区软件| 久久久一本精品99久久精品66 | 久久99久久99小草精品免视看| 国产熟女高潮视频| 国产亚洲福利| 国产日本在线播放| 激情成人亚洲| 男人天堂新网址| 欧美三级第一页| 日本道在线视频| 91成人精品| 只有这里有精品| 91九色精品国产一区二区| 色噜噜一区二区| 久草成人资源| 欧美激情专区| 久草在线成人| 欧美日韩精品一区| 欧美禁忌电影网| 欧美日韩一区综合| 国产日产精品一区二区三区四区的观看方式 | 成人一道本在线| 久久免费精品国产| 成人综合婷婷国产精品久久 | a级日韩大片| 成人欧美一区二区三区视频| 日韩一级淫片| 国产99视频精品免费视频36| 国产精品网站在线看| 国产日本一区二区三区| 日韩伦理一区二区三区| 久久综合九色欧美狠狠| 伊人成综合网yiren22| 欧美一区1区三区3区公司| 清纯唯美日韩| 最新精品视频| 欧美午夜一区二区福利视频| 人人妻人人做人人爽| 亚洲欧洲日本mm| 黄色av免费在线播放| 麻豆精品在线观看| 欧美69精品久久久久久不卡| 成人夜色视频网站在线观看| 成年人的黄色片| 国产亚洲精品aa午夜观看| 波多野结衣欲乱| 亚洲一区二区三区视频在线| 中文字幕在线字幕中文| 在线免费一区三区| 国产精品久久久久久无人区| 日韩精品中文字幕一区二区三区| 日韩在线观看视频一区| 国产一区二区激情| 50度灰在线| 青青草原成人在线视频| 91成人在线网站| 国产九色精品| av中字幕久久| 天天做天天躁天天躁| 久久久久久婷| 中文字幕 欧美 日韩| 久久久精品综合| 色欲人妻综合网| 色综合天天综合色综合av| 国产乱淫a∨片免费视频| 亚洲激情自拍图| av大片在线看| 国内精品视频久久| 国产精品亲子伦av一区二区三区| 99国产超薄肉色丝袜交足的后果| 久久综合影院| 日韩一区二区高清视频| 日本最新不卡在线| 亚洲美女高潮久久久| 国产日韩av一区二区| 国产午夜精品无码| 欧美老肥妇做.爰bbww| 日批视频在线播放| 久久伊人色综合| 成人影院大全| 国产精品大全| 久久一区91| 99热在线这里只有精品| 国产一区二区三区av电影| 一区二区伦理片| 香蕉久久一区二区不卡无毒影院 | 这里有精品可以观看| 91免费精品国偷自产在线| 女厕嘘嘘一区二区在线播放| 欧美黄网在线观看| 99福利在线观看| 国产成人一级电影| 国产一区二区精彩视频| 欧美亚洲国产一卡| 免费福利在线视频| 97色在线视频观看| 57pao国产一区二区| 亚洲欧洲一区二区| 三级成人在线视频| 国产又爽又黄无码无遮挡在线观看| 亚洲精品菠萝久久久久久久| ,亚洲人成毛片在线播放| 国产一区二区三区在线视频| 在线视频cao| 久久精品二区| 在线成人h网| 丰满人妻一区二区三区大胸| 亚洲欧美色一区| 一卡二卡在线观看| 深夜成人在线观看| 国产精品久久久久77777丨| 日本不卡在线播放| 久久久亚洲一区| 国产成人av一区二区三区不卡| 午夜私人影院久久久久| 十八禁一区二区三区| 97视频在线观看播放| 国产精品流白浆在线观看| 日本手机在线视频| 成人的网站免费观看| 日韩黄色三级视频| 亚洲精品美女视频| 成人免费看黄| 欧美性色黄大片人与善| 日本成人在线不卡视频| 91麻豆制片厂| 精品视频在线视频| 免费日本一区二区三区视频| 成人黄色在线播放| 欧美午夜在线视频| 中文字幕一区二区人妻电影丶| 亚洲福利电影网| 天堂资源中文在线| 国产精品第100页| 日韩一区二区在线免费| xxxx在线免费观看| 亚洲综合免费观看高清完整版在线 | 快she精品国产999| www成人啪啪18软件| 欧美一区二区人人喊爽| 97久久人人超碰caoprom| 久久超碰亚洲| 蜜桃精品在线观看| 九九精品在线观看视频| 亚洲第一黄色网| 亚洲爱爱视频| 大桥未久一区二区| 成人黄色在线视频| 丰满熟女人妻一区二区三| 九九视频这里只有精品| 免费观看成人www动漫视频| 国产真实乱子伦| |精品福利一区二区三区| 粉嫩av一区二区夜夜嗨| 日本一区二区在线免费播放| 国产电影一区二区在线观看| 又色又爽又黄18网站| 色哟哟一区二区三区| 超碰在线免费播放| 另类视频在线观看+1080p| 久久99国产精品久久| 尤物视频在线观看国产| 中文日韩在线观看| 国产成人av毛片| 亚洲欧美aaa| 亚洲.国产.中文慕字在线| av影片在线看| 国内精品二区| 韩日精品视频一区| 久久久久99精品成人片我成大片| 久久久国产精品x99av | 91tv亚洲精品香蕉国产一区| 日本免费成人网| 欧美国产97人人爽人人喊| 亚洲精品字幕在线| 国产精品入口尤物|