问题域/PD-570

查询改写

Query Rewriting

结合对话上下文改写模糊查询,拆分多意图问题为独立子查询

子问题

1.如何判断查询是否需要上下文

2.如何拆分复合查询

3.如何保持改写后语义等价

4.如何平衡对话摘要的长度与信息完整性

5.如何防止领域特定术语被过度改写

6.如何处理改写后语义漂移的检测

各项目的解法1 solutions

Signals

横向对比

维度agentic-rag-for-dummies
改写触发条件每次查询前强制改写,无跳过机制
上下文来源对话摘要(最近 6 轮,30-50 词)
结构化输出Pydantic QueryAnalysis(3 字段)
多问题拆分最多 3 个子查询,Send 并行执行
失败处理标记 is_clear=False,interrupt 等待澄清
领域术语保护Prompt 规则明确区分领域术语和通用指代

最佳实践

1.使用结构化输出定义改写结果

2.区分领域特定术语和通用指代

3.多问题拆分最多 3 个子查询

4.改写失败时标记为 unclear

5.用 Pydantic Field description 为 LLM 提供字段语义提示

6.改写成功后删除原始消息历史(RemoveMessage),避免污染子查询上下文

7.对话摘要只保留最近 N 轮,用 temperature=0.2 保证稳定性

8.澄清消息长度校验(≥10 字符),防止空响应