用户在政策快报平台的搜索框中输入“专精特新补贴”,期望得到的结果是:各地专精特新认定后的配套奖励政策。但传统的全文检索引擎可能会返回所有包含“专精”或“精新”字样的文档,其中夹杂大量不相关的内容——比如“关于印发《某某行业精细化管理办法》的通知”。

这就是搜索模块面临的核心挑战:用户输入的是关键词,但真实需求是语义。如何让搜索引擎理解用户的真实意图?政策快报平台的搜索模块经历了从“全文检索”到“语义理解”的演进。本文拆解这一演进过程中的技术方案。

第一代:全文检索(基础版)

技术选型: Elasticsearch

核心配置:

  • 分词器:IK分词器(中文分词)

  • 索引字段:政策标题、政策正文、发文部门

  • 匹配方式:TF-IDF(词频-逆文档频率)相似度计算

典型问题:

用户搜索词 期望结果 实际返回(含非期望结果)
专精特新补贴 专精特新配套奖励政策 “精细化安全管理通知”
研发费用加计扣除 税务优惠政策 “关于召开研发费用归集培训会的通知”
小微企业贷款 贷款贴息政策 “小微企业划型标准说明”

问题分析:

  • 关键词匹配无法区分“专精特新”作为完整实体和拆分后的“专”“精”“新”

  • 无法识别“补贴”“奖励”“资助”等同义词

  • 无法理解“小微企业贷款”中的“贷款”是需求目标而非文档内容

第二代:增强全文检索(优化版)

优化措施:

  1. 自定义词典
    将政策领域的高频实体词加入分词词典:

    • “专精特新”作为整体词,不再拆分

    • “加计扣除”“高新技术企业”“瞪羚企业”等专有名词

  2. 同义词配置

    json

    {
      "同义词集": [
        "补贴,补助,奖励,资助,扶持资金",
        "申报,申请,认定,评选",
        "小微企业,中小企业,中小微"
      ]
    }
  3. 字段权重调优

    字段 权重 说明
    政策标题 3.0 标题匹配相关性最高
    政策标签 2.5 人工/系统标注的行业标签
    政策正文首段 1.5 摘要部分权重高于正文
    政策正文 1.0 基础权重
  4. 搜索建议(Did you mean)
    对无结果的搜索词进行拼音纠错和相似词推荐:

    • “zhuangjingtexin” → “专精特新”

    • “研发费用假期扣除” → “研发费用加计扣除”

效果提升:

  • 搜索准确率从约65%提升到约82%

  • 无结果率从约12%下降到约4%

第三代:语义理解(进阶版)

全文检索的局限在于:它不知道“词的意思”,只知道“词的匹配”。政策快报的第三代搜索引入了语义理解能力。

技术架构:

text

用户查询 → 查询理解 → 向量召回 + 关键词召回 → 融合排序 → 结果

模块一:查询理解

在搜索之前,先理解用户真正想找什么。

识别维度 技术方法 示例
意图识别 文本分类模型 “怎么申请” → 意图=申报流程
实体抽取 NER(命名实体识别) “河北专精特新” → 地区=河北,资质=专精特新
需求泛化 同义词扩展 “拿钱”“补贴”“奖励” → 统一为“扶持资金”

模块二:双路召回

不再单纯依赖关键词匹配,而是同时使用向量召回和关键词召回。

召回方式 技术原理 优点 缺点
关键词召回 BM25(Elasticsearch) 精确匹配,可解释性强 无法处理语义相似
向量召回 向量数据库(如Milvus) 理解语义相似 计算成本高

向量召回实现:

  1. 将每条政策的标题+摘要输入BERT模型,生成768维向量

  2. 向量存入Milvus向量数据库,建立索引

  3. 用户查询时,同样生成查询向量

  4. 在向量数据库中检索最相似的K条政策(余弦相似度)

模块三:融合排序

双路召回可能返回200+条候选结果,需要重新排序。

排序特征:

  • 关键词召回得分(BM25)

  • 向量召回相似度得分(余弦相似度)

  • 时效性得分(最近发布的政策加权)

  • 用户偏好得分(用户历史点击行为)

融合公式:

text

final_score = 0.4 × bm25_score + 0.4 × vector_score + 0.1 × recency_score + 0.1 × user_score

效果对比

版本 技术方案 搜索准确率 平均响应时间
V1.0 全文检索(基础) 65% 800ms
V2.0 全文检索(优化) 82% 350ms
V3.0 语义理解+双路召回 91% 500ms

实测案例

用户在政策快报搜索水利部门相关政策的“节水企业认定”:

  • V1.0结果:返回所有包含“节水”或“企业”或“认定”的政策(结果杂乱)

  • V2.0结果:返回标题含“节水”且含“认定”的政策(精准度提升)

  • V3.0结果:额外返回了标题为“水效领跑者申报通知”的政策(不含“节水认定”但语义相关)

当前挑战与优化方向

挑战 当前方案 优化方向
长查询(如一句话描述需求) 提取关键词后检索 端到端的查询-文档匹配模型
政策更新频繁 增量更新向量索引 实时向量更新机制
计算成本 双路召回+排序,资源消耗较大 模型蒸馏,降低推理成本

政策快报平台的搜索模块从全文检索演进到语义理解,本质上是让机器从“匹配关键词”进化到“理解用户意图”。这一演进没有终点。随着大语言模型的发展,未来的搜索可能更进一步——用户可以直接问“河北的制造企业能拿什么补贴”,系统给出答案而不是一堆链接。

如果你也在从事搜索或推荐系统相关的开发工作,欢迎在评论区交流你在分词优化、向量召回或排序策略方面的实践经验。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐