Dify学习笔记-知识库(六)

1、知识库

大多数语言模型采用较为陈旧的训练数据,并且对每次请求的上下文有长度限制。例如 GPT-3.5 是基于 2021 年的语料进行训练的,且有每次约 4K Token 的限制。这意味着开发者如果想让 AI 应用基于最新的、私有的上下文对话,必须使用类似嵌入(Embedding)之类的技术。
Dify 的数据集功能可以使开发者(甚至非技术人员)以简单的方式管理数据集,并自动集成至 AI 应用中。你只需准备文本内容,例如:
长文本内容(TXT、Markdown、DOCX、HTML、JSONL 甚至是 PDF 文件)
结构化数据(CSV、Excel 等)
另外,我们正在逐步支持从诸多数据源同步数据至数据集,包括:
网页
Notion
Github
数据库
……

情景:如果你的公司想基于现有知识库和产品文档建立一个 AI 客服助手,你可以在 Dify 中将文档上传至数据集,并建立一个对话型应用。这在过去可能需要花费你数周的时间,且难以持续维护。

数据集与文档

在 Dify 中,**数据集(Knowledge)是一些文档(Documents)**的集合。一个数据集可以被整体集成至一个应用中作为上下文使用。文档可以由开发者或运营人员上传,或由其它数据源同步(通常对应数据源中的一个文件单位)。
上传文档的步骤:
上传你的文件,通常是长文本文件或表格文件。
分段、清洗并预览
由 Dify 提交至 LLM 供应商嵌入为向量数据,并存储
为文档设置元数据
可以在应用中使用了🎉!

创建数据集

在 Dify 主导航栏中点击数据集,在该页面你可以看到已有的数据集。你可以点击创建数据集进入创建向导:
如果你已经准备好了文件,可以从上传文件开始
如果你还没有准备好文档,可以先创建一个空数据集
如果你在创建数据集时选择了使用外部数据源,该数据集的类型不可更改。这是为了防止单一数据集存在多数据源而造成的管理困难。如果你需要使用多个数据源,建议创建多个数据集。

编辑良好的数据集描述

当一个应用中引用多个数据集时,AI 会根据用户的提问和数据集的描述来决定使用哪个数据集来回答用户的问题。因此,良好的数据集描述能提升 AI 选择数据集的准确率。
编写良好的数据集描述的要点是写清楚数据集包含的内容和特点。数据集的描述建议以这个开头:仅当你想要回答的问题是关于以下内容时有用:具体描述。一个房地产数据集的描述:

仅当你想要回答的问题是关于以下内容时有用: 2010 年到 2020
年的全球房地产市场数据。这些数据包括每个城市的平均房价、房产销售量、房屋类型等信息。此外,该数据集还包括了一些经济指标,如
GDP、失业率等,以及一些社会指标,如人口数量、教育水平等,这些指标可以帮助分析房地产市场的趋势和影响因素。
通过这些数据,我们可以了解全球房地产市场的发展趋势,分析各个城市的房价变化,以及了解经济和社会因素对房地产市场的影响。

上传文档

选择你要上传的文件,支持批量上传;
预览全文;
进行分段和清洗;
等待 Dify 为你处理这些数据,通常该步骤在 LLM 供应商中需要消耗 Token。

文本分段与清洗

文本数据的分段与清洗是指 Dify 自动将你的数据进行段落分段 & 向量化处理,使得用户的提问(输入)能匹配到相关的文本段落(Q to P),最后输出结果。
上传一个数据集的文档,你需要选择文本的索引方式来指定数据的匹配方式。这会影响到 AI 在回复问题时的准确度。
高质量模式下,将调用 OpenAI 的嵌入接口进行处理,以在用户查询时提供更高的准确度。
经济模式下,会使用关键词索引方式,降低了准确度但无需花费 Token。
Q&A 分段模式下,Q&A 分段模式功能,与上述普通的「Q to P」(问题匹配文本段落)匹配模式不同,它是采用「Q to Q」(问题匹配问题)匹配工作,在文档经过分段后,经过总结为每一个分段生成 Q&A 匹配对,当用户提问时,系统会找出与之最相似的问题,然后返回对应的分段作为答案。这种方式更加精确,因为它直接针对用户问题进行匹配,可以更准确地获取用户真正需要的信息。
问题文本是具有完整语法结构的自然语言,而不是文档检索任务中的一些关键字,所以 Q to Q (问题匹配问题)的模式会令语意和匹配更加清晰,并同时满足一些高频和高相似度问题的提问场景。

对文档进行修改

由于技术原因,如果开发者对文档进行以下修改,Dify 会为你创建一个新的文档,而旧的文档会被存档和停用:

  • 调整分段和清洗设置
  • 重新上传文件

我们支持对分段与清洗后的文本进行自定义增删改,你可以动态调整自己的分段信息,让你的数据集更加精准。通过点击数据集中 文档 --> 段落 --> 编辑 可修改段落内容以及自定义关键词。通过点击 文档 --> 段落–> 添加分段–>添加新分段 可手动添加新的分段内容,也可以点击 文档 --> 段落–> 添加分段–>批量添加 批量上传新的分段内容。

在这里插入图片描述
在这里插入图片描述

文档的禁用和归档

禁用、取消禁用:数据集支持将暂时不想被索引的文档或分段进行禁用,在数据集文档列表,点击禁用按钮,则文档被禁用;也可以在文档详情,点击禁用按钮,禁用整个文档或某个分段,禁用的文档将不会被索引。禁用的文档点击启用,可以取消禁用。
归档、取消归档:一些不再使用的旧文档数据,如果不想删除可以将它进行归档,归档后的数据就只能查看或删除,不可以进行编辑。在数据集文档列表,点击归档按钮,则文档被归档,也可以在文档详情,归档文档。归档的文档将不会被索引。归档的文档也可以点击撤销归档。

通过 API 维护数据集

TODO

数据集设置

在数据集的左侧导航中点击设置,你可以改变数据集的以下设置项:
数据集名称,用于识别一个数据集。
数据集描述,能够让 AI 更好的适时取用数据集,如果描述为空则会使用 Dify 的自动索引策略
权限,可选择 只有我 或 所有团队成员,不具有权限的人将无法查阅和编辑数据集。
修改索引模式。注意:索引模式如果从经济升级为高质量会带来额外的 Token 消耗。而从高质量降级为经济则不会消耗 Token。

集成至应用

数据集准备完成后需集成到应用中,当 AI 应用处理用户请求时,会自动将与之关联的数据集内容作为上下文参考。
进入应用 - 提示词编排页面
在上下文选项中,选择需要集成的数据集
保存设置以完成集成

Q&A

Q: 上传 PDF 解析乱码怎么办?

A: 如果你的 PDF 在特定格式内容下解析出现乱码的情况,可以考虑将 PDF 转成 Markdown 格式,或目前 Markdown 的准确度会更高,或减少 PDF 内的图片、表格等格式内容。对于 PDF 的使用体验我们正在研究优化方案。

2、从 Notion 导入数据

Dify 数据集支持从 Notion 导入,并设置 同步 使得数据在 Notion 更新后便自动同步到 Dify。

授权验证

在创建数据集,选择数据源时,点击 同步自 Notion 内容-- 去绑定,根据提示完成授权验证。
你也可以:进入 设置 – 数据来源 – 添加数据源 中点击 Notion 来源 绑定 ,完成授权验证。

在这里插入图片描述

导入 Notion 数据

完成验证授权后,进入创建数据集页面,点击 **同步自 Notion 内容 ,**选择需要的授权页面进行导入。

进行分段和清洗

接下来,选择你的分段设置和索引方式,保存并处理。等待 Dify 为你处理这些数据,通常该步骤在 LLM 供应商中需要消耗 Token。Dify 不仅支持普通类型页面导入,并且会将 database 类型下的页面属性进行汇总保存。
请注意:图片和文件暂不支持导入,表格类数据会被转换为文本展示。

同步 Notion 数据

如果您的 Notion 内容有修改,您可以直接在 Dify 数据集 文档列表页中点击 同步 即可进行数据一键同步,该步骤是需要消耗 Token。

在这里插入图片描述

社区版 Notion 的集成配置方法

Notion集成分为内部集成(internal integration)和外部集成(public integration)两种方式。可按需在 Dify 里配置。两种集成方式的具体区别请参阅 Notion 官方文档。

1、使用 internal 集成方式

首先,在集成的设置页面中创建集成。默认情况下,所有集成都以内部集成开始;内部集成将与您选择的工作区相关联,因此您需要是工作区所有者才能创建集成。
具体操作步骤:
点击“New integration”按钮,类型默认是 Internal(不可修改),选择关联的空间,输入集成名称并上传 logo 后,点击“Submit”,集成创建成功。
在这里插入图片描述

创建集成后,您可以根据需要在 Capabilities 选项卡下更新其设置,并在 Secrets 下点击 “Show” 按钮然后复制 Secrets。

在这里插入图片描述
复制后回到 Dify 源代码下,在 .env 文件里配置相关环境变量,环境变量如下:
NOTION_INTEGRATION_TYPE = internal or NOTION_INTEGRATION_TYPE = public
NOTION_INTERNAL_SECRET=you-internal-secret

2、使用 Public 集成方式

需要将 internal 集成升级为 public 集成,导航到集成的 Distribution 页面,然后切换开关以公开集成。将开关切换到公共设置,您需要在下面的 Organization Information 表单中填写其他信息,包括您的公司名称、网站和重定向 URL 等信息,然后点击“Submit”按钮。

在这里插入图片描述
在集成的设置页面中成功公开集成后,您将能够在密钥选项卡中访问集成的密钥:

在这里插入图片描述
回到 Dify 源代码下,在 .env 文件里配置相关环境变量,环境变量如下:
NOTION_INTEGRATION_TYPE=public
NOTION_CLIENT_SECRET=you-client-secret
NOTION_CLIENT_ID=you-client-id
配置完成后,即可在数据集中操作 Notion 的数据导入及同步功能。

3、通过 API 维护数据集

鉴权、调用方式与应用 Service API 保持一致,不同的是一个数据集 API token 可操作所有数据集

使用数据集API的优势

将您的数据系统同步至 Dify 数据集,创建强大的工作流程。
提供数据集列表,文档列表及详情查询,方便构建您自己的数据管理页。
同时支持纯文本和文件两种上传和更新文档的接口,并支持分段级的批量新增和修改,便捷您的同步方式。
减少文档手动处理同步的时间,提高您对 Dify 的软件和服务的可见性。

如何使用

进入数据集页面,你可以在左侧的导航中切换至 API 页面。在该页面中你可以查看 Dify 提供的数据集 API 文档,并可以在 API 密钥 中管理可访问数据集 API 的凭据。

在这里插入图片描述

API 调用示例

创建空数据集

仅用来创建空数据集

curl --location --request POST 'https://api.dify.ai/v1/datasets' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "name"}'

数据集列表

curl --location --request GET 'https://api.dify.ai/v1/datasets?page=1&limit=20' \
--header 'Authorization: Bearer {api_key}'

通过文本创建文档

curl --location --request POST '<https://api.dify.ai/v1/datasets/<uuid:dataset_id>/document/create_by_text>' \\
--header 'Authorization: Bearer {api_key}' \\
--header 'Content-Type: application/json' \\
--data-raw '{"name": "Dify","text": "Dify means Do it for you...","indexing_technique": "high_quality","process_rule": {"rules": {"pre_processing_rules": [{"id": "remove_extra_spaces","enabled": true}, {"id": "remove_urls_emails","enabled": true}],"segmentation": {"separator": "###","max_tokens": 500}},"mode": "custom"}
}'

通过文件创建文档

curl --location POST 'https://api.dify.ai/v1/datasets/{dataset_id}/document/create_by_file' \
--header 'Authorization: Bearer {api_key}' \
--form 'data="{"name": "Dify","indexing_technique": "high_quality","process_rule": {"rules": {"pre_processing_rules": [{"id": "remove_extra_spaces","enabled": true}, {"id": "remove_urls_emails","enabled": true}],"segmentation": {"separator": "###","max_tokens": 500}},"mode": "custom"}}";type=text/plain' \
--form 'file=@"/path/to/file"'

获取文档嵌入状态(进度)

curl --location --request GET 'https://api.dify.ai/v1/datasets/{dataset_id}/documents/{batch}/indexing-status' \
--header 'Authorization: Bearer {api_key}'

删除文档

curl --location --request DELETE 'https://api.dify.ai/v1/datasets/{dataset_id}/documents/{document_id}' \
--header 'Authorization: Bearer {api_key}'

数据集文档列表

curl --location --request GET 'https://api.dify.ai/v1/datasets/{dataset_id}/documents' \
--header 'Authorization: Bearer {api_key}'

新增分段

curl 'https://api.dify.ai/v1/datasets/aac47674-31a8-4f12-aab2-9603964c4789/documents/2034e0c1-1b75-4532-849e-24e72666595b/segment' \--header 'Authorization: Bearer {api_key}' \--header 'Content-Type: application/json' \--data-raw $'"chunks":[{"content":"Dify means Do it for you","keywords":["Dify","Do"]}]'--compressed

错误信息
document_indexing,文档索引失败
provider_not_initialize, Embedding 模型未配置
not_found,文档不存在
dataset_name_duplicate ,数据集名称重复
provider_quota_exceeded,模型额度超过限制
dataset_not_initialized,数据集还未初始化
unsupported_file_type,不支持的文件类型
目前只支持:txt, markdown, md, pdf, html, htm, xlsx, docx, csv
too_many_files,文件数量过多,暂时只支持单一文件上传
file_too_large,文件太大,支持15M以下

4、外部数据工具

功能介绍

此前 功能允许开发者可以直接上传各类格式的长文本、结构化数据来构建数据集,使 AI 应用基于用户上传的最新上下文进行对话。
而本次更新的外部数据工具赋能开发者可以使用自有的搜索能力或内部知识库等外部数据作为 LLM 的上下文,通过 API 扩展的方式实现外部数据的获取并嵌入提示词。相比在云端上传数据集,使用外部数据工具可以在保障私有数据安全,自定义搜索,获取实时数据等方面有显著优势。

具体实现

当终端用户向对话系统提出请求时,平台后端会触发外部数据工具(即调用自己的 API),它会查询用户问题相关的外部信息,如员工资料、实时记录等,通过 API 返回与当前请求相关的部分。平台后端会将返回的结果组装成文本作为上下文注入到提示词中,以输出更加个性化和符合用户需求的回复内容。

操作说明

  1. 在使用外部数据工具之前,你需要准备一个 API 和用于鉴权的 API Key,请阅读
  2. Dify 提供了集中式的 API 管理,在设置界面统一添加 API 扩展配置后,即可在 Dify 上的各类应用中直接使用。

在这里插入图片描述

  1. 我们以“查询天气”为例,在“新增基于 API 的扩展”对话框输入名字,API 端点,API Key。保存后我们就可以调用 API 了。

在这里插入图片描述
4. 在提示词编排页面,点击“工具”右侧的“+添加”按钮,在打开的“添加 工具”对话框,填写名称和变量名称(变量名称会被引用到提示词中,请填写英文),以及选择第 2 步中已经添加的基于 API 的扩展。
在这里插入图片描述

  1. 这样,我们在提示词编排框就可以把查询到的外部数据拼装到提示词中。比如我们要查询今天的伦敦天气,可以添加location 变量,输入"London",结合外部数据工具的扩展变量名称weather_data,调试输出如下:

在这里插入图片描述
在对话日志中,我们也可以看到 API 返回的实时数据:

在这里插入图片描述

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

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

相关文章

SpringCloudConfig+SpringCloudBus+Actuator+Git实现Eureka关键配置属性热更新(全程不重启服务)

文章目录 前言1.痛点2.解决方案3.具体实现3.1搭建热配置服务3.2编写配置文件3.3搭建版本控制仓库3.4Eureka-Client引入以下依赖3.5Eureka-Client微服务编写以下配置bootstrap.yml提前加载3.6分别编写测试Controller3.7测试效果3.8下线场景压测 4.SpringCloudBus优化5.写到最后 …

springboot-mybatis项目

一、后端开发环境搭建 1、File->New->Projet 2选择 Spring Initializr &#xff0c;然后选择默认的 url 点击next 3勾选Spring Web、SQL模板&#xff0c;next 4点击finish&#xff0c;搭建完成 二 数据库 1 新建数据库 2 执行sql建表 SET NAMES utf8mb4; SET FOREIGN…

爬虫js逆向分析——x平台(实现)

爬虫js逆向分析——x平台&#xff08;实现&#xff09; &#xff08;仅供学习&#xff0c;本案例只是分析流程没有账号&#xff09;网址&#xff1a;https://xuexi.chinabett.com/ 1.分析请求包格式 打开控制台&#xff0c;并勾选保存日志&#xff0c;然后点击登录看发送了什…

外贸邮件群发软件有哪些?邮件群发的系统?

外贸邮件群发软件哪个比较好&#xff1f;外贸开发信软件推荐&#xff1f; 对于许多外贸企业来说&#xff0c;邮件营销是一种非常有效的推广方式。那么&#xff0c;外贸邮件群发软件就成为了必备的工具。蜂邮EDM将为你揭秘几款主流的外贸邮件群发软件&#xff0c;助你更好地开展…

linux安装docker(入门一)

环境&#xff1a;centos 7(linux) 网站 官网: https://docs.docker.com/ Docker Hub 网站: https://hub.docker.com/ 容器官方概述 一句话概括容器&#xff1a;容器就是将软件打包成标准化单元&#xff0c;以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立软件包 &…

shell脚本——条件语句与循环语句

目录 一、条件语句 1、test命令测试条件表达式 2、整数数值比较 3、字符串比较 4、逻辑测试&#xff08;短路运算&#xff09; 5、双中括号 二、if语句 1、 分支结构 1.1 单分支结果 1.2 双分支 1.3 多分支 2、case 一、条件语句 条件测试&#xff1a;判断某需求是…

【原神游戏开发日志3】登录和注册有何区别?

版权声明&#xff1a; ● 本文为“优梦创客”原创文章&#xff0c;您可以自由转载&#xff0c;但必须加入完整的版权声明 ● 文章内容不得删减、修改、演绎 ● 本文视频版本&#xff1a;见文末 ● 相关学习资源&#xff1a;见文末 前言 ● 这是我们原神游戏开发日记的第三期 ●…

OpenHarmony—TypeScript到ArkTS约束说明

对象的属性名必须是合法的标识符 规则&#xff1a;arkts-identifiers-as-prop-names 级别&#xff1a;错误 在ArkTS中&#xff0c;对象的属性名不能为数字或字符串。通过属性名访问类的属性&#xff0c;通过数值索引访问数组元素。 TypeScript var x { name: x, 2: 3 };c…

计算机网络 第5章(运输层)

系列文章目录 计算机网络 第1章&#xff08;概述&#xff09; 计算机网络 第2章&#xff08;物理层&#xff09; 计算机网络 第3章&#xff08;数据链路层&#xff09; 计算机网络 第4章&#xff08;网络层&#xff09; 计算机网络 第5章&#xff08;运输层&#xff09; 计算机…

Windows10上使Git Bash支持rsync命令操作步骤

rsync命令是linux上常用的工具之一&#xff0c;用于远程以及本地系统中拷贝/同步文件和文件夹。 Windows Git Bash默认并不支持rsync&#xff0c;如下图所示&#xff1a; 使Git Bash支持rsync命令操作步骤&#xff1a; 1.从https://repo.msys2.org/msys/x86_64/ 下…

Docker镜像的创建

基于现有镜像创建 先用现有镜像创建启动容器 docker run 再进入容器进行内容更新 docker exec -it 最后提交成新的镜像 docker commit 然后将修改后的容器提交为新的镜像&#xff0c;需要使用该容器的 ID 号创建新镜像 进入容器可查看相关性能 基于本地模板创…

测试C#调用OpenCvSharp和ViewFaceCore从摄像头中识别人脸

学习了基于OpenCvSharp获取摄像头数据&#xff0c;同时学习了基于ViewFaceCore的人脸识别用法&#xff0c;将这两者结合即是从摄像头中识别人脸。本文测试测试C#调用OpenCvSharp和ViewFaceCore从摄像头中识别人脸&#xff0c;并进行人脸红框标记。   新建Winform项目&#xf…

如何选择便捷安全的黄金交易平台?

黄金交易平台的介绍 黄金交易平台是一个提供方便、安全的方式进行黄金交易的网上平台。 投资者可以通过这些平台进行黄金的买卖&#xff0c;参与黄金市场的投资活动。 这些平台提供了一个简单易用的界面&#xff0c;让投资者可以方便地进行交易操作。 选择合适的黄金交易平台…

C++ 设计模式之责任链模式

【声明】本题目来源于卡码网&#xff08;卡码网KamaCoder&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是责任链模式&#xff08;第21种设计模式&#xff09; 责任链模式是⼀种行为型设计模式&am…

windows下git pull超时,ping不通github

报错 ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 解决办法 修改hosts 最后加一行&#xff0c;文件位置&#xff1a;…

redis主从复制薪火相传

一.主从复制 1、是什么 主机数据更新后根据配置和策略&#xff0c; 自动同步到备机的master/slaver机制&#xff0c;Master以写为主&#xff0c;Slave以读为主 2、能干嘛 读写分离&#xff0c;性能扩展&#xff08;主 写 从 读&#xff09; 容…

Vue中使用TypeScript:全面指南和最佳实践

🚀 欢迎来到我的专栏!专注于Vue3的实战总结和开发实践分享,让你轻松驾驭Vue3的奇妙世界! 🌈✨在这里,我将为你呈现最新的Vue3技术趋势,分享独家实用教程,并为你解析开发中的难题。让我们一起深入Vue3的魅力,助力你成为Vue大师! 👨‍💻💡不再徘徊,快来关注…

第14章_数据结构与集合源码(一维数组,链表,栈,队列,树与二叉树,List接口分析,Map接口分析,Set接口分析,HashMap的相关问题)

文章目录 第14章_数据结构与集合源码本章专题与脉络1. 数据结构剖析1.1 研究对象一&#xff1a;数据间逻辑关系1.2 研究对象二&#xff1a;数据的存储结构&#xff08;或物理结构&#xff09;1.3 研究对象三&#xff1a;运算结构1.4 小结 2. 一维数组2.1 数组的特点2.2 自定义数…

渲染与创造之美:互为表里的艺术

在五彩斑斓的艺术世界中&#xff0c;渲染与创造是两股不可或缺的力量。它们之间的关系&#xff0c;恰如弓与箭&#xff0c;互为表里&#xff0c;共同塑造出无数令人叹为观止的视觉景象。创造之美是指通过创新思维和创造力&#xff0c;将想象具象化为现实&#xff0c;创造出新的…

vscode开发FPGA(1)---TEROS_HDL插件报错

一、TerosHDL:modelsim(vlog-66)报错 Error: (vlog-66) Execution of vlib.exe failed 解决办法&#xff1a; 1.新建modelsim工程&#xff0c;并随意编译一个.v文件&#xff0c;将产生的work目录复制到modelsim安装路径下。 2.再将vscode设置verilog>linting>modelsim…