首页/AI/RAG 与向量库速查/专名与缩写检索优化

专名与缩写检索优化

专有名词、型号、缩写是向量检索弱项(低频词被平滑),修复思路:混合检索引入 BM25 一路、构建同义词与缩写词典、在元数据中显式保存型号字段并支持精确过滤。

RAG 与向量库速查AI更新于 2026-10-13

专名与缩写检索怎么修

专有名词、产品型号与缩写是纯向量检索的弱项:它们在语料里出现频次低,模型的对比学习目标又倾向把语义相近的表述拉到一起,结果就是低频专名在向量空间里被平滑掉,检索时排不到前面。修复思路有三条,且通常组合使用——加一路关键词检索兜住精确词形、维护同义词与缩写词典把不同写法映射到同一概念、把型号等结构化信息写进元数据支持精确过滤。

基本信息

问题根源低频词在向量空间被语义平滑,缺乏区分度
混合检索引入 BM25 或学习式稀疏向量作为第二路
词典同义词、缩写、旧称到标准名的映射表
元数据型号、版本等结构化字段支持精确过滤
维护要求词典要有明确负责人,随产品线更新同步补充

典型使用场景

  • 产品问答:用户直接输入型号,必须精确命中对应文档
  • 技术术语:内部简称与官方名称不一致,需要映射统一
  • 错误码检索:一串字符在向量空间里几乎没有语义,靠关键词一路
  • 新旧产品名并存:旧称也要能检索到新文档
  • 权限与版本过滤:按产品线字段限定范围,避免跨型号召回

同义词与缩写映射

同义词与缩写映射
SYNONYMS = {
    'K8s': ['Kubernetes'],
    '向量库': ['vector database', '向量数据库'],
    'RAG': ['检索增强生成'],
}

def expand(query):
    for k, v in SYNONYMS.items():          # 查询改写阶段扩展同义词
        if k in query:
            query = query + ' ' + ' '.join(v)
    return query

精确过滤兜底

精确过滤兜底
model_no = detect_model_no(question)       # 从问题里抽取型号
if model_no:
    hits = store.search(q_vec, filter={'model_no': model_no}, top_k=10)
else:
    hits = store.search(q_vec, top_k=10)   # 没有型号就走普通语义检索

三类问题的修法

问题表现主要手段
专名低频语义相近的泛化文档排前混合检索加关键词一路
写法不一致同一概念多种表述互相不命中同义词与缩写词典
结构化信息型号、版本无法参与语义匹配元数据字段加精确过滤
缩写词典要有维护人和更新流程:新增产品线时同步补充词条,否则新专名从上线第一天起就检索不到,而指标上看不出来是哪一块缺失。

易错点

  • 同义词表无限扩张无人维护,冲突与漏项并存
  • 只扩查询不扩索引,写入侧仍用另一种写法,两侧永远对不上
  • 把型号当作普通词交给向量检索,精确匹配能力被削弱
  • 词典更新后未重建倒排索引,新词条在已有文档上不生效
  • 靠人工枚举型号解决,产品线一多就维护不动,应改为字段抽取加过滤

数据来源与参考

  • Elasticsearch 官方文档(Synonym / 精确匹配)
  • Gao et al., RAG for LLMs: A Survey(混合检索动机)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌