【DeepSeek】【Dify】:用 Dify 对话流+标题关键词注入,让 RAG 准确率飞跃
1 构建对话流处理数据
初始准备
文章大纲摘要
数据标注和清洗
代码执行
特别注解
2 对话流测试
准备工作
大纲生成
清洗片段
整合分段
3 构建知识库
构建
召回测试
4 实战应用测试
关键词提取
智能总结
测试
1 构建对话流处理数据
初始准备
构建对话变量
用来存储处理的大纲
start
文档提取器
提取上传文件的文字内容
代码执行
提取文档前100000
防止溢出模型
文章大纲摘要
将文章中的标题和摘要提取出来为一个大纲树,作为后续添加标题处理的重要凭证
提示词
你是一名专业的文档分析师,擅长从技术文档/论文中提取结构化大纲。你的任务是:
- 识别标题层级(H1-H6)
- 统计章节分布与内容概要
- 输出带缩进层级的摘要树任务执行步骤:
1. 通读文档,标记所有标题(格式如#、##等);
2. 按缩进层级构建大纲树(H为一级,H2为二级,以此类推)
3. 为每个章节生成1-2句内容摘要;
4. 输出Markdown格式的层级列表,包含标题和摘要。
例如
输出格式:
markdown
- [标题层级] 标题文本摘要: 本节核心内容(100字以内)示例输入:
# 引言
## 研究背景
### 行业现状
## 研究方法示例输出:
- [H1]引言摘要:阐述研究背景与方法论-[H2] 研究背景摘要:分析行业现状与问题-[H3]行业现状摘要:描述当前市场数据-[H2] 研究方法摘要:说明实验设计与技术路线注:基于原文来设计,不允许补充内容,不允许扩写内容/
变量赋值
将处理的大纲存储到对话变量里面,采用覆盖的方式,每一次对话都会有新的大纲存储
赋值之后输出一下大纲查看
数据标注和清洗
主要是对文章的分段控制和标题关键词提取
分段采用大纲中的最小级别的标题
标题采用父子标题均全部保存和段落关键词提取
其余为清洗数据,段落合并等处理
其中反复提及标题父子关系,由字段段落标题开始,直至H1根标题,防止出现只有本段落标题的情况
提示词
你是一个专业数据清洗及标注工程师;
请先阅读并理解本文档的全部大纲,
<文本大纲>为:{{#conversation.file_catalog#}}
再按照以下规则处理文本,
<文本内容>为: {{#context#}}一、数据清洗:
1. 提取结构化正文
2. 过滤噪声内容,移除页眉/页脚、广告、版权声明、乱码、空白行、无效数据行、重复段落、段落序号数字(1,2,3...)
3. 自动合并碎片化段落(<80字符且无标点)
4. 识别并标记专业术语
5. 如果文本内容为没有任何含义的符号,这段内容直接清除不需要输出
6. html标签的表格作为一个整体段落,保留原始html标签不要有任何省略行为二、数据标注:
1. 动态分段机制
- 基础规则:以大纲中最小标题层级作为强制分段依据
- 同级标题处理:连续出现相同层级标题时,每个标题内容单独成段
- 混合层级处理:当出现更高级标题时,从该高级标题开始重新计算层级
- 对话类强制分段规则:每3轮对话必须拆分段落
- 保留逻辑标记符:如"首先/其次/最后"等序列词需要在通一段落2. 标签tags构成
标题:采用文档结构树继承机制,严格遵循父子层级关系:
- 自底向上逐级提取:从段落直接归属的最小标题(如H3)开始
- 向上追溯路径:H3→H2→H1(每个节点仅保留直接父节点)
- **禁止横向继承**:不得包含同级标题(如H2-1下的段落不得继承H2-2标题)
- 终止条件:直至根标题(H1)为止(
- **特别注意**:一定要保留所有直系父子层级标题,每一层级的标题作为单独的tag保存,如果本身是H2级别的段落,也要向上追溯路径:H2→H1,获取H1根标题保存)
- **动态解析要求**:系统需自动解析输入文档的标题层级结构,不依赖预设标题名称关键词: 关键词1/关键词2/关键词3/关键词4/关键词5/关键词6/关键词7/关键词8/关键词9/关键词10/专业术语等(从文段获取10个左右的关键词与元数据,同时要加上识别到的专业术语,如果文段过短,可获取3个左右的核心关键词)3. 特殊处理
冲突解决机制
- 当相邻段落标签重复率>60%,触发智能合并
- 语义断裂检测:使用<gap>标记逻辑跳跃点4. 示例:
输入段落:
"除非谷歌和 OpenAI 改变态度,选择和开源社区合作,否则将被后者替代",据彭博 和 SemiAnalysis 报道,4 月初,谷歌工程师 Luke Sernau 发文称,在人工智能大语言模 型(Large Language Models,LLM,以下简称"大模型")赛道,谷歌和 ChatGPT 的推 出方 OpenAI 都没有护城河,开源社区正在赢得竞赛。
这一论调让公众对"年初 Meta 开源大模型 LLaMA 后,大模型大量出现"现象的关注推 向了高潮,资本市场也在关注大公司闭源超大模型和开源大模型谁能赢得竞争,在"模 型""算力""数据"三大关键要素中,大模型未来竞争格局如何,模型小了是否就不再 需要大量算力,数据在其中又扮演了什么角色?……本报告试图剖析这波开源大模型风 潮的共同点,回顾开源标杆 Linux 的发展史,回答以上问题,展望大模型的未来。期望输出下面这样格式的内容:
```json
{
"segment_01":{
"text": “谷歌工程师Luke Sernau认为,谷歌和OpenAI在AI大模型领域缺乏护城河,开源社区(如Meta的LLaMA)正逐渐占据优势。这一观点引发了对闭源与开源模型竞争格局的讨论,涉及模型、算力、数据三大要素的未来影响。报告通过分析开源大模型风潮的共同点,并类比Linux的发展历史,探讨了开源模式是否将主导AI领域,以及小模型、算力需求和数据角色的演变趋势。”,
“tags”: [“开源大模型 ”,"AI竞争","MetaLLaMA,"闭源VS开源"]
},
}
```注意:
1. text是原文部分,不允许修改和扩展,直接使用格式清洗之后的原文内容
2. 标签tags里面要列出所有的标题,识别内容后,标题参考<文本大纲>,生成时,不需要带上层级序号
3. 如果是有条文类的文档,比如规则、法律类等文档,tags里面需要标明是第几章,第几条
4. tags除了上述外,还要再从文段获取10个左右关键词
5. tags内容放在一行,关键词用英文双引号""包围,用应为逗号分割即可
6. 要特别注意“标签tags构成”中标题的规则,一定保留所有直系父子层级标题
模板转化
输出段落
代码执行
将数据标注和清洗中的段落片段合并成dify父子分段的文本,以&&&&为父分块,###为子分块标记
import re
from typing import Dict, Listdef main(content: str,
) -> Dict[str, str]:try:# 增强正则表达式(保持原有逻辑)segment_pattern = re.compile(r'"segment_\d+"\s*:\s*{\s*"text"\s*:\s*"((?:[^"\\]|\\.|\\\n)*)"\s*,\s*"tags"\s*:\s*\[([^\]]*)\]\s*}',re.DOTALL)total_segments = 0results = []# 处理内容中的JSON块json_blocks = re.findall(r'```json(.*?)```', content, re.DOTALL)if json_blocks:json_content = "".join(json_blocks)# 提取所有段落for match in segment_pattern.finditer(json_content):total_segments += 1# 处理文本内容(保留原始换行)text = match.group(1).replace('\\"', '"').replace('\\n', '\n').strip()# 保持标签原始顺序tags = re.findall(r'"((?:[^"\\]|\\.)*)"', match.group(2))# 收集结果results.append({'text': text,'tags': tags})# 构建输出字符串output = ""for segment in results:output += f"{segment['text']}###\n"output += f"{'###'.join(segment['tags'])}\n"output += "&&&&\n"# 返回处理结果(包含格式化字符串)return {"result": f"成功解析 {total_segments} 个段落","output": output.strip() # 去除末尾多余换行}except Exception as e:return {"result": f"处理失败: {str(e)}"}
输出到控制台
较短的单文件到此为止即可,不必看特别注解
特别注解
可以将数据标注和清洗升级为迭代处理
这就要求我们在读入文本之后,对读入的文本分块(md格式的可以按照一级标题)
在迭代结束之后,需要将多个迭代内容惊醒整合,与此同时文件保存,dify的文件内容会保存到sandbox沙箱中去,取其中下载文件即可
后续可升级为多文件处理
2 对话流测试
准备工作
上传文件
文件源码
# SuperCdem环境安装教程下面教程针对vs2019和cuda的安装进行讲解,若不进行开发,只需使用的情况下,进行第一步安装CUDA即可。## 1. CUDA 安装和配置1. 首先先判断电脑中当前的GPU驱动所支持的最高CUDA版本,方法如下:打开 NVIDIA 控制面板(桌面右键) -> 选择左下角的系统信息 -> 组件<img src="SuperCDEM环境安装教程.assets/image-20230830095519527.png" alt="image-20230830095519527" style="zoom: 50%;" /><img src="SuperCDEM环境安装教程.assets/image-20230830095316652.png" alt="image-20230830095316652" style="zoom: 90%;" />图中所示,当前GPU驱动所支持的最高驱动版本为CUDA 11.2.162,本程序要求安装CUDA 11.0.3。GPU驱动所支持的最高CUDA版本应高于CUDA 11.0.3,若不满足要求,请在NVIDIA官网更新GPU驱动程序。2. 下载CUDA toolkit 下载地址:https://developer.nvidia.com/cuda-toolkit-archive;目前程序兼容cuda toolkit 11.0.3 以上的版本。<img src="SuperCDEM环境安装教程.assets/image-20230830101405505.png" alt="image-20230830101405505" style="zoom: 30%;" />3. 安装CUDA toolkit安装cuda时,第一次会让设置临时解压目录,第二次会让设置安装目录;临时解压路径,保持默认路径安装。安装结束后,临时解压文件夹会自动删除;安装目录,请保持默认安装目录,**不要修改**;其他部分请保持默认安装配置。4. 验证是否安装成功运行cmd,输入nvcc --version 即可查看CUDA版本号。显示如下提示,即表示安装成功。<img src="SuperCDEM环境安装教程.assets/image-20230830105059624.png" alt="image-20230830105059624" style="zoom: 45%;" />5. CUDA环境变量配置配置电脑的环境变量,右击此电脑→属性→高级系统设置→环境变量;在系统变量里添加如下内容:```jsCUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v12.2CUDA_LIB_PATH = %CUDA_PATH%\lib\x64CUDA_BIN_PATH = %CUDA_PATH%\binCUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64```通过点击图片中 “新建” 和 “编辑”即可添加和修改系统变量。需要注意 `CUDA_PATH` 和 `CUDA_SDK_PATH`,这两个系统变量填写的是绝对路径,路径的最后 `v12.2` 是所安装的 cuda toolkit 的版本号,因此根据用户电脑所安装的版本对应填写,要求最低版本号为v11.0。<img src="SuperCDEM环境安装教程.assets/image-20240410153052130.png" alt="image-20240410153052130" style="zoom:50%;" />## 2. Visual Studio 安装Visual Studio推荐安装VS2015,安装教程可参考手册《基于Genvi平台的数值模拟软件开发--开发环境搭建.pdf》,若需要安装更高版本的VS,需配置VS2015的运行环境,下面以VS2019为例,进行Visual Studio安装。### 1.1 Visual Studio 2019 下载安装下载链接:[Visual Studio 2019 版本 16.11 发行说明 | Microsoft Learn](https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes)安装选项:勾选图中所示选项<img src="SuperCDEM环境安装教程.assets/image-20230830090610285.png" alt="image-20230830090610285" style="zoom: 40%;" /><img src="SuperCDEM环境安装教程.assets/image-20230830090901608.png" alt="image-20230830090901608" style="zoom:43%;" />Windows SDK (10.0.14393.0) 安装- 下载地址:https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive/<img src="SuperCDEM环境安装教程.assets/image-20230830110454608.png" alt="image-20230830110454608" style="zoom: 40%;" />后续选择默认安装即可。## 3. Visual Studio 配置打开解决方案时,需要重定向项目,配置按下图所示:<img src="SuperCDEM环境安装教程.assets/image-20230830114633851.png" alt="image-20230830114633851" style="zoom: 67%;" />选择解决方案中的bCdem -> 属性,按下图进行修改<img src="SuperCDEM环境安装教程.assets/image-20230830110239806.png" alt="image-20230830110239806" style="zoom: 40%;" />
大纲生成
- [H1] SuperCdem环境安装教程摘要:本文档详细介绍了SuperCdem环境的安装步骤,包括CUDA和Visual Studio的安装与配置。- [H2] 1. CUDA 安装和配置摘要:本节讲解如何判断GPU驱动支持的CUDA版本、下载并安装CUDA Toolkit,并完成环境变量配置。- [H3] 判断GPU驱动支持的CUDA版本摘要:通过NVIDIA控制面板查看当前GPU驱动支持的最高CUDA版本,确保满足程序最低要求。- [H3] 下载CUDA Toolkit摘要:从NVIDIA官网下载兼容的CUDA Toolkit版本(最低要求为11.0.3)。- [H3] 安装CUDA Toolkit摘要:按照默认路径完成CUDA Toolkit的安装,避免修改临时解压目录或安装目录。- [H3] 验证安装是否成功摘要:通过运行`nvcc --version`命令验证CUDA是否安装成功。- [H3] CUDA环境变量配置摘要:在系统环境变量中添加必要的CUDA路径,确保路径版本号与实际安装版本一致。- [H2] 2. Visual Studio 安装摘要:推荐安装VS2015或VS2019,并提供详细的安装选项说明及Windows SDK的安装指导。- [H3] 1.1 Visual Studio 2019 下载安装摘要:从Microsoft官网下载Visual Studio 2019,并勾选必要组件进行安装。- [H3] Windows SDK (10.0.14393.0) 安装摘要:从微软开发者网站下载并安装指定版本的Windows SDK。- [H2] 3. Visual Studio 配置摘要:介绍如何重定向项目并配置解决方案中的bCdem属性,确保开发环境正常运行。
清洗片段
可以看到前三个分别为H3 H2 H1级别的标题
后面为本段落的关键词
<think> 好的,我现在需要处理用户提供的SuperCdem环境安装教程文本,按照给定的规则进行数据清洗和标注。首先,我需要仔细理解用户的要求和大纲结构,确保每一步都正确执行。 首先进行数据清洗: 1. **提取结构化正文**:用户提供的文本已经有一定的结构,包含标题、步骤和图片引用。我需要确认这些内容是否完整,并去除无关部分。 2. **过滤噪声内容**:检查是否有页眉、页脚、广告或版权声明。看起来原文主要是安装步骤,可能没有这些内容。需要移除重复段落和空白行。例如,原文中的图片路径如`<img src="...">`可能需要保留,但用户提到html表格要保留原始标签,所以图片标签可能需要保留,但不确定是否属于表格。这里可能需要进一步判断,但根据规则,非表格的html标签可能不需要保留,但用户没有特别说明,所以可能保留。 3. **合并碎片化段落**:查看是否有短而无标点的段落。例如原文中的步骤描述是否被错误分割。例如,步骤5中的环境变量配置部分可能有多个条目,但应合并为一个段落。 4. **识别专业术语**:如CUDA Toolkit、Visual Studio、Windows SDK、nvcc等术语需要标记。 5. **清除无意义符号**:原文中没有明显的乱码或无效符号,所以这一步可能不需要处理。 6. **处理html表格**:原文中没有表格,只有图片引用,所以这一步可能不适用。 接下来进行数据标注: 1. **动态分段**:根据大纲的层级结构,H1是根标题,下面是H2和H3。需要根据标题层级来分段。例如,每个H2标题下的内容作为一个段落,其下的H3标题内容作为子段落。但用户要求以最小标题层级作为分段依据,所以每个H3下的内容单独成段,但如果连续出现同级标题,则单独成段。例如,在CUDA安装部分,每个H3步骤应作为单独段落,但根据用户提供的示例输出,可能需要将整个H2下的内容合并为一个段落,但需要根据实际内容判断。 2. **标签tags构成**:需要提取每个段落的直系标题路径。例如,CUDA安装和配置(H2)下的判断GPU版本(H3)段落的标签应包括H3标题、H2标题和H1标题。但根据用户要求,每个段落的标签应包括所有直系父标题。例如,H3的段落标签应为H3标题、H2标题、H1标题,每个作为单独的tag。同时,提取关键词,如CUDA Toolkit、NVIDIA控制面板、环境变量等专业术语。 3. **特殊处理**:检查是否有相邻段落标签重复,可能需要合并,但原文结构较清晰,可能不需要。语义断裂检测可能需要添加<gap>,但原文连贯性较好,可能不适用。 现在,处理具体内容: - **H1标题**:SuperCdem环境安装教程 - **H2标题1**:1. CUDA 安装和配置,包含多个H3子标题。 - **每个H3步骤**应作为单独段落,标签包括H3、H2、H1。 - **H2标题2**:2. Visual Studio 安装,包含H3子标题。 - **H2标题3**:3. Visual Studio 配置,无子标题,内容作为段落。 处理时需要注意: - 图片引用可能需要保留为html标签,但用户示例输出中没有图片,可能需要在清洗时移除,但根据规则,非表格的html标签可能需要保留。但用户示例中输出没有图片,可能需删除图片标签,只保留文本内容。 - 步骤中的编号(如1. 判断GPU驱动...)是否需要移除?根据规则,需要移除段落序号数字,所以步骤前的数字需要删除,但内容保持顺序。 - 环境变量配置中的代码块需要保留,作为整体段落,可能用反引号包裹。 最终,每个段落需要生成对应的text和tags,tags包括标题路径和关键词。例如,CUDA环境变量配置段落的tags应为["CUDA环境变量配置", "CUDA 安装和配置", "SuperCdem环境安装教程", "环境变量", "系统变量", "CUDA_PATH"]等。 需要确保每个段落的标签正确继承父标题,并提取足够的关键词和专业术语。同时,保持原文内容不变,仅进行清洗和标注。 </think>```json { "segment_01":{ "text": "下面教程针对vs2019和cuda的安装进行讲解,若不进行开发,只需使用的情况下,进行第一步安装CUDA即可。", "tags": ["SuperCdem环境安装教程", "CUDA安装", "开发环境配置", "Visual Studio", "GPU驱动"] }, "segment_02":{ "text": "通过NVIDIA控制面板查看当前GPU驱动支持的最高CUDA版本,确保满足程序最低要求。打开NVIDIA控制面板(桌面右键)->选择左下角的系统信息->组件", "tags": ["判断GPU驱动支持的CUDA版本", "CUDA 安装和配置", "SuperCdem环境安装教程", "NVIDIA控制面板", "系统信息", "组件", "GPU驱动", "版本检测"] }, "segment_03":{ "text": "从NVIDIA官网下载兼容的CUDA Toolkit版本(最低要求为11.0.3)。下载地址:https://developer.nvidia.com/cuda-toolkit-archive", "tags": ["下载CUDA Toolkit", "CUDA 安装和配置", "SuperCdem环境安装教程", "NVIDIA官网", "CUDA Toolkit", "版本兼容性", "下载链接"] }, "segment_04":{ "text": "按照默认路径完成CUDA Toolkit的安装,避免修改临时解压目录或安装目录。安装cuda时,第一次会让设置临时解压目录,第二次会让设置安装目录;临时解压路径保持默认路径安装,安装结束后临时解压文件夹会自动删除;安装目录请保持默认安装目录不要修改;其他部分请保持默认安装配置。", "tags": ["安装CUDA Toolkit", "CUDA 安装和配置", "SuperCdem环境安装教程", "默认路径", "临时解压目录", "安装目录", "系统配置"] }, "segment_05":{ "text": "通过运行`nvcc --version`命令验证CUDA是否安装成功。运行cmd,输入nvcc --version即可查看CUDA版本号。显示如下提示即表示安装成功。", "tags": ["验证安装是否成功", "CUDA 安装和配置", "SuperCdem环境安装教程", "nvcc命令", "版本验证", "命令行工具"] }, "segment_06":{ "text": "在系统环境变量中添加必要的CUDA路径,确保路径版本号与实际安装版本一致。配置电脑的环境变量,右击此电脑→属性→高级系统设置→环境变量;在系统变量里添加如下内容:CUDA_PATH = C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v12.2 CUDA_SDK_PATH = C:\\ProgramData\\NVIDIA Corporation\\CUDA Samples\\v12.2 CUDA_LIB_PATH = %CUDA_PATH%\\lib\\x64 CUDA_BIN_PATH = %CUDA_PATH%\\bin CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\\bin\\win64 CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\\common\\lib\\x64", "tags": ["CUDA环境变量配置", "CUDA 安装和配置", "SuperCdem环境安装教程", "环境变量", "系统变量", "CUDA_PATH", "SDK路径", "版本匹配"] }, "segment_07":{ "text": "从Microsoft官网下载Visual Studio 2019,并勾选必要组件进行安装。安装选项需勾选C++桌面开发、Windows 10 SDK等核心组件。", "tags": ["Visual Studio 2019 下载安装", "Visual Studio 安装", "SuperCdem环境安装教程", "Microsoft官网", "C++开发", "Windows SDK", "组件选择"] }, "segment_08":{ "text": "从微软开发者网站下载并安装指定版本的Windows SDK(10.0.14393.0)。下载地址:https://developer.microsoft.com/zh-cn/windows/downloads/dk-archive/,后续选择默认安装即可。", "tags": ["Windows SDK安装", "Visual Studio 安装", "SuperCdem环境安装教程", "微软开发者网站", "SDK版本", "默认安装"] }, "segment_09":{ "text": "打开解决方案时需要重定向项目,配置解决方案中的bCdem属性。选择解决方案中的bCdem->属性,修改平台工具集为Visual Studio 2019(v142),Windows SDK版本为10.0.14393.0。", "tags": ["Visual Studio 配置", "SuperCdem环境安装教程", "解决方案重定向", "平台工具集", "Windows SDK版本", "项目属性配置"] } ```
整合分段
整理成可以用&&&&为父块分段符号,###为字段分块符号的文本用作后续处理
3 构建知识库
构建
采用高质量父子分段,父块分隔符为&&&&,子块分隔符为###
可以看到预览块中,标题和关键词作为一个单独的小句子存在,因为父子分段的存在,会因此通过子关键词而命中整个父段落,来提高RAG命中率
召回测试
输入关键字,完美命中
输入根标题则全部命中,让这些分开的段落根据标签有了新的组织形式
4 实战应用测试
关键词提取
提示词
你是一个资深信息检索工程师
一、任务目标
从用户问题{{#sys.query#}}中精准提取6~8个知识库搜索关键词,要求如下:
1. 覆盖核心检索意图
2. 消除歧义与模糊表达二、处理流程
1. 语义焦点识别:- 使用注意力机制定位核心实体(产品/服务/错误代码)- 示例:> "ChatGPT 发布后不久,Meta 就开源了类 GPT 大语言模型 LLaMA,此后, AlpacaVicunaKoala 等多个大模型诞生,它们以远低于 ChatGPT 的模型规模和成本,实现了令人瞩目的性能,引发业内人士担忧谷歌和 OpenAI 都没有护城河,大模型门槛正被开源踏破,不合作就会被取代。资本市场也在关注大模型未来竞争格局如何,模型小了是否不再需要大量算力,数据在其中又扮演了什么角色?本报告试图分析这波开源大语言模型风潮的共同点,回顾开源标杆 Linux 的发展史,回答这些问题。" -> [开源大模型,模型小化,ChatGPT]2. 术语标准化:- 映射同义词到知识库官方术语> “手提电脑” -> “笔记本电脑”- 转化口语化表达:> "存不上文件" -> "文件保存失败"3. 上下文增强:- 识别隐含条件:> "最新版软件闪退" -> ["v.2.3.1","程序崩溃"]- 关联领域知识:> "合同审批卡在财务部" -> ["审批流程","财务节点超时"]4. 消除歧义:- 对多一次添加限定词:> "苹果服务器中断" ->["Apple服务状态","系统故障"]- 排除非相关实体:> "Java开发遇到内存泄露" -> 排除 ["咖啡豆产地"]三、注意:
1. 如果语义特别简单,直接返回原文
2. 最终输出只包含提取的关键词,输出采用严格格式:纯文本关键词+英文逗号分割
代码执行
将关键字提出
def main(arg1: str) -> dict:if not arg1:return {'result':[]}arg1=arg1.strip().strip('"')items = [item.strip() for item in arg1.split(',')]return {"result": items[:30]}
将多个关键词通过迭代的方式查询知识库
智能总结
提示词
你是一名专业的知识库分析师,擅长从结构化知识库中精准提取信息,并将专业内容转化为用户易懂的表达方式,
你需要按照以下规则,回复用户的问题
{{#sys.query#}};知识库返回的内容:{{#context#}}一、应答协议
IF 知识库返回内容为空 OR 置信度<0.3;-> 执行空值应答流程
ELSE:-> 执行知识整合输出二、 应答生成规则
1. 空值应答(严格触发条件):- 禁止自行编造信息- 直接输出“根据先有资料,我暂时无法提供准确的解答,建议通过(帮助中心)提交详细问题”
2. 有效应答:- 采用 [结论先行] 结构- 关键数据标注来源编号 (例: [KB_2025_01])- 复杂内容分店说明(不超过3级)
3. 自然语言转化:- 技术术语 -> 用户可理解表述- 法律条款 -> 标注时效性(截止2025年)- 操作步骤 -> 添加风险提示(如“需要管理员权限”)三、核心职责
1. 严格基于知识库已有内容进行回答
2. 对复杂概念进行降维解释(保持原意)
3. 确保信息准确性和可操作性
4. 拒绝回答知识库范围外的问题
测试
效果如下
查看日志判断是否正确
关键词提取正确
迭代查询知识库,通过关键词命中段落
通过多个片段智能输出