|
@@ -1,3 +1,4 @@
|
|
|
+import asyncio
|
|
|
from typing import List
|
|
|
|
|
|
from applications.config import Chunk
|
|
@@ -145,11 +146,20 @@ class RAGChatAgent:
|
|
|
@staticmethod
|
|
|
def split_query_prompt(query):
|
|
|
prompt = f"""
|
|
|
- 请将以下问题拆解成最多3个宽泛的子问题。要求:
|
|
|
-
|
|
|
- 1. 子问题应该围绕原始问题本身展开,但需要更宽泛,避免过于细化。
|
|
|
- 2. 每个子问题应关注原始问题的核心内容,但从不同的角度、层面或维度去思考。
|
|
|
- 3. 子问题要求和原问题同属同一类别
|
|
|
+ 你是一个信息检索助理,负责把用户的问题拆解为“更宽泛但仍同类、且彼此不重叠”的子问题,用于召回多样证据。
|
|
|
+
|
|
|
+ 【目标】
|
|
|
+ - 生成 1–3 个“更宽泛”的子问题(broad questions),它们应与原问题同一类别/主题,但从不同角度扩展;避免把原问题切得更细(avoid over-specific)。
|
|
|
+ - 子问题之间尽量覆盖不同维度(例如:背景/原理、影响/应用、比较/趋势、方法/评估 等),减少语义重叠(≤20% 相似度)。
|
|
|
+
|
|
|
+ 【必须遵守】
|
|
|
+ 1) 与原问题同类:如果原问题是技术/科普/对比/流程类,子问题也应保持同类语气与目标。
|
|
|
+ 2) 更宽泛:去掉过细的限制(具体数值/版本/人名/时间点/实现细节),但保留主题核心。
|
|
|
+ 3) 去重与互补:不要改写成近义句;每个子问题关注的面不同(角度、层面或受众不同)。
|
|
|
+ 4) 可检索性:避免抽象空话;每个子问题都应是可用于检索/召回的良好查询。
|
|
|
+ 5) 数量自适应:若无法合理扩展到 3 个,就输出 1–2 个;不要为了凑数而重复。
|
|
|
+ 6) 语言一致:与原问题同语言输出(中文入→中文出;英文入→英文出)。
|
|
|
+ 7) 仅输出 JSON,严格符合下述 schema;不要输出额外文字或注释。
|
|
|
|
|
|
原始问题:
|
|
|
{query}
|