资讯动态

RAG工程化实践:混合检索双剑合璧,打造高鲁棒性信息检索系统!

发布时间:2026/9/20 11:21:51 来源:尧图企业网站定制
本文深入探讨了RAG检索阶段优化中的混合检索方式通过结合传统关键词匹配如BM25与向量语义相似度计算实现“字面匹配搜索”与“语义相似度理解”的双重优势。文章详细解析了混合检索的核心思想、实现原理及具体代码示例展示了如何通过并行检索、结果融合与权重分配提升检索的全面性、鲁棒性有效抑制模型幻觉并适应新术语。二、混合检索2.1 简介混合检索 (Hybrid Search)指的是在同一RAG系统中并行采用多种不同类型的检索算法进行信息获取常见的组合方式为传统关键词匹配 向量语义相似度计算。该方法通过多条检索路径协同工作从多个维度全方位捕捉文档内容与用户查询意图之间的匹配关系。2.2 核心思想其核心理念可概括为**“字面匹配搜索”与“语义相似度理解”**的双剑合璧关键字检索 (如 BM25)侧重精准定位擅长捕捉专有名词、型号代码、缩写等特定词汇。例如搜索“iPhone 17”能够有效筛除与“iPhone 16”相关的内容。向量检索 (Vector Search)侧重语义理解能够感知用户提问背后的意图即使查询中未出现原文的精确用词也能召回语义相近的信息。结果融合 (Fusion)将多路检索返回的候选结果汇总整合并借助重排序算法筛选出综合质量最优的文本片段。2.3 实现原理混合检索的实现通常遵循以下标准工作流A. 并行检索 (Parallel Retrieval)系统接收到问题查询请求后将其同时发送至两个或多个独立的检索模块关键字检索模块 (BM25)基于词频和逆文档频率算法筛选出包含相关关键字的文档内容。向量检索模块 (Embedding)将查询问题转换为向量表示在向量数据库中检索距离最近的文本片段。B. 结果整合与生成将多路检索返回的文档汇集融合后输入大语言模型生成最终答案。2.4 优势**高鲁棒性**能够有效应对多种提问形式无论是表述简略还是语义模糊均能保持稳定表现。**幻觉抑制**通过精准的关键词匹配将模型限定在正确的信息源范围内减少内容张冠李戴的风险。**冷启动支持**对于新出现的专有名词或术语向量模型可能尚未学习关键词检索可快速填补这一空白。**召回更全面**兼顾“语义相关”与“字面匹配”两方面整体召回效果显著优于单一检索路径。三、混合实现方式3.1 数据准备在实现混合检索之前我们首先准备待分割的文档接着初始化向量数据库并将分割后的文档存入向量库。此处仍沿用前文所使用的新闻稿news.txt实现代码如下from langchain_community.document_loaders import TextLoaderfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain_chroma import Chroma# 加载文档path news.txtloader TextLoader(path,encodingutf-8)docs loader.load()# 分割文档text_splitter RecursiveCharacterTextSplitter(chunk_size512, chunk_overlap50)chunks text_splitter.split_documents(docs)vectorstore Chroma.from_documents(documentschunks, embeddingembeddings_model, collection_namemix-query)# 初始化检索器retriever vectorstore.as_retriever(search_kwargs{k: 3})3.2 向量检索在混合检索前先做向量检索测试一下效果代码如下query OpenClawd是什么# 向量检索vector_retriever_doc vector_retriever.invoke(query)pretty_print_docs(vector_retriever_doc)运行结果如下向量检索能够从检索出相关数据3.2 关键字检索这里关键字检索使用BM25Best Matching 25方式来检索BM25是一种衡量文档与查询相关性的排序函数通过考虑词频、逆文档频率和文档长度归一化来计算文本匹配得分。代码如下from langchain_community.retrievers import BM25Retriever# BM25关键词检索BM25_retriever BM25Retriever.from_documents(chunks,k3)BM25Retriever_doc BM25_retriever.invoke(query)pretty_print_docs(BM25Retriever_doc)运行结果如下BM25能够检索出相关数据3.3 混合检索把上面的两种检索方式进行融合并设置权重把检索的结果进行融合后再交给大模型来总结回答。相关代码如下from langchain.retrievers import EnsembleRetriever# 向量检索和关键词检索的权重各0.5两者赋予相同的权重retriever EnsembleRetriever(retrievers[BM25_retriever, vector_retriever], weights[0.5, 0.5])pretty_print_docs(retriever.invoke(query))运行结果如下结果返回4个文档块对比发现是前两种方式检索出来的6个文档块有两个是重合的融合后保留了4个把以上融合后的结果交给LLM进行总结最终即可生成答案。总结混合检索通过并行使用多种检索方式将“字面精准定位”与“语义意图理解”有机结合有效弥补了单一检索模式的局限性。该方法利用多路召回与权重融合策略不仅提升了检索的全面性和鲁棒性还能抑制模型幻觉、增强对新术语的适应能力。2026年AI行业最大的机会毫无疑问就在应用层字节跳动已有7个团队全速布局Agent大模型岗位暴增69%年薪破百万腾讯、京东、百度开放招聘技术岗80%与AI相关……如今超过60%的企业都在推进AI产品落地而真正能交付项目的大模型应用开发工程师****却极度稀缺落地AI应用绝对不是写几个prompt调几个API就能搞定的企业真正需要的是能搞定这三项核心能力的人✅RAG融入外部信息修正模型输出给模型装靠谱大脑✅Agent智能体让AI自主干活通过工具调用Tools环境交互多步推理完成复杂任务。比如做智能客服等等……✅微调针对特定任务优化让模型适配业务目前脉脉上有超过1000家企业发布大模型相关岗位人工智能岗平均月薪7.8w实习生日薪高达4000远超其他行业收入水平技术的稀缺性才是你「值钱」的关键具备AI能力的程序员比传统开发高出不止一截有的人早就转行AI方向拿到百万年薪AI浪潮正在重构程序员的核心竞争力现在入场仍是最佳时机我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】⭐️从大模型微调到AI Agent智能体搭建剖析AI技术的应用场景用实战经验落地AI技术。从GPT到最火的开源模型让你从容面对AI技术革新大模型微调掌握主流大模型如DeepSeek、Qwen等的微调技术针对特定场景优化模型性能。学习如何利用领域数据如制造、医药、金融等进行模型定制提升任务准确性和效率。RAG应用开发深入理解检索增强生成Retrieval-Augmented Generation, RAG技术构建高效的知识检索与生成系统。应用于垂类场景如法律文档分析、医疗诊断辅助、金融报告生成等实现精准信息提取与内容生成。AI Agent智能体搭建学习如何设计和开发AI Agent实现多任务协同、自主决策和复杂问题解决。构建垂类场景下的智能助手如制造业中的设备故障诊断Agent、金融领域的投资分析Agent等。如果你也有以下诉求快速链接产品/业务团队参与前沿项目构建技术壁垒从竞争者中脱颖而出避开35岁裁员危险期顺利拿下高薪岗迭代技术水平延长未来20年的新职业发展……那这节课你一定要来听因为留给普通程序员的时间真的不多了立即扫码即可免费预约「AI技术原理 实战应用 职业发展」「大模型应用开发实战公开课」还有靠谱的内推机会直聘权益完课后赠送大模型应用案例集、AI商业落地白皮书

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价