查询分解组件
查询分解是一种流程组件,旨在通过将复杂的输入查询分解为独立、可管理的子查询,提升 AI 驱动流程的精度和效果。此过程有助于确保用户原始问题的每个方面都得到关注,从而获得更全面、准确的回应。
该组件的功能是什么?
查询分解组件的主要功能是将输入文本(通常是复杂或多部分的问题)拆分为若干个备选或子查询。这些子查询代表为完整回答原始查询所需解决的各个信息点。这种方式在问题宽泛、模糊或由多个交织部分组成的场景下尤其有用。
主要特性与输入
| 输入名称 | 类型 | 必需 | 描述 |
|---|---|---|---|
| 输入文本 | Message | 是 | 你希望拆分为多个备选查询的主要文本或问题。 |
| 聊天历史 | InMemoryChatMessageHistory | 否 | 提供先前的聊天消息,为生成更精确的子查询提供上下文。 |
| LLM(模型) | BaseChatModel | 否 | 用于生成备选查询的语言模型。 |
| 包含原始查询 | Boolean | 否 | 是否在备选查询列表中包含原始查询的选项。 |
| 系统消息 | String | 否 | 可附加到提示中的额外系统级指令,用于自定义行为。 |
- 输入文本(必填):需要分析和分解的文本,即用户的主要查询。
- 聊天历史:(可选)如有,可以提供先前的对话上下文,以提升生成子查询的相关性和准确性。
- LLM(模型):(可选)指定用于分解过程的大型语言模型(LLM),便于灵活集成不同 AI 模型。
- 包含原始查询:(高级,可选)控制输出是否在生成的子查询旁边也包含原始查询。
- 系统消息:(高级,可选)允许你添加自定义系统消息,引导输出或为模型提供额外指令。
输出
- 消息:组件输出一个消息对象,包含备选查询或子问题的列表。可作为后续 AI 处理步骤(如分别回答、检索或进一步分析)的输入。
为什么有用?
查询分解在需要多步推理或单个查询覆盖多个主题的复杂 AI 流程中非常有价值。通过拆解查询,你可以:
- 确保复杂问题的每个部分都被覆盖。
- 促进更准确的信息搜索或检索。
- 在 AI 流水线中实现模块化、逐步处理。
- 提高 AI 答案的透明度与可解释性。
示例场景
- 客户支持: 将冗长的客户咨询拆解为单独的问题,便于针对性回应。
- 研究辅助: 将宽泛的研究问题分解为具体的子主题,以便更聚焦地检索文献。
- 多步推理: 为需要顺序解决问题或规划的 AI 代理准备分步问题。
总结表
| 特性 | 描述 |
|---|---|
| 输入 | 复杂用户查询(文本) |
| 输出 | 备选/子查询列表(消息对象) |
| 支持上下文 | 支持(通过聊天历史) |
| 模型选择 | 支持(可指定自定义 LLM) |
| 高级选项 | 包括原始查询、自定义系统消息 |
将查询分解集成到你的 AI 流程中,可以更智能、更细致地处理复杂查询,从而获得更优结果和更佳的用户体验。
