【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. 拒绝回答知识库范围外的问题

测试

效果如下

查看日志判断是否正确

关键词提取正确

迭代查询知识库,通过关键词命中段落

通过多个片段智能输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/82507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ 开机启动配置教程

RabbitMQ 开机启动配置教程 在本教程中&#xff0c;我们将详细介绍如何配置 RabbitMQ 以实现开机自动启动。此配置适用于手动安装的 RabbitMQ 版本。 环境准备 操作系统&#xff1a;CentOS 7RabbitMQ 版本&#xff1a;3.8.4Erlang 版本&#xff1a;21.3 步骤 1. 安装 Erla…

第N1周:one-hot编码案例

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 一、one-hot编码概念 自然语言处理&#xff08;NLP&#xff09;中的文本数字化&#xff1a;文字对于计算机来说就仅仅只是一个个符号&#xff0c;计算…

Linux 云服务器部署 Flask 项目(含后台运行与 systemd 开机自启)

一、准备工作 在开始正式部署之前,请确认以下前提条件已经准备好: 你有一台运行 Linux 系统(CentOS 或 Ubuntu)的服务器; 服务器有公网 IP,本例中使用:111.229.204.102; 你拥有该服务器的管理员权限(可以使用 sudo); 打算使用 Flask 构建一个简单的 Web 接口; 服务…

散货拼柜业务:多货主财务结算如何高效管理?

散货拼柜业务满足了小批量发货客户的需求&#xff0c;由于无法满足海运整柜的条件&#xff0c;其模式通常涉及多个货主共同分摊同一集装箱的运输项目。这种业务模型虽然在成本上具备优势&#xff0c;但其复杂的财务结算过程往往给公司带来了挑战。 散货拼柜业务的特点在于其小…

数据结构(7)—— 二叉树(1)

目录 前言 一、 树概念及结构 1.1树的概念 1.2树的相关概念 1.3数的表示 1.二叉树表示 2.孩子兄弟表示法 3.动态数组存储 1.4树的实际应用 二、二叉树概念及结构 2.1概念 2.2特殊的二叉树 1.满二叉树 2. 完全二叉树 2.3二叉树的性质 2.4二叉树的存储结构 1.顺序存储 2.链式存储…

SpringBoot+Vue+微信小程序校园自助打印系统

概述​​ 校园自助打印系统是现代化校园建设中不可或缺的一部分&#xff0c;基于SpringBootVue微信小程序开发的​​免费Java源码​​项目&#xff0c;包含完整的用户预约、打印店管理等功能模块。 ​​主要内容​​ ​​ 系统功能模块​​ ​​登录验证模块​​&#xff1a;…

使用 useSearchParams 的一个没有触发控制台报错的错误用法

const searchParams useSearchParams(); // navigate(/?${searchParams.toString()});//带过去的参数会把函数方法也带过去 正确写法应该是用[]解构 使用了数组解构&#xff08;destructuring&#xff09;来提取 useSearchParams 返回的数组中的第一个值 const [searchPara…

Blender的一些设置

1. 将Blender长度单位改为毫米(mm), 并设置guides Grid的缩放系数&#xff0c;避免网格不见了。 2. 布尔操作的(Apply)应用按钮在哪里&#xff1f;好吧&#xff0c;在这里&#xff1a; 可以按下 CTRL A 快捷键。 3. 模型的 移动、旋转、缩放快捷键: G&#xff0c;R&#xff0…

Inno Setup 脚本中常用术语释义

1、目录常量 {app} 应用程序所在的目录。 {win} 系统的 Windows 目录&#xff0c; “C:/WINDOWS”。 {sys} 系统的 Windows 系统&#xff08;System&#xff09;目录&#xff0c;“C:/WINDOWS/SYSTEM”。 {src} 这个文件夹指向安装程序所在的位置。 {pf} 程序…

【java面试】MySQL篇

MySQL篇 一、总体结构二、优化&#xff08;一&#xff09;定位慢查询1.1 开源工具1.2Mysql自带的慢日志查询1.3 总结 &#xff08;二&#xff09;定位后优化2.1 优化2.2 总结 &#xff08;三&#xff09;索引3.1 索引3.2 索引底层数据结构——B树3.3 总结 &#xff08;四&#…

drawio 开源免费的流程图绘制

开源地址 docker-compose 一键启动 #This compose file adds draw.io to your stack version: 3.5 services:drawio:image: jgraph/drawiocontainer_name: drawiorestart: unless-stoppedports:- 8081:8080- 8443:8443environment:PUBLIC_DNS: domainORGANISATION_UNIT: unitOR…

江科大睡眠,停止,待机模式hal库实现

修改主频我们直接在cubeMx上面修改就行了&#xff0c;很方便 睡眠&#xff0c;停止&#xff0c;待机模式是通过对电源的控制来进行的&#xff0c;相关代码在PWR文件里面 SEV&#xff08;Send Event&#xff09; void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SL…

【黄金评论】美元走强压制金价:基于NLP政策因子与ARIMA-GARCH的联动效应解析

一、基本面&#xff1a;多因子模型解析黄金承压逻辑 1. 政策冲击因子驱动美元强势 通过NLP模型对关税政策文本进行情感分析&#xff0c;构建政策不确定性指数&#xff08;PUI&#xff09;达89.3&#xff0c;触发美元避险需求溢价。DSGE模型模拟显示&#xff0c;钢铁关税上调至…

蓝桥云课ROS一键配置teb教程更新-250604

一键配置 echo "250604已经更新不动了"git clone https://gitcode.com/ZhangRelay1/donut.gitsudo apt-key add ~/donut/ros.keysudo apt updateecho "Upgrade Mission Completed."echo "Teb Mission Begins."sudo apt install ros-kinetic-sta…

OD 算法题 B卷【服务启动】

文章目录 服务启动 服务启动 有若干连续编号的服务&#xff08;编号从0开始&#xff09;&#xff0c;服务间有依赖关系&#xff0c;启动一个指定的服务&#xff0c;请判断该服务是否可以成功启动&#xff0c;并输出依赖的前置服务编号&#xff1b;依赖关系是可以传递的&#x…

StarRocks与Apache Iceberg:构建高效湖仓一体的实时分析平台

## 引言&#xff1a;数据湖的挑战与演进 在数据驱动的时代&#xff0c;企业数据湖需要同时满足海量存储、高性能查询、多引擎协作和实时更新等复杂需求。传统基于 Hive 的数据湖方案面临元数据管理低效、缺乏 ACID 事务支持、查询性能瓶颈等问题。在此背景下&#xff0c;**Sta…

Kafka 单机部署启动教程(适用于 Spark + Hadoop 环境)

&#x1f9ed; Kafka 单机部署启动教程&#xff08;适用于 Spark Hadoop 环境&#xff09; &#x1f4e6; 一、Kafka 版本选择 推荐使用 Kafka 2.13-2.8.1&#xff08;Scala 2.13&#xff0c;稳定适配 Spark 3.1.2 和 Hadoop 3.1.1&#xff09; 下载地址&#xff08;Apache 官…

C语言数组初始化方法大全(附带实例)

在 C语言中&#xff0c;数组用于存储相同类型的多个元素。数组的初始化是一个重要的概念&#xff0c;它允许我们在声明数组的同时为其赋初值。 这篇文章&#xff0c;我将为大家详细介绍 C语言中初始化数组的多种方法&#xff0c;以及一些需要注意的细节。 数组初始化的基本语…

RAMSUN分享全新超值型MM32F0050系列MCU

凭借全国产化的供应链优势和可靠的国产高端工艺制程&#xff0c;灵动微再次推出全新超值型MM32F0050系列微控制器单元&#xff08;MCU&#xff09;&#xff0c;将超值型MCU推向新的高度。 MM32F0050系列MCU配备了72MHz的Arm Cortex-M0内核&#xff0c;提供64KB的Flash存储和8K…

CMS32M65xx/67xx系列CoreMark跑分测试

CMS32M65xx/67xx系列CoreMark跑分测试 1、参考资料准备 1.1、STM32官方跑分链接 1.2、官网链接 官方移植文档&#xff0c;如下所示&#xff0c;点击红框处-移植文档: A new whitepaper and video explain how to port CoreMark-Pro to bare-metal 1.3、测试软件git下载链接 …