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

政策快报平台的全文检索:从ES到向量检索的演进

政策快报平台上线初期,搜索功能很简单:用户输入关键词,系统在标题和正文里做关键词匹配。

效果很差。搜“补贴”出不来“专项资金”,搜“专精特新”出不来“小巨人”。

用户的搜索词是口语化的,政策文件是书面化的。两者之间有一道鸿沟。

后来我们做了一系列改造,从关键词检索到语义检索,再到混合检索。今天复盘这个过程。

3个阶段

阶段一:关键词检索(Elasticsearch)

方案:用Elasticsearch做全文检索,对标题和正文建倒排索引。查询时按TF-IDF/BM25相关性排序。

问题:词不匹配就搜不到。

用户搜“补贴”,政策里写的是“专项资金”——匹配不上,出不来结果。
用户搜“小巨人”,政策里写的是“专精特新”——同样匹配不上。

这个阶段,搜索点击率只有30%左右。用户经常搜不到想要的东西,然后流失。

优化尝试:加同义词词典——“补贴”映射到“专项资金、补助、后补助、奖励”,“专精特新”映射到“小巨人、隐形冠军、单项冠军”。效果有限,同义词覆盖不全,新词、生僻词无法及时补充。

阶段二:语义检索(向量检索)

方案:引入向量检索。用Sentence-BERT将用户查询和政策文本分别编码为向量,计算余弦相似度,按相似度排序。

效果:语义匹配。搜“补贴”能出“专项资金”,搜“小巨人”能出“专精特新”。

搜索点击率从30%涨到了50%左右。

新问题:向量检索吃资源。每次查询需要实时计算向量相似度,CPU消耗高;索引构建时间长,新政策入库后无法立即被搜到;语义检索有时过于“发散”,搜“专精特新认定”会匹配到一些相关性不高的政策。

阶段三:混合检索(ES + 向量检索)

方案:BM25 + 向量检索,两种得分加权融合。精确匹配(发文字号、政策名称)走ES,语义匹配走向量检索,两者按权重合并排序。

效果:既保证了精确匹配(搜“国发〔2026〕1号”能精确命中),又保证了语义泛化(搜“补贴”能出“专项资金”)。

搜索点击率从50%涨到了60%左右。

几个关键的技术决策

决策一:为什么不用单一向量检索?

向量检索擅长语义泛化,但不擅长精确匹配。用户搜“国发〔2026〕1号”这种精确的发文字号时,向量检索的泛化能力反而成了干扰。

混合检索取两者之长:精确匹配走ES,语义匹配走向量。

决策二:同义词词典还要不要?

要,但角色变了。

之前同义词词典是“主力”,现在是“辅助”。向量检索能解决大部分语义泛化问题,同义词词典只作为“兜底”,覆盖向量模型训练数据中没有覆盖到的特殊词汇(如最新政策术语)。

决策三:向量模型的选择

我们试用过OpenAI的embedding接口,准确率高但延迟大,每次查询都要调用外部API,响应时间不稳定。最终选择了开源的Sentence-BERT多语言模型,在政策领域数据上做了微调。

结尾

搜索的核心价值:让用户“能找到自己想找的东西”。关键词→语义→混合,每一次演进都在缩小用户表达和文件表达之间的差距。

政策快报平台的搜索系统还在持续优化,方向是让用户用最自然的方式表达需求,系统能理解并返回最匹配的政策。

技术选型有取舍,平衡了准确性、召回率、响应时间和成本。目前ES做精确匹配兜底,向量做语义泛化覆盖,两者结合覆盖了绝大多数搜索场景。

http://www.cnnetsun.cn/news/3281526.html

相关文章:

  • 鸿道安全云:面向轨道交通安全关键业务的新一代云化基础平台
  • Python图像识别自动化连连看实战指南:计算机视觉与游戏算法深度解析
  • Premiere Pro安装本质:从CC服务化架构到稳定工作流构建
  • 参数权重失控?风格崩坏?——Midjourney提示词精准控制全链路拆解,含37组AB测试对比数据
  • Hermes Agent不是聊天工具,而是轻量级智能体操作系统
  • SWE-1.7:高性能AI编程助手的成本效益突破与工程实践
  • Muse Image扩散模型解析:从原理到社交平台集成实践
  • AI 电动玩具车智能功率 高效率、小封装 完整选型方案
  • UE4SS终极指南:如何快速掌握虚幻引擎脚本系统的核心功能
  • Pytest的常⽤运⾏⽅式
  • CD4511+NE555 过流检测电路:数码管闪烁提示的 2 种实现方案对比
  • Unity环境资产包深度解析:从SRP支持到森林村庄场景高效搭建
  • 为什么92%的团队误用Claude Code?资深架构师拆解4类典型失效场景及对应Prompt工程修复方案
  • Twitter做外贸引流靠谱吗?为什么很多外贸企业开始Twitter获客?
  • Claude Code权限配置失效的7大致命错误:从越权访问到审计断层,一线攻防团队实测复盘
  • 双目立体匹配实战:OpenCV SGBM 与 AD-Census 算法对比,Middlebury 数据集评测
  • STM32系统级开发:从点灯到真实嵌入式工程的三重跨越
  • 腾讯混元Hy3 MoE模型实战:从部署到代码生成与Agent应用
  • 3种PMSM坐标变换(Clark/Park)代码实现对比:C语言、Python与MATLAB性能实测
  • 国产大模型桌面应用工程实践:Tauri+GLM-5流式对话全链路解析
  • 3 种进制转换算法对比:递归、迭代与 C++ 标准库,性能实测与适用场景
  • MonkeyCode一键上线:静态网站发布的原子化革命
  • Hydra 9.5 实战:SSH/FTP/HTTP 等 5 种协议爆破命令与 3 个关键参数解析
  • STM32与欧姆龙继电器实现高效直流负载控制方案
  • 【Kafka】Kafka 4.1.0版本安装、配置和服务启动问题解决过程记录
  • 银河麒麟服务器 OpenSSL 证书配置:5个关键配置文件参数详解与排错指南
  • AI模型发布变动下的工程应对:从抽象层设计到应急响应
  • 三步快速获取国家中小学智慧教育平台电子教材:终极下载解决方案
  • 《HarmonyOS技术精讲-Core Vision Kit》第1篇:入门概述与快速上手
  • 豆包社交第一步,为何先找飞书?拆解AI时代最贵的一张聊天网