From 11acc809c8d370906bbea32ad6e41477cb57bcdb Mon Sep 17 00:00:00 2001 From: ouyangyouzhang Date: Thu, 31 Jul 2025 09:43:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96DifyCompareTest=E7=B1=BB?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E5=9B=9E=E7=AD=94=E5=88=A4=E6=96=AD=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E6=81=A2=E5=A4=8D=E6=97=A7=E7=AD=94=E6=A1=88?= =?UTF-8?q?=E7=9A=84=E5=88=A4=E6=96=AD=E5=B9=B6=E7=AE=80=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=EF=BC=9B=E6=9B=B4=E6=96=B0PromptTemplates=E4=BB=A5?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E5=90=8C=E4=B9=89=E8=AF=8D=E5=A4=84=E7=90=86?= =?UTF-8?q?=E8=A7=84=E5=88=99=EF=BC=8C=E8=B0=83=E6=95=B4=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=92=8C=E4=BC=98=E5=85=88=E7=BA=A7=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E8=AF=AD=E4=B9=89=E4=BF=9D=E7=9C=9F=E6=80=A7?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rag2_0/dify/DifyCompareTest.py | 8 ++--- rag2_0/intent_recognition/PromptTemplates.py | 34 ++++++-------------- 2 files changed, 14 insertions(+), 28 deletions(-) diff --git a/rag2_0/dify/DifyCompareTest.py b/rag2_0/dify/DifyCompareTest.py index 14728a7..d323464 100755 --- a/rag2_0/dify/DifyCompareTest.py +++ b/rag2_0/dify/DifyCompareTest.py @@ -102,10 +102,10 @@ class DifyCompareTest: answer = result.get('answer', "") if len(answer) == 0: raise Exception(f"回答为空: {result}") - # if old_answer: - # judge_result = self.llm_judge_answer(old_answer=old_answer, now_answer=answer) - # else: - # judge_result="" + if old_answer: + judge_result = self.llm_judge_answer(old_answer=old_answer, now_answer=answer) + else: + judge_result="" judge_result="" # 只取回答的前半部分 answer = answer.split("----------------------------------------")[0].strip() diff --git a/rag2_0/intent_recognition/PromptTemplates.py b/rag2_0/intent_recognition/PromptTemplates.py index 4efdd22..2feb93b 100755 --- a/rag2_0/intent_recognition/PromptTemplates.py +++ b/rag2_0/intent_recognition/PromptTemplates.py @@ -175,16 +175,15 @@ query_rewrite_prompt_pro=""" # 问答优化工程师 **角色**:基于历史对话和术语库重构问题,提升知识库检索准确率。 **最高准则**: -1、保持问题核心意图,但允许在指代消除、背景继承下添加隐含功能词。 +1、保持问题核心意图,允许指代消除 2. 所有新增内容必须源于历史对话或聊天背景,禁止捏造。 3. 归一化替换需严格全词匹配:查询中的词必须与术语库同义词完全一致(不区分大小写)。部分匹配(如子字符串)或不匹配,保留原词 ## 核心原则 1. **指代消除 → 当指示代词("那"/"这")出现时,强制继承历史对话的最新核心主题(如功能或任务),并应用到当前主体。** -2. 背景继承 → 补充历史对话和聊天背景中的隐含信息(包括主题和功能)。 -3. 术语规范 → 提问中出现的同义词(synonymous)替换为标准词(name)并【】标记 -4. 语义保真 → 保持问题核心意图,但允许在指代消除、背景继承下添加隐含功能词。 +2. 术语规范 → 提问中出现的同义词(synonymous)替换为标准词(name)并【】标记 +3. 语义保真 → 保持问题核心意图,允许指代消除 ## 归一化替换规则 1. 只有当问题中的词与术语库中某一项的同义词列表中的某个词完全相同时,才替换为对应的标准词 @@ -205,34 +204,21 @@ query_rewrite_prompt_pro=""" {chat_history} -### 二、重构决策树 -```mermaid -graph TD - A[输入问题] --> B{{包含指示代词?}} - B -- 是 --> C[提取历史最新主题] - C --> D{{主题是否明确?}} - D -- 是 --> E[继承主题到当前问题] - E --> F[执行重构] - D -- 否 --> F - F --> G[补充缺失背景] - G --> H[同义词替换] - H --> I[保留原生专业术语] - B -- 否 --> I -``` +### 一、重构流程 +1、问题是否指代不明,指代不明时根据历史对话补充上下文 +2、问题是否包含同义词,包含同义词时进行同义词转标准词 ### 三、重构优先级 -1. **指代消除 → 当指示代词出现时,优先继承历史对话的核心主题(如功能词),并替换当前问题的动词部分。** -2. 背景继承 → 历史对话中确定的背景信息需要保留。 -3. 同义词转标准词 → 将提问中出现的同义词(synonymous)替换为对应标准词(name) 并使用【】标记 -4. 结构优化 → 保持原问题的5W2H特征,指代消除、背景继承下允许微调意图。 +1. **指代消除 → 当指示代词出现时,结合历史对话补充上下文** +2. 同义词转标准词 → 将提问中出现的同义词(synonymous)替换为对应标准词(name) 并使用【】标记 +3. 结构优化 → 保持原问题的5W2H特征,指代消除、背景继承下允许微调意图。 ## 输出规范 {output_format} ## 质量自检 -- [] **主题是否合理继承?**(当有代词时,历史主题必须注入) +- [] **主题是否合理继承?** - [] 核心诉求是否保留? -- [] 背景信息是否合理补充? - [] 语句是否自然流畅? - [] 避免补充无关信息 """