正文
最简单方法:Query 直接变 Embedding是最理想化、也是效果最差的实现方式。
痛点:用户输入的 Query 往往是碎片化、含糊不清且具有极强误导性的。 直接转向量(Dense Retrieval)容易产生“语义漂移”,而单纯依赖关键词(Sparse Retrieval)又会错失同义词。
Query 重写与增强 Pipeline
第一阶段:预处理与清洗 (Sanitization)
- 纠错 (Spell Check):用户打错字(如“深度学系”->“深度学习”)会导致 Embedding 偏移。
- 敏感词过滤 (Safety Guardrail):拦截非法请求。
- 去停用词/分词:针对传统关键词检索的优化。
第二阶段:Query 变换 (Query Transformation) —— 核心步骤
这是解决“语义差距”最有效的手段:
- Query 扩展 (Query Expansion):利用 LLM 生成原问题的 3-5 个同义改写版本。这样可以从多个角度覆盖向量空间,提高召回率。
- 假设性文档嵌入 (HyDE):
- 逻辑:让 LLM 先写一个“伪答案”,然后用伪答案的向量去知识库搜真实文档。
- 理由:Query 和 Document 之间存在“不对称性”(问题很短,答案很长),Query 搜答案很难,但“伪答案”搜“真答案”在语义上更接近。
- Query 压缩与重写 (Rewriting):在多轮对话中,用户说“那它支持什么?”,LLM 需要将其重写为“Qwen3-14B 模型支持哪些工具调用?”。
第三阶段:多路路由 (Query Routing)
- 意图识别:判断 Query 是要“查知识库”、还是“闲聊”、或是“执行动作(如计算器)”。
- 元数据过滤 (Self-Querying):如果 Query 是“2023年关于华为的财报”,系统应自动提取出
{"year": 2023, "subject": "Huawei"},并在数据库中进行 Metadata Filter,而不是全量语义检索。
第四阶段:多路召回与融合 (Hybrid Search)
- 向量检索 (Vector) + 全文检索 (BM25)。
- RRF (Reciprocal Rank Fusion):将两者的结果按排名加权合并。