RAG高頻問(wèn)答對(duì)緩存,不用bm25
● 高頻問(wèn)答對(duì)數(shù)據(jù)特點(diǎn)量少不會(huì)經(jīng)常改變?!?可以改用bge-m3模型將高頻問(wèn)答數(shù)據(jù)進(jìn)行稠密向量編碼存儲(chǔ)到內(nèi)存或者milvus向量數(shù)據(jù)庫(kù)中。在構(gòu)建企業(yè)級(jí)RAGRetrieval-Augmented Generation應(yīng)用時(shí)我們常常面臨一個(gè)挑戰(zhàn)如何快速、準(zhǔn)確地響應(yīng)用戶的高頻問(wèn)題傳統(tǒng)的基于關(guān)鍵詞匹配的BM25算法在處理這類問(wèn)題時(shí)往往顯得力不從心。本文將介紹一種更高效的解決方案使用BGE-M3模型對(duì)高頻問(wèn)答數(shù)據(jù)進(jìn)行稠密向量編碼并將其存儲(chǔ)到內(nèi)存或Milvus向量數(shù)據(jù)庫(kù)中實(shí)現(xiàn)高性能的語(yǔ)義檢索。痛點(diǎn)分析為什么BM25不適合高頻問(wèn)答緩存BM25是一種經(jīng)典的稀疏檢索算法它依賴于詞頻和逆文檔頻率來(lái)計(jì)算相關(guān)性。雖然它在處理長(zhǎng)文本和關(guān)鍵詞匹配方面表現(xiàn)優(yōu)異但在高頻問(wèn)答場(chǎng)景下存在以下明顯短板語(yǔ)義理解能力弱BM25無(wú)法捕捉“同義詞”、“近義詞”或“句式變換”背后的語(yǔ)義關(guān)聯(lián)。例如用戶問(wèn)“怎么重置密碼”和“忘記密碼怎么辦”BM25可能因?yàn)殛P(guān)鍵詞不重合而返回低分。泛化能力差對(duì)于口語(yǔ)化、簡(jiǎn)寫(xiě)或錯(cuò)別字較多的查詢BM25的召回率會(huì)急劇下降。無(wú)法利用上下文BM25是獨(dú)立的詞袋模型無(wú)法理解問(wèn)題的上下文語(yǔ)境。因此對(duì)于需要高精度、高響應(yīng)速度的高頻問(wèn)答場(chǎng)景我們需要一種更智能的檢索方式。解決方案BGE-M3 向量數(shù)據(jù)庫(kù)為什么選擇BGE-M3BGE-M3是由智源研究院推出的多語(yǔ)言、多功能嵌入模型具有以下優(yōu)勢(shì)強(qiáng)大的語(yǔ)義理解能力能夠精準(zhǔn)捕捉查詢與文檔之間的深層語(yǔ)義關(guān)系。支持多種檢索模式除了稠密向量檢索還支持稀疏檢索和多向量檢索靈活性高。中文優(yōu)化在中文語(yǔ)境下表現(xiàn)優(yōu)異特別適合國(guó)內(nèi)企業(yè)的RAG系統(tǒng)。開(kāi)源免費(fèi)社區(qū)活躍易于集成和部署。技術(shù)架構(gòu)設(shè)計(jì)我們的目標(biāo)是構(gòu)建一個(gè)高頻問(wèn)答對(duì)的語(yǔ)義緩存層其核心流程如下數(shù)據(jù)準(zhǔn)備收集歷史高頻問(wèn)答對(duì)Question-Answer Pairs確保數(shù)據(jù)質(zhì)量。向量化編碼使用BGE-M3模型將問(wèn)題和答案分別編碼為稠密向量。存儲(chǔ)管理將向量及其對(duì)應(yīng)的原始問(wèn)答數(shù)據(jù)存儲(chǔ)到內(nèi)存如Redis或Milvus向量數(shù)據(jù)庫(kù)中。檢索服務(wù)當(dāng)用戶提問(wèn)時(shí)先將問(wèn)題編碼為向量然后在向量庫(kù)中進(jìn)行相似度搜索返回最匹配的問(wèn)答對(duì)。緩存更新定期或?qū)崟r(shí)地將新的高頻問(wèn)答對(duì)加入緩存淘汰低頻或過(guò)時(shí)的條目。代碼示例Python Milvus以下是使用BGE-M3和Milvus實(shí)現(xiàn)高頻問(wèn)答緩存的簡(jiǎn)化示例from sentence_transformers import SentenceTransformer from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection import numpy as np # 1. 加載BGE-M3模型 model SentenceTransformer(BAAI/bge-m3) # 2. 連接Milvus connections.connect(default, hostlocalhost, port19530) # 3. 定義集合Schema fields [ FieldSchema(nameid, dtypeDataType.INT64, is_primaryTrue, auto_idTrue), FieldSchema(namequestion_vector, dtypeDataType.FLOAT_VECTOR, dim768), # BGE-M3輸出維度 FieldSchema(nameanswer_text, dtypeDataType.VARCHAR, max_length2048) ] schema CollectionSchema(fields, High-Frequency QA Cache) collection Collection(qa_cache, schema) # 4. 插入高頻問(wèn)答對(duì) questions [怎么重置密碼, 忘記密碼怎么辦] answers [請(qǐng)?jiān)L問(wèn)設(shè)置頁(yè)面點(diǎn)擊‘重置密碼’按鈕。, 您可以通過(guò)手機(jī)號(hào)或郵箱找回。] # 編碼問(wèn)題 question_vectors model.encode(questions).tolist() # 插入數(shù)據(jù) entities [ question_vectors, answers ] collection.insert(entities) collection.flush() # 5. 創(chuàng)建索引并加載 index_params { metric_type: L2, index_type: IVF_FLAT, params: {nlist: 128} } collection.create_index(question_vector, index_params) collection.load() # 6. 檢索示例 query_question 我忘了密碼 query_vector model.encode([query_question]).tolist() search_params {metric_type: L2, params: {nprobe: 10}} results collection.search(query_vector, question_vector, search_params, limit1, output_fields[answer_text]) for hits in results: for hit in hits: print(f匹配答案: {hit.entity.get(answer_text)})性能優(yōu)化建議分層緩存策略將最高頻的Top 100問(wèn)答對(duì)存儲(chǔ)在內(nèi)存中如Redis其余存儲(chǔ)在Milvus中實(shí)現(xiàn)毫秒級(jí)響應(yīng)。動(dòng)態(tài)更新機(jī)制通過(guò)監(jiān)控用戶提問(wèn)日志自動(dòng)識(shí)別新的高頻問(wèn)題并加入緩存。閾值過(guò)濾設(shè)置相似度閾值如0.85低于閾值的查詢直接走常規(guī)RAG流程避免誤匹配。模型微調(diào)如果領(lǐng)域?qū)I(yè)性強(qiáng)可對(duì)BGE-M3進(jìn)行微調(diào)進(jìn)一步提升檢索精度。總結(jié)通過(guò)將高頻問(wèn)答對(duì)從傳統(tǒng)的BM25檢索升級(jí)為基于BGE-M3的稠密向量檢索我們不僅提升了系統(tǒng)的響應(yīng)速度更大幅增強(qiáng)了語(yǔ)義理解的準(zhǔn)確性。這種“緩存向量檢索”的混合架構(gòu)是構(gòu)建高性能、高可用RAG系統(tǒng)的關(guān)鍵一環(huán)。??????????

相關(guān)新聞

Selenium與ChromeDriver安裝配置全攻略:從版本匹配到環(huán)境搭建

Selenium與ChromeDriver安裝配置全攻略:從版本匹配到環(huán)境搭建

1. 項(xiàng)目概述:從零到一搞定Selenium與ChromeDriver 如果你剛開(kāi)始接觸Web自動(dòng)化測(cè)試或者數(shù)據(jù)抓取,Selenium和ChromeDriver這對(duì)組合幾乎是繞不開(kāi)的起點(diǎn)。表面上看,安裝配置無(wú)非就是幾條 pip install 命令和下載一個(gè)驅(qū)動(dòng)文件,但實(shí)際…

2026/8/1 17:11:47 閱讀更多
行業(yè)突破!國(guó)內(nèi)首個(gè)“產(chǎn)業(yè)知識(shí)Token”上線服務(wù),上奇打通產(chǎn)業(yè)智能體落地最后一公里

行業(yè)突破!國(guó)內(nèi)首個(gè)“產(chǎn)業(yè)知識(shí)Token”上線服務(wù),上奇打通產(chǎn)業(yè)智能體落地最后一公里

隨著大模型與AI智能體技術(shù)快速迭代,產(chǎn)業(yè)AI正式邁入規(guī)模化落地階段。但當(dāng)前通用大模型與原生AI智能體普遍存在產(chǎn)業(yè)知識(shí)匱乏、數(shù)據(jù)可信度弱、專業(yè)數(shù)據(jù)調(diào)用復(fù)雜三大痛點(diǎn),無(wú)法滿足招商引資、產(chǎn)業(yè)治理、投資研判、智能決策等嚴(yán)肅產(chǎn)業(yè)場(chǎng)景的嚴(yán)謹(jǐn)需求&#xff0…

2026/8/1 17:11:47 閱讀更多
【2.Python 輸入兩數(shù)實(shí)現(xiàn)加減運(yùn)算】

【2.Python 輸入兩數(shù)實(shí)現(xiàn)加減運(yùn)算】

題目:要求輸入兩個(gè)數(shù)x與y,分別求出xy的結(jié)果和x-y的結(jié)果因?yàn)闆](méi)有說(shuō)明x和y是什么類型,所以可以用floatx float(input("請(qǐng)輸入x的值:")) #從鍵盤(pán)上接受的數(shù)據(jù)全都是字符串類型 y float(input("請(qǐng)輸入y的值:"))…

2026/8/1 17:11:47 閱讀更多
emlearn API完全參考:C與Python接口使用指南

emlearn API完全參考:C與Python接口使用指南

emlearn API完全參考:C與Python接口使用指南 【免費(fèi)下載鏈接】emlearn Machine Learning inference engine for Microcontrollers and Embedded devices 項(xiàng)目地址: https://gitcode.com/gh_mirrors/em/emlearn emlearn是一款專為微控制器和嵌入式設(shè)備設(shè)計(jì)的機(jī)…

2026/8/1 20:32:50 閱讀更多
阿里云rds,誤刪數(shù)據(jù)后,如何找回

阿里云rds,誤刪數(shù)據(jù)后,如何找回

教訓(xùn):一定要備份,一定要備份,一定要備份!我在晚上20點(diǎn)的時(shí)候,操作了刪除重復(fù)數(shù)據(jù),指引說(shuō)要備份。我還嫌麻煩,沒(méi)有備份。幸好,阿里云提供了很好的工具,可以恢復(fù)到指定時(shí)間點(diǎn)的數(shù)據(jù)。還…

2026/8/1 20:32:50 閱讀更多
模塊化AI編程助手架構(gòu):基于上下文聚合與協(xié)議擴(kuò)展的智能編碼系統(tǒng)解析

模塊化AI編程助手架構(gòu):基于上下文聚合與協(xié)議擴(kuò)展的智能編碼系統(tǒng)解析

模塊化AI編程助手架構(gòu):基于上下文聚合與協(xié)議擴(kuò)展的智能編碼系統(tǒng)解析 【免費(fèi)下載鏈接】continue open-source coding agent 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/co/continue Continue作為開(kāi)源AI編程助手,其核心創(chuàng)新在于構(gòu)建了一個(gè)基于…

2026/8/1 20:32:50 閱讀更多
如何配置Princess-connection-farm模擬器多開(kāi)?雷電/藍(lán)疊高效掛機(jī)攻略

如何配置Princess-connection-farm模擬器多開(kāi)?雷電/藍(lán)疊高效掛機(jī)攻略

如何配置Princess-connection-farm模擬器多開(kāi)?雷電/藍(lán)疊高效掛機(jī)攻略 【免費(fèi)下載鏈接】Princess-connection-farm 國(guó)服PCR公主連結(jié) 多開(kāi)自動(dòng)農(nóng)場(chǎng)腳本 基于opencvUIAutomator 項(xiàng)目地址: https://gitcode.com/gh_mirrors/pr/Princess-connection-farm Princess…

2026/8/1 20:32:50 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/1 0:09:33 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/1 0:09:33 閱讀更多