【DeepSeek】【Dify】:用 Dify 对话流+标题关键词注入,让 RAG 准确率飞跃

news2025/6/7 3:37:14

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, List

def 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 = 0
        results = []

        # 处理内容中的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环境变量配置

    配置电脑的环境变量,右击此电脑→属性→高级系统设置→环境变量;

   在系统变量里添加如下内容:

   ```js
   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
   ```

   通过点击图片中 “新建” 和 “编辑”即可添加和修改系统变量。

   需要注意 `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.coloradmin.cn/o/2401026.html

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

相关文章

yFiles:专业级图可视化终极解决方案

以下是对yFiles的详细介绍,结合其定义、功能、技术特点、应用场景及行业评价等多维度分析: 一、yFiles的定义与核心定位 yFiles是由德国公司yWorks GmbH开发的 动态图与网络可视化软件开发工具包(SDK) ,专注于帮助用户将复杂数据转化为交互式图表。其核心价值在于提供跨平…

VSCode 工作区配置文件通用模板创建脚本

下面是分别使用 Python 和 Shell&#xff08;Bash&#xff09;脚本 自动生成 .vscode 文件夹及其三个核心配置文件&#xff08;settings.json、tasks.json、launch.json&#xff09;的完整示例。 你可以选择你熟悉的语言版本来使用&#xff0c;非常适合自动化项目初始化流程。…

echarts显示/隐藏标签的同时,始终显示饼图中间文字

显示标签的同时&#xff0c;始终显示饼图中间文字 let _data this.chartData.slice(1).map((item) > ({name: item.productName,value: Number(item.stock), })); this.chart.setOption({tooltip: {trigger: item,},graphic: { // 重点在这里&#xff08;显示饼图中间文字&…

SpringBoot关于文件上传超出大小限制--设置了全局异常但是没有正常捕获的情况+捕获后没有正常响应返给前端

项目背景 一个档案管理系统&#xff0c;在上传比较大的文件时由于系统设置的文件大小受限导致文件上传不了&#xff0c;这时候设置的异常捕捉未能正常报错导致前端页面一直在转圈&#xff0c;实际上后端早已校验完成。 全局异常类设置的捕捉 添加了ControllerAdvice以及RestCon…

【Go语言】Ebiten游戏库开发者文档 (v2.8.8)

1. 简介 欢迎来到 Ebiten (现已更名为 Ebitengine) 的世界&#xff01;Ebiten 是一个使用 Go 语言编写的开源、极其简洁的 2D 游戏库&#xff08;或称为游戏引擎&#xff09;。它由 Hajime Hoshi 发起并主要维护&#xff0c;旨在提供一套简单直观的 API&#xff0c;让开发者能…

实验设计与分析(第6版,Montgomery著,傅珏生译) 第9章三水平和混合水平析因设计与分式析因设计9.5节思考题9.1 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第9章三水平和混合水平析因设计与分式析因设计9.5节思考题9.1 R语言解题。主要涉及方差分析。 YieldDesign <-expand.grid(A gl(3, 1, labels c("-", "0","…

Pycharm 配置解释器

今天更新了一版pycharm&#xff0c;因为很久没有配置解释器了&#xff0c;发现一直失败。经过来回试了几次终于成功了&#xff0c;记录一下过程。 Step 1 Step 2 这里第二步一定要注意类型要选择python 而不是conda。 虽然我的解释器是conda 里面建立的一个环境。挺有意思的

web第八次课后作业--分层解耦

一、分层 Controller&#xff1a;控制层。接收前端发送的请求&#xff0c;对请求进行处理&#xff0c;并响应数据。Service&#xff1a;业务逻辑层。处理具体的业务逻辑。Dao&#xff1a;数据访问层(Data Access Object)&#xff0c;也称为持久层。负责数据访问操作&#xff0…

【图片自动识别改名】识别图片中的文字并批量改名的工具,根据文字对图片批量改名,基于QT和腾讯OCR识别的实现方案

现在的工作单位经常搞一些意义不明的绩效工作&#xff0c;每个月都搞来一万多张图片让我们挨个打开对应图片上的名字进行改名操作以方便公司领导进行检查和搜索调阅&#xff0c;图片上面的内容有数字和文字&#xff0c;数字没有特殊意义不做识别&#xff0c;文字有手写的和手机…

20-项目部署(Docker)

在昨天的课程中&#xff0c;我们学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目。大家想一想自己最大的感受是什么&#xff1f; 我相信&#xff0c;除了个别天赋异禀的同学以外&#xff0c;大多数同学都会有相同的…

零基础安装 Python 教程:从下载到环境配置一步到位(支持 VSCode 和 PyCharm)与常用操作系统操作指南

零基础安装 Python 教程&#xff1a;从下载到环境配置一步到位&#xff08;支持 VSCode 和 PyCharm&#xff09;与常用操作系统操作指南 本文是一篇超详细“Python安装教程”&#xff0c;覆盖Windows、macOS、Linux三大操作系统的Python安装方法与环境配置&#xff0c;包括Pyt…

SAP学习笔记 - 开发18 - 前端Fiori开发 应用描述符(manifest.json)的用途

上一章讲了 Component配置&#xff08;组件化&#xff09;。 本章继续讲Fiori的知识。 目录 1&#xff0c;应用描述符(Descriptor for Applications) 1&#xff09;&#xff0c; manifest.json 2&#xff09;&#xff0c;index.html 3&#xff09;&#xff0c;Component.…

一键试衣,6G显存可跑

发现一个好玩的一键换衣的工作流&#xff0c;推荐给大家。 https://github.com/chflame163/ComfyUI_CatVTON_Wrapper 作者参考的是开源项目&#xff0c;做成了工作流形式。 https://github.com/Zheng-Chong/CatVTON 先来看下效果&#xff0c;使用动画人物也可换衣&#xff…

20250602在Ubuntu20.04.6下修改压缩包的日期和时间

rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 5月 23 10:23 Android13.0地面站.tgz* rootrootrootroot-X99-Turbo:~$ touch 1Android13.0地面站.tgz rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 6月…

星闪开发之Server-Client 指令交互控制OLED灯案例

系列文章目录 星闪开发之Server-Client 指令交互控制OLED灯案例 文章目录 系列文章目录前言一、核心流程服务端客户端 二、图片资源三、源代码四、在Hispark Studio中配置将sle_oled-master文件夹下的相sle_oled放在peripheral文件夹下。peripheral目录下的 Kconfig文件中添加…

MySQL补充知识点学习

书接上文&#xff1a;MySQL关系型数据库学习&#xff0c;继续看书补充MySQL知识点学习。 1. 基本概念学习 1.1 游标&#xff08;Cursor&#xff09; MySQL 游标是一种数据库对象&#xff0c;它允许应用程序逐行处理查询结果集&#xff0c;而不是一次性获取所有结果。游标在需…

[ctfshow web入门] web80

信息收集 过滤了php和data if(isset($_GET[file])){$file $_GET[file];$file str_replace("php", "???", $file);$file str_replace("data", "???", $file);include($file); }else{highlight_file(__FILE__); }解题 大小写…

【设计模式-4.5】行为型——迭代器模式

说明&#xff1a;本文介绍设计模式中&#xff0c;行为型设计模式之一的迭代器模式。 定义 迭代器模式&#xff08;Iterator Pattern&#xff09;&#xff0c;也叫作游标模式&#xff08;Cursor Pattern&#xff09;&#xff0c;它提供一种按顺序访问集合/容器对象元素的方法&…

C++_核心编程_继承中的对象模型

继承中的对象模型 **问题&#xff1a;**从父类继承过来的成员&#xff0c;哪些属于子类对象中&#xff1f; * 结论&#xff1a; 父类中私有成员也是被子类继承下去了&#xff0c;只是由编译器给隐藏后访问不到 */ class Base { public:int m_A; protected:int m_B; private:int…

使用cephadm离线部署reef 18版并配置对接openstack

源 curl --silent --remote-name --location https://download.ceph.com/rpm-squid/el9/noarch/cephadm chmod x cephadm./cephadm add-repo --release reef监视节点 离线下载 apt-get --download-only install ceph ceph-mon ceph-mgr ceph-commonmkdir /reef/mon mv /var/…