如何提升大模型召回率和实战案例

article/2025/6/27 13:45:17

导读:在大模型应用开发中,检索系统的召回率和准确率往往成为制约产品效果的关键瓶颈。当用户查询"SSL证书"而文档库中记录的是"TLS证书"时,传统的单一查询检索就会出现语义匹配失效的问题。本文深入剖析MultiQueryRetriever这一前沿技术方案,通过查询扩展机制实现检索性能的双重提升。
MultiQueryRetriever的核心价值在于通过大语言模型生成多个语义相关的查询变体,有效解决术语差异、表述模糊和多语言混合等实际场景中的检索难题。实测数据显示,该技术能够将召回率提升约25%,准确率提升约18%,为开发者提供了一套可靠的性能优化方案。
文章不仅阐述了MultiQueryRetriever的技术原理和实现机制,更重要的是提供了完整的代码实战案例,涵盖从数据预处理、向量数据库构建到多查询检索器配置的全流程实现。通过对比基础检索和多查询检索的效果差异,读者能够直观理解这一技术的实际应用价值,掌握在复杂业务场景中提升检索系统性能的关键方法。

概述

在大模型开发领域,如何提升召回率和准确率是面试中的高频技术问题。本文将深入探讨MultiQueryRetriever技术方案,通过理论分析和实际代码演示,帮助开发者掌握这一关键技术。

需求背景分析

在实际应用场景中,单一查询检索往往面临以下挑战:

当原始查询表述不够明确时,检索系统难以准确理解用户意图。文档库中的内容可能使用不同的术语表达同一概念,导致语义匹配困难。用户的问题可能存在多种表达方式,单一查询无法覆盖所有可能的相关内容。

复杂问题往往需要从多个角度切入才能找到最相关的文档片段。在这种情况下,生成多个变体查询成为提高召回率的有效解决方案,能够确保覆盖更多相关文档内容。

MultiQueryRetriever技术原理

MultiQueryRetriever通过生成多个相关查询来增强检索效果,有效解决单一查询可能存在的不够全面或歧义性问题。

核心技术机制

查询扩展技术:系统通过大语言模型生成N个相关查询,包括查询改写、语义扩展、术语翻译等方式,然后合并检索结果并进行去重处理,形成多个变体查询。

双重增强效果:该技术能够同时提升召回率约25%和准确率约18%,实现检索性能的平衡优化。
在这里插入图片描述

基础用法

retriever = MultiQueryRetriever.from_llm(retriever=base_retriever,llm=ChatOpenAI()
)

典型应用场景

术语差异问题

用户提问使用"SSL证书"而文档中使用"TLS证书"的情况,需要系统能够理解两者的关联性。

表述模糊问题

用户询问"怎么备份数据库"时,实际需求可能是"数据库容灾方案实施步骤",需要查询扩展来匹配更准确的文档内容。

多语言混合场景

在技术文档检索中,经常遇到中英文混杂的查询,需要系统能够处理跨语言的语义匹配。

专业领域应用

在医学问诊等专业领域中,同一症状可能有多种不同的描述方式,需要通过多查询检索来提高匹配准确性。

实战案例代码

以下是完整的MultiQueryRetriever实现示例:

from langchain_community.embeddings import DashScopeEmbeddings
from langchain_milvus import Milvus
from langchain_openai import ChatOpenAI
from langchain_community.document_loaders import TextLoader
from langchain.retrievers.multi_query import MultiQueryRetriever
from langchain_text_splitters import RecursiveCharacterTextSplitter
import logging# 配置日志系统
logging.basicConfig()
logging.getLogger("langchain.retrievers.multi_query").setLevel(logging.INFO)# 数据加载和预处理
loader = TextLoader("data/界面新闻.txt", encoding="utf-8")
data = loader.load()# 文本分割处理
text_splitter = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=10
)
splits = text_splitter.split_documents(data)# 初始化嵌入模型
embeddings = DashScopeEmbeddings(model="text-embedding-v2",max_retries=3,dashscope_api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
)# 构建向量数据库
vector_store = Milvus.from_documents(documents=splits,embedding=embeddings,collection_name="multi_query_test",connection_args={"uri": "http://192.168.19.152:19530"}
)# 基础检索测试
query = "联系人电话"
results = vector_store.similarity_search(query, k=2)
print(f"向量数据库返回的结果数据:{results}")# 初始化大语言模型
llm = ChatOpenAI(model_name="qwen-plus",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxxx",temperature=0.7
)# 创建多查询检索器
retriever_from_llm = MultiQueryRetriever.from_llm(retriever=vector_store.as_retriever(),llm=llm
)# 执行多查询检索
results = retriever_from_llm.invoke(query)
print(f"多查询检索器返回的结果数据:{results}")
print(f"返回的结果数量:{len(results)}")# 输出检索结果详情
for result in results:print(f"文档内容:{result.page_content}")print(f"文档元数据:{result.metadata}")

技术要点总结

MultiQueryRetriever技术通过查询扩展和语义增强,有效解决了传统单一查询检索的局限性。在实际应用中,该技术能够显著提升检索系统的召回率和准确率,特别适用于术语复杂、表述多样的专业领域场景。

通过合理配置嵌入模型、向量数据库和大语言模型,开发者可以构建高效的多查询检索系统,为用户提供更加精准和全面的信息检索服务。


http://www.hkcw.cn/article/GkMyPFRkrK.shtml

相关文章

GMDCMonitor企业版功能分享0602

企业版包含了拓扑中心、签退中心、知识库、通知渠道配置、平台自定义,这5个功能 1)拓扑中心 拓扑中心绘制的时候需要注意2点: 1)要先选择 “矩形区域” 或 “圆形区域” 来添加各个背景区域,同时录入区域尺寸&#x…

Higress项目解析(二):Proxy-Wasm Go SDK

3、Proxy-Wasm Go SDK Proxy-Wasm Go SDK 依赖于 tinygo,同时 Proxy - Wasm Go SDK 是基于 Proxy-Wasm ABI 规范使用 Go 编程语言扩展网络代理(例如 Envoy)的 SDK,而 Proxy-Wasm ABI 定义了网络代理和在网络代理内部运行的 Wasm …

MySQL日志

日志 MySQL中的日志有:错误日志、二进制日志、查询日志、慢查询日志 1,错误日志 2,二进制日志 主从复制就是基于二进制日志 相关的三个参数: log_bin:表示二进制日志启动状态 log_bin_basename:最终生…

AE特效软件|after effects2025网盘下载与安装教程指南

如大家所熟悉的,本文要介绍的AE,是Adobe After Effects的简称。说起AE,大家可能会很快联系上PR(Premiere)。PR与AE算得上是兄弟软件,前者可以对创作者的影视作品进行剪辑处理,后者则可对后期作品…

LightEMMA:用于自动驾驶的轻量级端到端多模态模型

25年5月来自密歇根大学和密歇根大学交通研究所的论文“LightEMMA: Lightweight End-to-End Multimodal Model for Autonomous Driving”。 视觉-语言模型 (VLM) 已展示出端到端自动驾驶的巨大潜力。然而,充分利用其安全可靠的车辆控制能力仍然是一个开放的研究挑战…

案例研究 | Genspark 携手 Claude 共创 AI Agents 新未来

最近在调研自主规划 Agentic 系统的架构设计,尤其是多 Agents 协作这一块。 看到 Claude 刚发布的一篇关于 Genspark 的案例研究,觉得很有借鉴意义。 所以将文章翻译出来,分享给大家。 如果你也对 AI Agents、产品创新感兴趣,欢…

地图 APP 和购物 APP 是最急切上 AI的地方

现在 AI 这么火,我觉得目前最急切的是把地图 APP 赶快做成 AI 的。连我们 TDengine 数据库也在推出 AI 产品,这些传统生活服务 APP ,更应该马上使用 AI , 提供更智能的服务。 这两天球拍线断了,想在附近找一家拉线的,我…

C++——AVL平衡树

我们之前已经讲解过了二叉搜索树了。知道它的基本特性后,这次,我们来认识一下AVL平衡树。 在此之前,我们先来想想目前为止,我们可以通过哪些方式来寻找一个数?(有些我们还没有学,大概率后面会更…

Blaster - Multiplayer P127-PXXX: 多种武器

P129_ Rocket Projectiles P129_1 创建火箭 配置请自行查看. P129_2 创建火箭发射器 配置请自行查看. P129_3 初始化弹药 这里添加了一个新的武器类型. P129_4 禁止重复添加 CharacerOverlay P130_ Rocket Trails 本节制作了一个奶瓜特效. P131_Spawn Rocket Trails 如果…

基于SpringBoot运动会管理系统设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

无畏契约 directx runtime修复

无畏契约 directx runtime修复 问题如下 解决办法

端午经济成为消费活力新引擎 民俗体验带动文旅热潮

端午节作为中国首个入选世界非物质文化遗产的传统节日,在今年展现出了多元的文旅消费方式。人们不仅在河湖边观看龙舟竞渡,还在古镇体验民俗技艺、参观文博场馆,享受艺术之美。这些活动不仅展现了中华文化的独特魅力,还成为拉动消费市场的新动力。今年端午假期,“民俗体验…

48岁妻子产子丈夫称孙子比儿子大3岁 28岁女儿喜迎弟弟

6月2日,广东河源一名48岁的再婚女子在怀孕后仅用15分钟就顺利产下孩子。她的28岁女儿对此表示非常高兴,并发文说:“从此多一个人为妈妈保驾护航了。”女子的丈夫提到,他们的孙子比儿子还要大3岁。据此前报道,这名女子发现自己怀孕时已经怀胎7个月,她之前一直以为自己是“…

印尼球员费迪南:目标是连胜中日全取6分,力争直接出线 豪言壮志冲击出线

印尼本土边锋费迪南表示,对于即将到来的18强赛最后两轮比赛,印尼队的目标是连胜中国和日本,全取6分。5月30日是印尼足协主席托希尔的55岁生日,他当时正在巴厘岛参加U23东南亚杯的小组抽签仪式,并与印尼队共进晚餐,庆祝自己和归化队长伊泽斯的生日。托希尔和伊泽斯收到的生…

俄州长宣布奖励向乌无人机投石民众 平民勇阻袭击获赞

俄罗斯伊尔库茨克州州长科布泽夫表示,向乌克兰无人机投掷石块的几名当地男子将获得奖励。此前社交媒体上流传的一段视频显示,几名俄罗斯男子爬上搭载乌克兰无人机的卡车车顶,试图阻止无人机起飞对俄境内发动袭击。俄罗斯国防部通报称,乌克兰当局使用FPV无人机对摩尔曼斯克州…

24岁大学生暗网贩毒3年捞钱超7亿 台大学霸落网

24岁大学生暗网贩毒3年捞钱超7亿 台大学霸落网。据环球网援引台媒报道,近日,美国联邦调查局(FBI)破获暗网毒品交易平台“隐身市场”,而该平台经营者“法老”的真实身份竟是24岁台湾大学资管系学生林睿庠。林睿庠因贩毒资产暴增,3年多其不法所得超过1亿美元(约7.2亿元人民…

嫂子还得多练!塞鸟妻子高铁上感慨中文太难:我不知道“手”中文 高铁学中文挑战大

嫂子还得多练!塞鸟妻子高铁上感慨中文太难:我不知道“手”中文 高铁学中文挑战大!塞尔吉尼奥的妻子社媒晒出在高铁上学中文的照片,并用中葡双语配文:这要求也太高了,我不知道“手”(说)中文责任编辑:0882

【C#】Quartz.NET怎么动态调用方法,并且根据指定时间周期执行,动态配置类何方法以及Cron表达式,有请DeepSeek

🌹欢迎来到《小5讲堂》🌹 🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!&#…

58岁女子山里失联6天5夜奇迹生还 救援队地毯式搜寻成功救出

6月1日,温州市黑马救援队发现一名失联6天5夜的老人。当时老人尚有生命体征,已被送往医院进一步救治。这名58岁的老人于5月27日在温州市鹿城区仰义教堂附近的山中失联,家属和救援队多日寻找未果。6月1日上午,黑马救援队接到鹿城区公安分局指挥中心指令后,组织了40余人,携带…

20250602在Ubuntu20.04.6下修改压缩包的日期和时间

rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 5月 23 10:23 Android13.0地面站.tgz* rootrootrootroot-X99-Turbo:~$ touch 1Android13.0地面站.tgz rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 6月…