当前位置: 首页 > news >正文

RAG 检索质量从 60% 到 90%:混合检索 + 重排序的完整实践

纯向量检索用 Embedding 模型,用户问「振动异常」,知识库写「振动超标」——搜不到。混合检索就是答案。

单一检索的局限

上篇我搭好了 RAG 管道:文本分块 → Embedding → Milvus → 检索。跑 10 条测试查询,纯向量检索的命中率约 60%。

60% 的意思是:10 个问题中有 4 个搜不到正确答案。

为什么搜不到?

用户问:「传送带跑偏了怎么调?」
知识库写:「传送带跑偏调整方法:1)调节张紧装置…」

Embedding 模型觉得这两句话不太像 → 向量距离远 → 检索失败。

Embedding 模型理解「语义」,但它不完全懂中文口语和专业术语的细微差异。这是所有 Embedding 的共性问题——尤其在使用多语言通用模型时。

方案:向量 + 关键词双路召回

Dense(向量检索)擅长语义匹配——「温度高」能匹配「发热异常」。

Sparse(关键词检索)擅长精确匹配——「传送带」必须命中「传送带」。

两者互补。这就是混合检索(Hybrid Search)。

步骤 1:加 BM25 稀疏检索

BM25 是经典的 TF-IDF 变体,核心逻辑是「词在少数文档中出现频率高 = 该文档和这个词相关」。

我在Bm25Retriever中实现了一个简化版:

Bm25Retriever bm25 = new Bm25Retriever(); bm25.index(documents); // 用户问 "传送带跑偏" List<ScoredDoc> results = bm25.search("传送带跑偏怎么调", 10); // → 能精确匹配到包含「传送带」和「调」的文档

步骤 2:RRF 融合

两路检索结果怎么合并?我用了RRF(Reciprocal Rank Fusion)——一种简单但有效的融合算法:

RRF_score(d) = sum over rankings: 1 / (k + rank(d))
k = 60(经典取值)

每个文档在两个排行榜中的排名越靠前,RRF 分数越高。

RrfFusion fusion = new RrfFusion(); List<String> fused = fusion.fuse(denseResults, sparseResults, 5);

步骤 3:LLM 重排序

拿到融合后的 Top-5 候选,再用 LLM 精排——这是最后一公里。虽然这次编码里没上专门的 Cross-Encoder,但原理一样:候选文档 + 用户问题 → LLM 判断相关性 → 选 Top-3

实验数据:三种策略对比

我在 10 条测试查询上跑了三种策略:

策略命中率MRR
Dense Only(纯向量)~60%0.42
BM25 Only(纯关键词)~70%0.48
RRF Fused(混合检索)~90%0.68

Dense Only 输在哪?「传感器信号漂移」这条,Embedding 模型没理解「漂移」=「零点漂移」,搜到了不相关的电气故障文档。

BM25 Only 输在哪?「CNC 主轴异响」这条,知识库里写的是「CNC主轴异响」,BM25 对「异响」和「异常噪音」这种同义词完全没辙。

RRF Fused 为什么赢?两种检索互补——向量错了的,关键词能兜底;关键词漏了的,向量能补上。

代码:在 Agent 中启用混合检索

我把整个混合检索管线封装成了带评估的端到端实验:

# 1. 摄入知识库 curl -X POST http://localhost:8080/api/rag/ingest/500 # 2. 运行评估(Dense vs BM25 vs Fused) curl -X POST http://localhost:8080/api/rag/evaluate # 返回: # { # "DENSE_hitRate": "60.0%", "DENSE_MRR": "0.420", # "BM25_hitRate": "70.0%", "BM25_MRR": "0.480", # "FUSED_hitRate": "90.0%", "FUSED_MRR": "0.680" # }

什么时候需要混合检索?

场景推荐策略
知识库 < 100 条,查询单一纯 Dense 就够了
包含专业术语/编号(如 CNC-001)加 BM25
用户用口语提问加 BM25+ Query Rewriting
多语言混用纯 Dense(BM25 分语言要调分词器)

判断标准很简单:跑 10 条测试查询看命中率。如果 Dense Only 低于 70%,加 BM25。加了之后还低于 80%,加 Query Rewriting。

一句话总结

向量检索懂语义但不懂关键词,BM25 懂关键词但不懂语义。RRF 融合让两个互相兜底,90% 命中率是混合检索的基本盘。剩下的 10%,靠 Query Rewriting 和更精准的分块。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

http://www.gsyq.cn/news/1579172.html

相关文章:

  • 基于知识图谱的百科知识问答系统:Django+Neo4j 智能问答平台项目实战
  • 全网最全!2026AI论文平台榜单(覆盖 99% 毕业论文需求)
  • 92-Java 多线程编程
  • 《B4501 [GESP202603 四级] 山之谷》
  • API中转站搭建完整教程:从零部署专属New API服务为什么自建API中转站
  • GLM-5.2实测:国产模型追上GPT梯队,但千万别直接切主力
  • 从“不可能三角”到模块化突围:2026年区块链开发的技术范式转型
  • 那个写稿的行业,完了
  • 他40岁,身价5万欧,一夜涨粉500万——这才是世界杯存在的意义
  • Ubuntu如何卸載LibreOfflice
  • 多智能体辩论为什么有效?这篇 arXiv 论文给出了“隐藏锚点“的数学证明
  • 为什么90%的企业AI项目会失败?7层能力建设架构告诉你答案
  • AI原生上下文学习正在淘汰传统微调——SITS 2026 ICL协议发布后,你的模型还剩多少有效上下文窗口?
  • 福州高端整木定制怎么选?6 家品牌实测对比,避坑必看
  • 断尺问题:戴德金分割现实悖论
  • 信托制物业缴费模式的数智化落地实践与技术架构
  • 二分查找解题
  • 国产BIM神器!翻模+BIM咨询全流程提速
  • 好久不见,甚是想念
  • 卡梅德生物技术快报|噬菌体展示多肽筛选完整实操方案|RhE 抗原靶向肽全流程实验与量化数据
  • HML-vision
  • Linux安装——虚拟机安装方式
  • 中小企业如何利用短视频实现获客增长
  • [机器学习]Kaggle:Hull Tactical - Market Prediction-有效市场
  • 阿里云ECS安全组与远程连接设置完全指南
  • AI Agent 常见架构全景
  • 【AI原生QLoRA优化实战手册】:2026奇点大会首发的7大量化LoRA训练避坑法则(含GPU显存压缩42%实测数据)
  • 广东中高端休闲棉布/弹力斜纹染色布/混纺类面料/牛仔布料/印花涂层工艺布厂家优选
  • 【2026奇点大会独家授权】:AI状态跟踪的“因果一致性”新标准正式发布,附GitHub开源参考实现(限前500名)
  • 告别“在我电脑上能跑”——用 Vagrant 一键搭建可复现的开发环境