查询改写方案设计
1. 核心痛点与改写目标
本方案旨在通过引入专用小语言模型,解决知识库问答场景中的三大核心障碍。
1.1 语义鸿沟:口语与专业的错配
现象:用户习惯用口语化、多变的日常表达(如“那个白药片”),而知识库采用严谨、标准化的专业术语(如“对乙酰氨基酚片”)。
根因:两者在表达方式和颗粒度上存在根本性偏差,导致基于关键词的检索直接失效。
目标:利用SLM将“用户的白话”实时翻译为“系统能懂的专业查询”,弥合表达差异。
1.2 意图模糊与稀疏
现象:用户的初始提问往往简短、笼统(如“机器坏了”),甚至包含歧义,缺乏足够的检索特征。
根因:提问者可能不熟悉专业术语,或本身对问题边界描述不清。
目标:SLM需结合上下文,将模糊意图显式化、规范化,扩充为指向明确的检索查询(如“XYZ型号机器无法正常启动的故障排查步骤”)。
1.3 上下文依赖与信息缺失
现象:多轮对话中,大量使用“它”、“那个”、“上次的”等指代词,或省略关键背景。
根因:人类对话天然具有信息压缩和语境依赖的特性,但检索系统需要完全独立的完整查询。
目标:SLM必须融合对话历史,完成指代消解和信息补全,生成自包含、无需回看就能理解的独立查询。
2. 技术方案
为解决上述问题,我们设计了一个以SLM为核心,与检索链路并行协同的改写架构。
2.1 核心组件:专用改写SLM
定位:一个参数量小、延迟极低的文本到文本生成模型。它不是通用大模型,而是专精于“查询改写”任务的垂直模型。
输入:融合了当前问题、K轮历史对话的结构化文本。
输出:一个或多个改写后的规范化查询字符串。
训练:遵循上轮讨论的流程,使用由强模型蒸馏的“口语-专业”改写对数据进行LoRA高效微调。
2.2 系统架构:并行-串行混合流水线
为将延迟影响降至最低,整个流程设计为两阶段流水线:
第一阶段(并行,低延迟):
线路A(快速检索):用户原始口语直接送入检索引擎,快速返回一批结果。
线路B(SLM改写):同步运行SLM,将原始问题改写为规范查询。
价值:线路A确保了基础响应速度,线路B的延迟被此并行设计所“遮蔽”。
第二阶段(串行,高精度):
将线路B生成的规范查询,送入同一个检索引擎,获取高精度结果。
结果融合排序:将两路结果合并,利用改写后查询的更高信度,对最终结果进行加权或重排。
2.3 关键策略:问题难度路由
为平衡成本与效果,不将所有问题都送入SLM,而是引入轻量级难度分类器:
简单问题:表述清晰、术语规范、无上下文依赖。直接走原始检索通路,SLM旁路。
复杂问题:包含口语词、指代不明、核心语义模糊。激活SLM改写通路。
价值:只对复杂问题进行资源重构,精准控制计算开销,避免响应延迟平均化上升。
3. 潜在风险与缓解措施
3.1 延迟增加风险
风险描述:引入SLM改写环节,天然会增加系统整体延迟。
缓解措施:
并行架构:如上所述,快速通路保证基础体验。
模型极致优化:采用参数量极小、推理引擎充分优化的SLM,目标延迟控制在50毫秒以内。
分级处理:难度路由策略确保大部分简单查询无需等待SLM。
3.2 语义漂移风险
风险描述:改写过程可能丢失原始问题中的关键实体或意图,产生比原问题更差的查询,导致召回错误。
缓解措施:
改写-原始混合召回:在结果融合阶段,不仅依赖改写后查询,原始查询的结果也会作为重要锚点,防止严重偏离。
引入保真度校验:可训练一个极简的语义相似度模型,判断改写前后的核心意图是否一致,若不一致则弃用改写结果,退回原始查询。
数据与训练侧重:训练SLM时,将“语义保真”作为除流畅度外最重要的奖励信号或损失项。
3.3 成本开销风险
风险描述:引入新模型带来硬件、运维和标注成本。
缓解措施:
模型压缩:选择或蒸馏出极小的模型架构(几十MB级别),部署成本极低。
收益量化:建立在线A/B实验,以核心业务指标(如问题解决率、人工转接率下降幅度)来衡量SLM的投入产出比。确保收益可见、可量化,远超成本。
