查询扩展(Query Expansion)是什么?

查询扩展是一种信息检索技术,指在原始用户查询的基础上自动添加相关的同义词、近义词、上下位词或其他语义相关词汇,从而丰富查询内容的过程。目的是提高查全率(Recall),使系统能够匹配到更多潜在的相关文档。

示例:

假设用户的原始查询是:“人工智能发展历史”

经过查询扩展后可能是:

人工智能 OR AI OR 机器学习 OR 深度学习 OR 神经网络 OR 发展历程 OR 历史背景 OR 技术演进

在 RAG 应用中为何需要查询扩展?

RAG 架构的核心在于先通过检索模块从知识库中找出与问题最相关的段落,再交给 LLM 进行阅读理解和答案生成。因此,检索的质量直接决定了最终输出的效果上限。

存在的问题:
  1. 自然语言歧义性

    • 用户表达可能不够精准或存在多种理解方式。
    • 如“苹果”既可以代表水果也可以代表公司品牌名 Apple Inc.
  2. 训练/推理分布偏移

    • 向量数据库中的文本大多来源于公开网页资料,其表述风格往往不同于口语化提问。
    • 直接使用原句做 embedding 匹配容易漏掉含有相同概念但措辞不同的优质篇章。
  3. 稀疏空间局限性

    • 如果仅依赖单一向量表示进行相似度计算,在面对复杂语境时会出现误判情况。
    • 特别是在冷启动阶段缺少足够标注数据的情况下尤为明显。
  4. 跨语言障碍

    • 当目标语料集中混杂英文术语而用户只用了中文关键词时会造成严重召回损失。

查询扩展带来的收益

方面 不采用QE 采用QE
召回率 较低 显著提升
准确率 中等 可控下降幅度较小
泛化能力 更强适应多样问法
多语言支持 支持混合双语搜索

实现方法举例

常见的几种实现思路包括:

  1. 基于词典的方法

    • 利用 WordNet / HowNet 等构建同义词表
    • 手工维护行业专有名词替换规则
  2. 基于统计共现的方法

    • TF-IDF + Rocchio Algorithm 动态调整权重系数
    • Pseudo-Relevance Feedback 回馈机制不断优化结果
  3. 基于深度模型的方法

    • 使用 Sentence-BERT 得到 query 的 dense vector 表示
    • KNN 查找 top-k 最相近的历史 queries 并合并它们的 tokens
    • 或者 fine-tune MLM head 来预测应该加入哪些新 terms
  4. LLM辅助改写

    Q: “如何评价特斯拉最新发布的Cybertruck?”
    
    A: 
    - Tesla Model X/Pickup Truck Comparison?
    - Electric Pickup Market Analysis Including Rivian/Ford Lightning?
    - CyberTruck Design Features And Safety Ratings Review?
    

以上就是关于查询扩展的基本介绍以及它在 RAG 场景下的重要价值所在!

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐