Coze篇-知识库和记忆

1,032 阅读55分钟

一、知识库概述

扣子的知识库功能支持上传和存储外部知识内容,并提供了多种检索能力。扣子的知识能力可以解决大模型幻觉、专业领域知识不足的问题,提升大模型回复的准确率。

  1. 功能概述

扣子的知识库功能包含两个能力,一是存储和管理外部数据的能力,二是增强检索的能力。

  • 数据管理与存储

  • 扣子支持从多种数据源例如本地文档、在线数据、Notion、飞书文档等渠道上传文本和表格数据。上传后,扣子可将知识内容自动切分为一个个内容片段进行存储,同时支持用户自定义内容分片规则,例如通过分段标识符、字符长度等方式进行内容分割。

  • 增强检索

  • 扣子的知识功能还提供了多种检索方式来对存储的内容片段进行检索,例如使用全文检索通过关键词进行内容片段检索和召回。

  • 大模型会根据召回的内容片段生成最终的回复内容。

  1. 应用场景

扣子支持上传文本内容和结构化的表格数据,可满足不同的使用场景。例如:

  • 语料补充:如需创建一个虚拟形象与用户交流,你可以在知识库中保存该形象相关的语料。后续智能体会通过向量召回最相关的语料,模仿该虚拟形象的语言风格进行回答。

  • 客服场景:将用户高频咨询的产品问题和产品使用手册等内容上传到扣子知识,智能体可以通过这些知识精准回答用户问题。

  • 垂直场景:创建一个包含各种车型详细参数的汽车知识。当用户查询某一车型的百公里油耗是多少时,可通过该车型召回对应的记录,然后进一步识别出百公里油耗。

  1. 知识与记忆对比

扣子的知识和记忆能力都可以用来存储数据。在使用时可以从最终的使用者和存储的数据内容上进行区分。

  • 知识:知识是供智能体或工作流调用的静态数据,可在空间内共享。由开发者创建和维护,智能体的终端用户无法对知识内容进行修改。
  • 记忆:扣子提供了数据库、变量、长期记忆等记忆功能。通常这些数据是智能体的终端用户在使用智能体时产生的动态数据,不支持跨智能体使用。

以一个租房平台的智能体为例,下表展示了哪些数据是需要通过知识功能来维护的,哪些数据是通过记忆功能来维护的。

类别存储的数据特点
知识+ 周边所有的房屋的信息(房屋面积、朝向、租房价格等) + 周边所有小区的信息(小区位置、小区年代、周边交通等 + 某地区租房政策文件信息+ 官方租房介绍文档 + ...#NAME?
记忆+ 用户租房喜好(位置、面积、是否带独卫等) + 用户历史租房信息 + 用户关注的小区/房屋 + ...#NAME?
  1. 知识库类型

使用知识库功能的第一步就是上传知识内容。

上传知识内容又分为两步,首先选择要上传的知识类型和上传方式,然后对上传的内容进行切分。合理的内容分片可以提升召回内容的相关性,从而提升大模型回复问题的准确性。

在上传知识前,建议先了解不同的知识类型的使用场景和导入方式,以便更好地管理知识内容。

对比项文本类型表格类型照片知识库
使用场景文本知识库支持基于内容片段进行检索和召回,大模型结合召回的内容生成最终内容回复,适用于知识问答等场景。表格知识库支持基于索引列的匹配 (表格按行进行划分),同时也支持基于 NL2SQL 的查询和计算。照片知识库支持基于标注信息的匹配,适用于图像生成场景。
导入方式+ 本地文档:从本地文件中导入文本内容,支持.txt、.pdf、doc、.docx 文件格式。+ 在线数据:通过自动和手动方式采集指定网页的内容。+ 第三方渠道:从飞书文档和 Notion 文档中导入内容。+ 自定义:手动输入要导入的文本内容。+ 本地文档:从本地文件中导入表格内容,支持.csv和.xlsx文件格式。+ 在线数据:通过 API 导入数据。+ 第三方渠道:支持从飞书表格中导入数据。+ 自定义:手动输入要导入的表格数据。本地图片:从本地文件中导入图片,支持JPG、JPEG和PNG图片格式。
内容分段支持自动内容分段和手动分段方式。对于表格内容,默认按行分片,一行就是一个内容片段,不需要再进行分段设置。不涉及。
索引不涉及。扣子支持设置索引字段。 用户输入的问题会与设置的索引字段内容对比,根据相似度匹配最相关的内容给大模型用于内容生成。扣子支持设置图片的标注信息。 用户输入的问题会与设置的标注信息对比,根据相似度匹配最相关的图片给大模型用于内容生成。
  1. 权限说明

知识库暂不支持多人协作。只有知识库的所有者支持编辑、启用、删除自己创建的知识库,团队所有者、管理员以及普通成员都没有权限编辑、启用、删除其他成员创建的知识库。

  1. 操作流程

使用扣子的知识库功能辅助大模型来生成回复内容时,需要完成以下操作。

  1. 创建知识库

首先,需要将需要的知识内容导入到知识库中。扣子支持导入文本内容和表格数据,并提供了多种导入方式,详情可参考创建文本知识库。

  1. 使用知识库

完成知识库创建和内容导入后,你就可以在智能体和工作流中添加知识库内容进行调用了,详情可参考使用知识库。

  1. 配置检索和召回策略

在上传完知识内容后,可以通过相关配置来解决从哪里查、怎么查、用几条的问题。召回的内容的完整度和相关度越高,大模型生成的回复内容的准确性和可用性也就越高。

  1. 调试与优化

最后,你需要通过测试来不断优化回复的内容效果。

  1. 使用限制

使用知识库时,应注意以下限制:

资源限制说明
知识库数量+ 单用户最多可创建 1000 个知识库。+ 单个智能体最多可绑定 1000 个知识库。
知识库文件+ 每个文本类型知识库下最多支持添加 300 个文件。+ 上传的每个文件大小不超过 100 MB。+ 表格知识库中每个表格最多 50 列,10000 行。
知识库分段+ 每个文本类型知识库的分段总数最大为 10000 个。+ 每个表格类型知识库的分段总数最多为 10000 行。
知识库容量基础版和专业版知识库容量不同。 + 基础版:知识库容量限制为 1 GB,即每个用户创建的所有知识库的容量之和最大为 1 GB。 + 专业版:知识库容量限制为 10 GB。
内容知识库中如果添加了邮箱地址、电话、姓名等可能涉及个人隐私的信息,智能体可能在某些渠道中使用受限,例如飞书渠道会屏蔽包含邮箱地址的智能体消息。
上传知识库API 方式上传知识库时,表格类型 API 返回值最大支持 64KB。

二、创建文本知识库

扣子知识库提供了高效便捷的方式来存储和管理外部数据(包括文本、表格及图片),使智能体可以与指定数据进行交互,提升回复内容的准确性和可用性。本文介绍如何从本地文档、在线数据、飞书、微信公众号、Notion、自定义等渠道上传文本内容到知识库。

  1. 注意事项

  • 创建知识库前,请先阅读知识库概述、使用限制了解其功能特性及使用限制。

  • 在扣子专业版中,知识库采用平台预置的存储系统或火山引擎云搜索服务,来存储知识库内容。扣子基础版仅支持平台预置的存储系统。

  1. 存储类型

在扣子专业版中,知识库支持两种存储系统(平台预置的存储系统、火山引擎云搜索服务),对比说明如下表所示。

存储系统说明
平台预置存储系统无额外配置,操作便捷。
云搜索服务云搜索服务是火山引擎提供的全托管一站式信息检索和分析平台,详情请参考云搜索服务。将知识库内容存储到火山引擎云搜索服务 OpenSearch 索引中,适用于已对接服务的用户搭建扣子智能体、基于云搜索服务搭建 RAG 推理服务。 需要额外配置: + 当前扣子账号对应的火山账号需完成企业实名认证,详情请参考实名认证。 + 创建 OpenSearch 版本且开启公网访问的云搜索实例,详情请参考创建实例
  1. 操作流程

参考以下操作,上传文本内容到知识库。

  1. 登录扣子平台
  2. 在目标空间下创建文本知识库。

  1. 在文本知识库中添加文本内容。

    1. 选择导入类型。
    2. 上传文本及设置文档解析、分段、存储、索引等策略。
    3. 不同导入类型,对应的上传操作和策略配置不同,你可以参考如下文档完成配置。
    4. 本地文档
    5. 在线数据
    6. 飞书文档
    7. 微信公众号
    8. Notion
    9. 自定义
  2. 等待服务器根据你所配置的各项策略对文档进行处理后,可查看上传的文本内容。

  3. 配置说明

扣子支持从本地文档、在线数据、飞书、微信公众号、Notion、自定义等渠道上传文本内容到知识库。不同导入类型,对应的配置有所不同,详细说明如下:

  1. 本地文档

扣子支持用户将本地文件中的文本内容导入到知识库,特定的配置说明如下:

操作说明
上传配置选择导入类型为本地文档后,你可以在上传页面,单击上传或拖拽文档到上传区域。
文档解析策略配置上传本地文档时,需在创建设置页面,配置文档解析策略,支持精准解析和快速解析: + 精准解析:支持从文档中提取图片元素、扫描件(OCR)、表格元素;支持设置过滤策略,以文档页的粒度过滤掉当前文档中不需要导入的内容。精准解析需要耗时更长的时间。 + 快速解析:不支持从文档中提取图像、表格等元素,适用于纯文本。
分段策略配置上传本地文档时,支持以自动分段与清洗、自定义分段和层级分段这三种方式对文本内容进行分段处理。 内容分段可以更有效地召回与用户查询最相关的内容,从而提升回复的准确性。合理的内容分段对回复的效果有着直接影响。如果分块太大,可能包含太多不相关的信息,从而降低了检索的准确性。相反,分块太小可能会丢失必要的上下文信息,导致生成的响应缺乏连贯性或深度。详细说明,请参考配置分段策略。
配置存储平台共享存储使用扣子平台预置的默认存储系统,存储文本知识库内容。 注意 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。
云搜索服务使用火山引擎云搜索服务,存储文本知识库内容。 注意 + 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。 + 在知识库中选定云搜索服务进行存储后,如果在云搜索服务侧修改了实例的用户密码,请及时更新知识库侧的密码配置。 使用云搜索服务时,需完成如下配置,并单击测试,测试扣子平台与云搜索服务已连通。 + 地域:云搜索服务实例所在地域。 + 实例名称:目标云搜索服务实例。 + 使用云搜索服务所在的火山引擎账号登录扣子平台,此处会自动同步账号内指定地域下的云搜索服务实例。 + 用户名:云搜索服务实例的用户名,固定为 admin。 + 密码:云搜索服务实例的用户密码。
  1. 在线数据

扣子支持自动和手动方式采集在线网页中的文本内容,并上传到知识库,特定的配置说明如下:

操作说明
上传配置自动采集配置选择导入类型为在线数据后,你可以在新增URL页面,选择自动采集方式。自动采集方式支持单页面采集和多页面批量采集,相关参数配置如下: + 单页面采集 + 添加方式:选择添加单个。 + 更新频率:选择内容更新频率。你可以设置在网页内容更新时,知识库内容是否自动更新及更新的频率。 + 网址URL:输入待采集内容的网址。网址存在以下限制: + 不支持从百度及其相关网址中上传内容。 + 不支持从你的内部网址上传内容。 + 多页面批量采集 + 添加方式:选择批量添加。 + 根地址或网站地图:输入待批量添加的网页的根地址或网站地图中的地址。网址存在以下限制: + 不支持从百度及其相关网址中上传内容。 + 不支持从你的内部网址上传内容。
手动采集配置选择导入类型为在线数据后,你可以在新增URL页面,选择手动采集方式。即你可以在浏览器中安装扩展程序并标注采集范围,进行在线数据手动采集。手动采集方式的成功率较高。 手动采集时,支持在网页中标注采集的范围。具体操作,请参考使用扣子 scraper 采集数据。 说明 首次在某个浏览器中进行手动采集时,需先安装 Coze Scraper 扩展程序并根据页面提示为 Coze Scraper 授权。安装步骤,请参考安装 Scraper。
分段策略配置上传在线数据时,支持以自动分段与清洗、自定义分段这两种方式对文本内容进行分段处理。 内容分段可以更有效地召回与用户查询最相关的内容,从而提升回复的准确性。合理的内容分段对回复的效果有着直接影响。如果分块太大,可能包含太多不相关的信息,从而降低了检索的准确性。如果分块太小,可能会丢失必要的上下文信息,导致生成的响应缺乏连贯性或深度。详细说明,请参考配置分段策略。
配置存储平台共享存储使用扣子平台预置的默认存储系统,存储文本知识库内容。 注意 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。
云搜索服务使用火山引擎云搜索服务,存储文本知识库内容。 注意 + 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。 + 在知识库中选定云搜索服务进行存储后,如果在云搜索服务侧修改了实例的用户密码,请及时更新知识库侧的密码配置。 使用云搜索服务时,需完成如下配置,并单击测试,测试扣子平台与云搜索服务已连通。 + 地域:云搜索服务实例所在地域。 + 实例名称:目标云搜索服务实例。 + 你需要使用云搜索服务所在的火山引擎账号登录扣子平台,此处会自动同步账号内指定地域下的云搜索服务实例。 + 用户名:云搜索服务实例的用户名,固定为 admin。 + 密码:云搜索服务实例的用户密码。
  1. 飞书文档

扣子支持用户将授权过的飞书文档上传到知识库,特定的配置说明如下:

操作说明
设置上传配置选择导入类型为飞书后,你可以在选择文件页面,选择目标文档,上传到知识库。 说明 + 首次导入某个飞书账号的文档时,需要先根据页面提示完成授权和安装。 + 支持绑定多个飞书账号。具体操作,请参考管理数据源权限。 + 目前仅支持导入我的空间下已开启了对外分享权限(允许内容被分享到组织外),且创建者是自己的云文档,暂不支持导入知识库和共享空间下的云文档。 在选择文件页面,你还可以设置飞书账号级别的更新频率,以控制知识库内飞书文档的同步更新行为。
设置分段策略配置上传飞书文档时,支持以自动分段与清洗、自定义分段这两种方式对文本内容进行分段处理。 内容分段可以更有效地召回与用户查询最相关的内容,从而提升回复的准确性。合理的内容分段对回复的效果有着直接影响。如果分块太大,可能包含太多不相关的信息,从而降低了检索的准确性。如果分块太小,可能会丢失必要的上下文信息,导致生成的响应缺乏连贯性或深度。详细说明,请参考配置分段策略。
配置存储平台共享存储使用扣子平台预置的默认存储系统,存储文本知识库内容。 注意 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。
云搜索服务使用火山引擎云搜索服务,存储文本知识库内容。 注意 + 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。 + 在知识库中选定云搜索服务进行存储后,如果在云搜索服务侧修改了实例的用户密码,请及时更新知识库侧的密码配置。 使用云搜索服务时,需完成如下配置,并单击测试,测试扣子平台与云搜索服务已连通。 + 地域:云搜索服务实例所在地域。 + 实例名称:目标云搜索服务实例。 + 你需要使用云搜索服务所在的火山引擎账号登录扣子平台,此处会自动同步账号内指定地域下的云搜索服务实例。 + 用户名:云搜索服务实例的用户名,固定为 admin。 + 密码:云搜索服务实例的用户密码。
  1. 微信公众号

微信公众号沉淀了海量的优质内容,涵盖了各行各业的知识、观点和资讯,将公众号文档作为知识库,能够提升智能体在垂直领域的专业度。以 KOL (Key Opinion Leader)类用户为例,他们的公众号积累了大量的原创内容。通过将扣子智能体嵌入到公众号作为智能回复机器人,并将公众号内容作为智能体的知识库,当用户向智能体提问时,智能体能够快速检索并整合公众号中的相关信息,提供精准、专业的回复。

扣子支持用户将公众号文档上传到知识库,特定的配置说明如下:

操作说明
设置上传配置选择导入类型为公众号后,你可以在选择文件页面,选择目标文档,上传到知识库。 说明 + 首次导入某个公众号的文档时,需要先根据页面提示完成授权。 + 每次最多导入 20 篇公众号文档,不支持导入视频文档。 + 支持绑定多个公众号账号。具体操作,请参考管理数据源权限。 在选择文件页面,你还可以设置公众号账号级别的更新频率,以控制知识库内公众号文档列表的同步更新行为。
设想分段策略配置上传公众号文档时,支持以自动分段与清洗、自定义分段这两种方式对文本内容进行分段处理。 内容分段可以更有效地召回与用户查询最相关的内容,从而提升回复的准确性。合理的内容分段对回复的效果有着直接影响。如果分块太大,可能包含太多不相关的信息,从而降低了检索的准确性。如果分块太小,可能会丢失必要的上下文信息,导致生成的响应缺乏连贯性或深度。详细说明,请参考配置分段策略。
配置存储平台共享存储使用扣子平台预置的默认存储系统,存储文本知识库内容。 注意 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。
云搜索服务使用火山引擎云搜索服务,存储文本知识库内容。 注意 + 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。 + 在知识库中选定云搜索服务进行存储后,如果在云搜索服务侧修改了实例的用户密码,请及时更新知识库侧的密码配置。 使用云搜索服务时,需完成如下配置,并单击测试,测试扣子平台与云搜索服务已连通。 + 地域:云搜索服务实例所在地域。 + 实例名称:目标云搜索服务实例。 + 你需要使用云搜索服务所在的火山引擎账号登录扣子平台,此处会自动同步账号内指定地域下的云搜索服务实例。 + 用户名:云搜索服务实例的用户名,固定为 admin。 + 密码:云搜索服务实例的用户密码。
  1. Notion

扣子支持用户从 Notion 中导入文本到知识库,特定的配置说明如下:

操作说明
设置上传配置选择导入类型为 Notion 后,你可以在选择文件页面,选择要导入的 Notion 文档。 说明 + 首次导入某个账号下的 Notion 数据时,需要先根据页面提示完成授权。 + 支持绑定多个 Notion 账号。具体操作,请参考管理数据源权限。
设置分段策略配置上传 Notion数据时,支持以自动分段、自定义分段这两种方式对文本内容进行分段处理。 内容分段可以更有效地召回与用户查询最相关的内容,从而提升回复的准确性。合理的内容分段对回复的效果有着直接影响。如果分块太大,可能包含太多不相关的信息,从而降低了检索的准确性。如果分块太小,可能会丢失必要的上下文信息,导致生成的响应缺乏连贯性或深度。详细说明,请参考配置分段策略。
配置存储平台共享存储使用扣子平台预置的默认存储系统,存储文本知识库内容。 注意 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。
云搜索服务使用火山引擎云搜索服务,存储文本知识库内容。 注意 + 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。 + 在知识库中选定云搜索服务进行存储后,如果在云搜索服务侧修改了实例的用户密码,请及时更新知识库侧的密码配置。 使用云搜索服务时,需完成如下配置,并单击测试,测试扣子平台与云搜索服务已连通。 + 地域:云搜索服务实例所在地域。 + 实例名称:目标云搜索服务实例。 + 你需要使用云搜索服务所在的火山引擎账号登录扣子平台,此处会自动同步账号内指定地域下的云搜索服务实例。 + 用户名:云搜索服务实例的用户名,固定为 admin。 + 密码:云搜索服务实例的用户密码。
  1. 自定义

扣子支持用户添加自定义的文本内容到知识库,特定的配置说明如下:

操作说明
设置上传配置选择导入类型为自定义后,你可以在文本填写页面,输入文档名称和内容来添加待导入的文本内容。上传自定义文本内容时,支持插入图片。
设置分段策略配置上传自定义文本时,支持以自动分段、自定义分段这两种方式对文本内容进行分段处理。 内容分段可以更有效地召回与用户查询最相关的内容,从而提升回复的准确性。合理的内容分段对回复的效果有着直接影响。如果分块太大,可能包含太多不相关的信息,从而降低了检索的准确性。如果分块太小,可能会丢失必要的上下文信息,导致生成的响应缺乏连贯性或深度。详细说明,请参考配置分段策略。
配置存储平台共享存储使用扣子平台预置的默认存储系统,存储文本知识库内容。 注意 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。
云搜索服务使用火山引擎云搜索服务,存储文本知识库内容。 注意 + 在目标知识库中首次上传文本时可以选择存储类型,后续不可变更。 + 在知识库中选定云搜索服务进行存储后,如果在云搜索服务侧修改了实例的用户密码,请及时更新知识库侧的密码配置。 使用云搜索服务时,需完成如下配置,并单击测试,测试扣子平台与云搜索服务已连通。 + 地域:云搜索服务实例所在地域。 + 实例名称:目标云搜索服务实例。 + 你需要使用云搜索服务所在的火山引擎账号登录扣子平台,此处会自动同步账号内指定地域下的云搜索服务实例。 + 用户名:云搜索服务实例的用户名,固定为 admin。 + 密码:云搜索服务实例的用户密码。
  1. 相关操作

创建知识库后,你可以在智能体或工作流中使用知识库。同时,你还可以依据业务发展的实际需求,对知识库进行更新、删除、更新数据源权限等操作。相关操作说明如下:

  • 使用知识库:在智能体或工作流中添加知识库,丰富 AI 应用的知识范围,提高模型回复内容的可靠性。

  • 维护知识库:根据业务变化,你可以对知识库进行停用、启用、编辑、删除等操作。

  • 管理数据源权限:从飞书、微信公众号、Notion等渠道上传文本时,需要获取数据源侧的授权。完成授权后,你可以随时移除授权或添加其他账号的授权。

三、使用知识库

大模型由于其工作原理,虽然可以回答通用的问题,但在专业技术的垂直领域中,模型知识的技术深度、更新及时性和准确性非常有限。如果对于模型生成的文本准确性的要求较高,例如企业智能客服、高精尖科学技术服务等应用场景中,往往需要通过知识库集成私有的知识数据,丰富 AI 应用的知识范围、提高模型回复的可靠性。

创建完知识库后,你可以将知识库直接与智能体进行关联用于响应用户回复;也可以在工作流中添加知识库写入节点或知识库检索节点,成为工作流中的一环。

  1. 在智能体中使用知识库

参考以下操作,在智能体中添加知识库。

  1. 登录扣子平台

  2. 在左侧导航栏中选择工作空间,并在页面顶部空间列表中选择个人空间或团队空间。

    1. 系统默认创建了一个个人空间,该空间内创建的资源例如智能体、插件、知识库是你的私有资源,其他用户不可见。你也可以创建团队或加入其他团队,团队内的资源可以和其他团队成员共享。更多信息,请参考管理团队。
  3. 项目开发页面,创建一个智能体或选择一个已创建的智能体。

  4. 编排页面,定位到知识功能区域,然后单击对应的添加按钮( + )添加要使用的知识库内容。

  1. 在工作流中使用知识库

扣子应用的业务流程中,检索知识库的时机与方式由工作流的节点编排决定。

  • 如果需要在知识库中检索知识,可以在工作流中添加知识库检索节点,工作流运行到这个节点时,会根据节点设置的检索和召回逻辑,选择最符合用户需求的一批知识,通过输出参数传递到后续节点。知识库检索节点的详细说明,可参考知识库检索节点。
  • 如果需要上传新的文档到指定的文档知识库,可以在工作流中添加知识库写入节点,工作流运行到这个节点时,系统会根据业务逻辑向指定文档知识库中上传文档,为知识库增加新的知识。知识库写入节点的详细说明,可参知识库写入节点。

参考以下操作,在工作流中添加知识库检索节点或知识库写入节点。

  1. 登录扣子平台

  2. 在左侧导航栏中选择工作空间,并在页面顶部空间列表中选择个人空间或团队空间。

    1. 系统默认创建了一个个人空间,该空间内创建的资源例如智能体、插件、知识库是你的私有资源,其他用户不可见。你也可以创建团队或加入其他团队,团队内的资源可以和其他团队成员共享。更多信息,请参考管理团队。
  3. 资源库页面,选择一个目标工作流或创建一个新的工作流。

  4. 在工作流中添加知识库检索节点或知识库写入节点,并选择要添加的知识库。

四、维护知识库

扣子的知识库功能支持上传和存储外部知识内容,并提供多种检索能力。扣子的知识能力可以解决大模型幻觉、专业领域知识不足的问题,提升大模型回复的准确率。

知识库作为资源存储在资源库中,你可以在资源库中维护知识库。

  1. 编辑知识库

知识库的所有者可以编辑自己创建的知识库,包括编辑知识库的名称、描述信息和图标。

参考以下操作,编辑知识库:

  1. 登录扣子平台

  2. 在左侧导航栏中选择工作空间,并在页面顶部空间列表中选择个人空间或团队空间。

    1. 系统默认创建了一个个人空间,该空间内创建的资源例如智能体、插件、知识库是你的私有资源,其他用户不可见。你也可以创建团队或加入其他团队,团队内的资源可以和其他团队成员共享。更多信息,请参考工作空间概述。
  3. 资源库页面,单击目标知识库。

  4. 单击知识库名称右侧的编辑图标。

  1. 编辑知识库页面,根据实际需要修改名称、描述和图标,然后单击确认

  1. 停用知识库

创建完知识库后,知识库默认为启用状态。如果你不希望使用某个知识库,你可以执行停用操作。如果智能体或工作流已经使用了某个知识库,停用该知识库后,该知识库的内容也不会被召回。

资源库页面,找到目标知识库,然后关闭操作列下的 … —>启用的开关。

关闭知识库后,知识库的状态变更为已停用

  1. 启用知识库

如果你希望智能体或工作流使用某个知识库,你可以执行启用操作。启用后,知识库的内容才能被召回。

资源库页面,找到目标知识库,然后打开操作列下的 … —>启用的开关。

开启知识库后,系统会取消已停用标签。

  1. 为知识库添加内容

创建完知识库后,你可以向知识库中添加新内容,以不断丰富知识库。

  1. 资源库页面,单击目标知识库。
  2. 单击页面右上角的添加内容,然后选择一种导入方式。
  3. 添加内容页面,根据指引添加内容。

添加内容同创建知识库时上传文件到知识库的操作一致,详情请参考创建文本知识库。

  1. 删除知识库文件

在知识库中,每个在线网页、各类格式文件或图片都是一个个独立的知识文件。你可以在扣子平台中查看每个知识库文件的内容分段,也可以通过 API 的方式管理和维护知识库,例如查看知识库文件列表、删除知识库文件等。

注意

删除某个知识库文件后,引用了该知识库文件的智能体或工作流也将自动取消引用,且此操作不可撤回,请谨慎操作。

参考以下操作,删除知识库文件:

  1. 资源库页面,选择目标知识库。
  2. 展开全部内容,然后选择要删除的知识库文件。

  1. 单击右上角的删除图标。

  1. 在弹出的对话框中,单击删除

知识库文件相关的API如下:

API说明
创建知识库文件调用接口向指定知识库中上传文件。
修改知识库文件调用接口修改知识库文件名称和更新策略。
删除知识库文件调用接口删除知识库中的文本、图片、表格等文件,支持批量删除。
查看知识库文件列表调用接口查看指定知识库的文件列表,即文档、表格或图像列表。
  1. 删除知识库

知识库的所有者支持删除自己创建的知识库。

注意

删除某个知识库后,引用了该知识库的智能体或工作流也将自动取消引用,且此操作不可撤回,请谨慎操作。

  1. 资源库页面,找到目标知识库,然后单击操作列下的 … —>删除

  1. 在弹出的对话框中,单击确定

五、智能体添加记忆

  1. 变量

你可以通过创建变量来保存用户个人信息,例如语言偏好等,并让智能体记住这些特征,使回复更加个性化。变量以 key-value 形式存储用户的某一行为或偏好。大语言模型会根据用户输入内容进行语义匹配,为定义的变量赋值并保存值。你可以在提示词中为智能体声明某个变量的具体使用场景。

  1. 变量类型

使用扣子开发智能体时,可以通过系统变量和用户变量来满足不同的业务需求和场景。每种变量类型都有其特定的用途和优势,以下是对这些变量类型的介绍说明。

系统变量

系统默认创建用户信息、飞书等类别的系统变量,你不可以新增、修改、删除默认的系统变量。这些系统变量默认全部关闭,为不可用状态,你可以根据实际业务需求选择开启需要的系统变量。开启后,系统在用户请求时自动产生变量数据,这些数据是只读的,不可由用户或开发者修改。

扣子默认创建的系统变量如下,每个变量获取的数据不同,支持使用的渠道也不同。

变量分类变量名称变量描述变量类型支持渠道
用户信息sys_uuid用户唯一 ID。String全部渠道
sys_longitude用户实时位置的经度信息,使用此变量会触发用户授权。String扣子商店和扣子模板
sys_latitude用户实时位置的纬度信息,使用此变量会触发用户授权。String扣子商店和扣子模板
sys_lat_lon用户实时位置的经纬度信息,纬度在前,经度在后,使用此变量会触发用户授权。String扣子商店和扣子模板
sys_lon_lat用户实时位置的经纬度信息,经度在前,纬度在后,使用此变量会触发用户授权。String扣子商店和扣子模板
飞书sys_lark_chat_id智能体所在飞书的会话 ID,详细说明可参考群 ID 说明。 在开发智能总结应用时,通过sys_lark_chat_id变量可以获取飞书的会话ID,然后使用飞书消息中的get_chat_messages插件工具对特定会话的聊天内容进行智能总结。String飞书
sys_lark_chat_mode智能体所在飞书的会话类型,详细说明可参考群组管理概述。 在开发团队协作助手应用中,通过获取sys_lark_chat_mode变量,能够根据聊天模式(如群聊或私聊)动态调整应用的功能和界面布局。例如,在群聊模式下,应用可以提供任务分配、项目进度更新等协作功能,促进团队成员之间的信息共享和任务协同。String飞书
sys_lark_open_id请求智能体的飞书用户的 open_id,详细说明可参考用户身份。 在开发智能客服应用中,利用sys_lark_open_id变量,可以识别并验证用户身份,根据用户的历史咨询记录和偏好,提供定制化的服务建议,提高客服效率和用户满意度。String飞书
sys_lark_thread_id智能体所在飞书的话题 ID,详细说明可参考话题概述。 在开发知识管理应用中,通过获取sys_lark_thread_id变量,将相关的讨论和信息按照话题进行分类和聚合。例如,在企业内部的知识分享群组中,应用可以根据不同的thread_id将员工的讨论内容、分享的资料和总结的结论归档到相应的知识主题下,方便后续的知识检索和复用。String飞书
用户变量

用户变量用于存储每个用户在使用智能体过程中,需要持久化存储和读取的数据,例如用户的个性化设置、语言偏好、历史交互记录等。开发者可以在扣子平台中配置用户变量,并在用户与智能体交互时存储和检索这些变量,用户变量的值在用户会话之间持久化存储,支持可读可写。

  1. 创建变量

创建智能体之后,扣子平台默认为智能体添加系统变量。你也可以根据业务场景的需求,为智能体创建用户变量。

说明

创建变量时,必须确保每个变量名在智能体内唯一,不能与智能体内的其他变量重名。

  1. 登录扣子平台

  2. 在左侧导航栏中选择工作空间,并在页面顶部空间列表中选择个人空间或团队空间。

    1. 系统默认创建了一个个人空间,该空间内创建的资源例如智能体、插件、知识库是你的私有资源,其他用户不可见。你也可以创建团队或加入其他团队,团队内的资源可以和其他团队成员共享。更多信息,请参考管理团队。
  3. 项目开发页面,选择智能体。

  4. 在智能体编排页面,找到变量功能并单击旁边的 **+ **按钮。

  5. 编辑变量对话框内,创建变量并单击保存

    1. 新增变量时,需要设置变量名称、默认值和描述。建议填写准确的变量名称与描述,以提高智能体命中用户数据的准确性。
    2. 变量默认开启提示词访问,你可以在智能体的人设与提示词中,指定变量的具体使用场景。未开启时,仅支持在工作流中使用此变量。

  1. 使用变量

当你创建好变量之后,在用户对话时会自动识别与变量匹配的内容,并将内容保存至变量内。如果变量开启了提示词访问,你也可以在智能体的人设与提示词中,指定变量的具体使用场景,例如称呼你的用户为{{name}}。

在智能体详情页右侧预览与调试区域,你可以调试智能体并查看变量的使用效果。

预览与调试区域右上角的记忆 > 变量中查看保存的数据。

注意

  • 如果用户更新了数据(例如,用户在会话内提供了新的用户名),则智能体会自动修改变量为最新值。
  • 如果变量被删除,则变量内保存的用户数据也会被删除。

示例

飞书聊天总结智能体为例,工作流中通过插件节点获取系统变量 sys_lark_chat_id 的值,随后借助飞书消息插件节点和大模型节点,获取群消息并总结聊天内容,从而实现对飞书聊天内容的高效总结。

工作流的流程如下:

  1. 登录扣子平台

  2. 在左侧导航栏中选择工作空间,并在页面顶部空间列表中选择个人空间或团队空间。

  3. 项目开发页面,选择智能体或创建一个智能体。

  4. 创建工作流。

    1. 单击工作流对应的添加图标 + ,然后单击创建工作流->创建工作流
    2. 输入工作流的名称和描述,然后单击确认
    3. 在工作流画布中编排工作流,然后试运行并发布工作流。工作流中的各个节点配置如下:
    4. 节点类型说明示例
      开始节点工作流的起始节点,本示例无需配置任何输入参数。
      插件节点添加飞书消息插件中的** get_chat_messages 工具,**用于获取指定单聊或群聊的消息记录,需要设置: - container_id:引用系统变量sys_lark_chat_id,sys_lark_chat_id为智能体所在飞书的会话 ID。 - appid:配置智能体在飞书开放平台应用的唯一标识,创建应用后可获得 appid。 - appsecret:配置应用秘钥,创建应用后获得可 appsecret。
      大模型节点用于总结飞书聊天记录,需要设置: - 输入:引用插件节点的data。 - 系统提示词:设置聊天总结的人设,可以通过 AI 自动生成。 - 用户提示词:设置为总结{{input}}。 - 输出:变量名设置为 output。
      结束节点选择返回文本模式,并设置输出变量和回答内容。 - 输出变量:定义 output 参数,引用大模型节点的输出参数 output。 - 回答内容:设置为{{output}}。
    5. 将工作流添加到智能体。
  5. 配置人设与回复逻辑。

  1. 发布智能体。

    1. 单击右上角的发布

    2. 勾选飞书,然后单击发布

      1. 首次发布时需要进行授权,根据引导完成授权。

  1. 测试智能体效果。

  1. 数据库

扣子的数据库功能提供了一种简单、高效的方式来管理和处理结构化数据,开发者和用户可通过自然语言插入、查询、修改或删除数据库中的数据。同时,也支持开发者开启多用户模式,支持更灵活的读写控制。

  1. 功能介绍

扣子提供了类似传统软件开发中数据库的功能,允许用户以表格结构存储数据。这种数据存储方式非常适合组织和管理结构化数据,例如客户信息、产品列表、订单记录等。

扣子数据表支持单用户和多用户两种查询模式。

说明

  • 开发者指创建数据表的开发人员;用户指智能体的使用者。
  • 多用户模式仅在工作流的数据库节点中生效。
单用户模式多用户模式
读写模式有限读写模式完整读写模式
读写权限开发者和用户都可以添加记录,但仅能读/修改/删除自己创建的来自同渠道的数据。开发者和用户都可读/写/修改/删除表中来自同渠道的任何数据,由业务逻辑控制读写权限。
生效方式在创建表格时,选择单用户模式。在创建表格时,选择多用户模式。
调用方式+ 支持在 Prompt、Query 中通过 NL2SQL 方式及代码方式调用+ 支持在工作流中通过 NL2SQL 方式及代码方式调用+ 支持在 Prompt、Query 中通过 NL2SQL 方式及代码方式调用+ 支持在工作流中通过 NL2SQL 方式及代码方式调用
应用场景示例+ 一个记账智能体,每个用户/开发者,自己记录账单,自己查看。+ 一个金融分析智能体,开发者导入上市公司近三年财报到数据表用于做金融分析,所有用户都可以读这份数据用于金融分析。+ 一个漂流瓶智能体,用户可以发布漂流瓶,也可以随机读取别人的漂流瓶。+ 一个联网游戏智能体,游戏结束后,可以查看排行榜。
  1. 创建数据表

参考以下操作,创建数据表:

  1. 登录扣子平台

  2. 在左侧导航栏中选择工作空间,并在页面顶部空间列表中选择个人空间或团队空间。

    1. 系统默认创建了一个个人空间,该空间内创建的资源例如智能体、插件、知识库是你的私有资源,其他用户不可见。你也可以创建团队或加入其他团队,团队内的资源可以和其他团队成员共享。更多信息,请参考管理团队。
  3. 项目开发页面,选择智能体。

  4. 在智能体编排页面,单击数据库对应的创建图标 +

  5. 在弹出的新窗口中,单击新建数据表>自定义表格创建数据表,或单击新建数据表>基于模版创建,复用示例表再进行修改。

  6. 根据以下信息配置数据表,然后单击保存

配置项说明
表格名称输入表名称。
表格描述输入表的描述信息。
Table 查询模式扣子数据表支持单用户和多用户两种查询模式。 开发者指创建数据表的开发人员;用户指使用智能体的终端用户。 - 单用户模式:开发者和用户都可以添加记录,但仅能读/修改/删除自己创建的来自同渠道的数据。 - 多用户模式:开发者和用户都可读/写/修改/删除表中来自同渠道的任何数据,由业务逻辑控制读写权限。 - 注意 * 选择多用户模式后,会自动新增一个 uuid 字段,用来标识用户,由系统自动生成。 * 在 Prompt 中,使用 NL2SQL 操作数据表时不需要包含 uuid 字段,但在工作流中使用多用户模式时,需要包含 uuid 字段。
字段添加字段信息: - 存储字段名称:字段名称。只能包含小写字母或数字或_、必须以英文字母开头、最多 64 字符。 - 描述:存储字段的补充说明,可以是对存储字段的自然语言描述、示例数据,也可以是格式说明等。 - 数据类型:存储字段的数据类型,大语言模型会按照选择的数据类型对用户输入的内容进行处理和保存。目前支持的数据类型包括 String、Integer、Time、Number 和 Boolean。 - 是否必要:是否是必要字段。必要字段,是指用户在保存一行数据时必须提供对应字段信息。
  1. 使用数据表

扣子支持在 Prompt 通过 NL2SQL 方式对数据表进行操作。为了方便演示和介绍数据功能,本文以一个记录日常开支的智能体为例。这个智能体中使用的数据表结构如下。

用户可通过自然语言与智能体进行交互来插入或查询数据库中的数据。智能体会根据用户的输入自动创建一条新的记录并将其存储在数据库中。同样,用户也可以使用自然语言查询数据库中的数据,例如询问某一天的总开支、某一个类别的开支等,智能体会根据用户的查询条件从数据库中检索相应的数据并返回给用户。

参考以下操作,在 Prompt 中添加并使用数据表:

  1. 在 Prompt 中明确说明要执行的操作和涉及的字段,包括字段的使用说明。这样,大语言模型可以更准确地根据用户输入来执行操作。

  2. 在数据库功能区域添加要操作的数据表。

  3. 在调试区域,进行测试。

    1. 可单击调试区域右上方查看数据表中的数据。

  1. 长期记忆

长期记忆功能模仿人类大脑形成对用户的个人记忆,基于这些记忆可以提供个性化回复,提升用户体验。

  1. 功能说明

在多轮对话中,智能体会根据对话的上下文生成更符合当下场景的回复。但上下文是相对短期的记忆,超过模型指定的上下文轮数之后,对话效果通常会大打折扣。尤其在和情感陪伴类的智能体对话时,对话体验更依赖模型的长期记忆能力。在 AI 助手、虚拟男友/女友、心理咨询等类型的智能体中,智能体需要记录用户的个性化信息,通过不断的对话来理解、刷新和丰富信息、了解用户的个性,在用户对话时能召回相关的记忆,生成符合语境和用户画像的回复。例如虚拟男友类型的智能体,智能体需要长期记忆能力来记录每个用户的人设与偏好,使情感陪伴场景更加真实、个性化。

长期记忆功能主要包含以下两部分能力:

  • 记录:自动识别并记录用户在对话中提供的个性化信息,例如用户画像、记忆点等信息。
  • 召回:在用户要求提取相关的长期记忆,并总结个性化信息,在此基础上生成最终回复。

说明

  • 长期记忆在用户之间是相互隔离的,包括智能体开发者在内的每个用户只能看到和使用自己与智能体对话生成的记忆内容。
  • 长期记忆会保存用户的个性化信息,包括用户画像、用户记忆点等,详细说明可参考记录长期记忆。
  1. 开启长期记忆

你可以在智能体的编排页面打开长期记忆功能。功能开启后,智能体会自动收集对话中和用户相关的个性化信息,并将其记录到自己的长期记忆中。长期记忆数据将保存在平台的系统数据库中。

功能开启后,你还可以设置是否支持在 Prompt 中调用长期记忆。关于两种使用方式的说明,可以查看召回长期记忆。

  • 开启“支持在Prompt中调用”:智能体的用户可以通过 Prompt 或工作流的长期记忆节点召回长期记忆。
  • 关闭“支持在Prompt中调用”:智能体的用户只能在工作流中通过长期记忆节点召回长期记忆,无法在和智能体对话时通过提问的方式召回长期记忆。

说明

  • 支持在Prompt中调用仅影响长期记忆的召回方式,不影响长期记忆的记录方式,只要长期记忆功能是开启状态,智能体就会记录用户的个性化信息。
  • 如果智能体绑定了包含长期记忆的工作流,则智能体需要开启长期记忆功能,否则工作流执行会报错 702090900 This智能体does not have LTM enabled.。同时建议关闭支持在Prompt中调用,否则在对话中容易同时触发长期记忆召回和工作流执行,影响对话效果。

  1. 记录长期记忆

开启长期记忆后,智能体用户可以通过多轮对话向智能体输入个性化信息,智能体会自动提取并记录以下信息:

  • 用户画像信息:用户的个人信息和喜好。例如用户希望智能体如何称呼自己、用户的年龄、性别、个人喜好等个性化信息。
  • 用户记忆点信息:某个日期发生的某些关键事件。例如用户昨天的期末考试得了 100 分、今天早上喝了豆浆等信息。
  • 用户编写的信息:用户主动提供的信息中,手动编辑过的部分。若记忆中的其他信息与此类信息有冲突,智能体会优先采纳用户编写的信息。目前仅在智能体调试模式下可以手动编辑长期记忆。

通常情况下,智能体会主动识别并提取、记录用户个性化信息,例如在对话中和智能体强调“叫我小李”。对于一些非关键信息,可能智能体不会主动记录,你可以通过对话方式强制智能体记录长期记忆,例如对话时使用“记录到长期记忆”、“一定要记住”、“别忘了”等相似语义的关键词。

例如,通过对话方式告诉智能体今天的天气,智能体会自动将其记录在长期记忆中。

  1. 召回长期记忆

开启长期记忆后,用户可以通过 Prompt 或工作流召回长期记忆。

在 Prompt 中召回长期记忆

如果智能体开发者开启了“支持在Prompt中调用”,那么用户可以在和智能体的对话中主动查询长期记忆,例如用户向智能体发送自己的早餐菜谱,如果用户询问“今天早上我吃了什么”,智能体会从长期记忆中召回今日早餐相关的内容,总结后回复用户。

对于人设类的智能体,为了出于对用户关心,增强用户体验,在某些场景下,智能体也会主动提及长期记忆中存储的关键信息。例如用户表示自己摔了一跤,智能体可能会主动关心用户的康复情况。

如果未开启长期记忆,或关闭了“支持在Prompt中调用”,用户清空对话记录后,智能体不会在对话中考虑上下文。例如:

在工作流中召回长期记忆

你可以在工作流中通过长期记忆节点来召回指定关键词相关的长期记忆,作为工作流下游节点的输入参数。关于工作流长期记忆节点的详细说明,可以参考长期记忆节点。

例如对于查看热点新闻的工作流,可以召回用户的长期记忆,根据用户喜好来筛选出其可能感兴趣的内容。

  1. 修改和删除长期记忆

记录长期记忆后,可以在对话中通过自然语言修改和更新长期记忆,随着对话次数的逐渐累积,智能体的长期记忆也会越来越丰富、完善。

支持智能体的开发者删除或清空本人的长期记忆。在调试页面的右上角单击 Memory > 长期记忆,可查看本人相关的所有长期记忆,也可以编辑或删除、清空本人的长期记忆。

  1. 常见问题

  • 长期记忆与变量的区别?

变量是由智能体开发者创建的,智能体仅记录开发者定义过的变量。而长期记忆是智能体从对话中自动提取、总结、并且不断调整和积累的用户信息,是更为个性化的内容。

  • 长期记忆与知识的区别?

知识是更通用的基础设施,虽然支持自动更新已添加的知识,但知识仍然是相对静态的内容。而长期记忆一定是在不断构建的,随着用户使用智能体对话的变多,记忆也会越来越丰富。

  • 为什么 Memory 中看不到长期记忆?

长期记忆记录到 Memory 中需要一定时间,建议在对话一段时间后再进入 Memory > 长期记忆页面查看长期记忆,或者再与智能体对话 1~2 轮之后查看。

  1. 文件盒子

文件盒子(Filebox)是扣子智能体的能力之一,它提供了多模态数据的合规存储、管理以及交互能力。多模态数据是指用户发给智能体的图片、PDF、DOCX、Excel 等常见文件。

  1. 能力介绍

文件盒子基于合规和隐私保护统一存储和管理用户上传的图片、文档、表格等常用文件,在面向复杂的用户任务场景(例如为智能体搭建相册、记账本等能力)时,通过文件盒子可以反复使用已保存的多模态数据。当用户使用智能体时,通过自然语言即可管理或使用文件盒子。常见的操作如下:

  • 文件管理:文档和图片的增删改查、批量修改等操作。
  • 文件夹管理:文件夹的增删改查、移动等操作。
  • 多模态数据增强检索:包括文件内容理解在内的混合检索并自适应呈现检索结果。

说明

文件盒子功能仅适用于发布到豆包和智能体商店的智能体。其他渠道暂不支持使用文件盒子。

  1. 开启文件盒子

在智能体编排页面的记忆 > 文件盒子区域,开启文件盒子能力。开启后,你可以在工具详情中查看文件盒子相关的 API 名称。

上传文件

开启文件盒子功能之后,你可以通过以下方式上传文件。上传到智能体中的文件均会保存在文件盒子中。

说明

  • 上传的文件数据默认永久保存,不需要时可以通过指令 fileDelete 删除。
  • 不同用户之间上传的文件互相隔离,你只能查看并管理自己上传的文件。

在编排页面上传文件

在对话页面上传文件

  1. 在智能体编排页面的预览与调试区域,展开 Memory > 文件盒子

  1. 照片文档页签的右上角单击上传。
  2. 根据页面提示上传符合要求的文件。

  1. 上传文件后,你可以在照片文档页签中查看自己上传的文件列表。
  • 你也可以在操作列对已上传的文件执行一些管理操作,例如提问、复制名字、改名、删除。也可以在对话区域内通过自然语言或 API 指令管理文件,详细说明可参考使用文件盒子。

使用文件盒子

你可以通过以下方式使用文件盒子:

  • 直接使用 API:在对话时直接发送 API 名称,使智能体执行对应操作。你可以在编排页面通过文件盒子 > 工具详情查看目前支持的 API 列表。
  • 通过提示词定义 API
  • 在编排页面的人设与回复逻辑区域中,指定文件盒子某些 API 的具体使用场景,例如 “fileList(返回今天上传的照片)”。发布智能体后就可以在对话时通过 fileList 指令快速查看今天上传的照片。
  • 使用自然语言:在对话时直接通过自然语言发送指令,例如查看我今天上传的图片。

文件盒子支持的功能及常见指令包括:

操作类型说明
文件管理文档和图片的增删改查、批量修改等操作。例如向智能体发出以下类型的用户指令: + 文档筛选指令:查看我今天上传的图片 + 文档语义检索指令:查看关于 AI 的文档 + 修改文档名称的指令:帮我把“故障处理指南.docx”改名为“A产品-故障处理指南-2024.docx” + 删除文件的指令:删除2024年7月15日之前上传的所有文件
文件夹管理文件夹的增删改查、移动等操作。例如向智能体发出以下类型的用户指令: + 创建文件夹的指令:创建相册“动物” + 移动图片到相册的指令:移动图片“故障截图.png”到相册“故障处理” 说明 暂不支持将文档移动至文件夹中,文件夹仅支持存放图片。
多模态数据增强检索文件盒子提供了多模态数据的增强检索,包括文件内容理解在内的混合检索并自适应呈现检索结果。常见的操作如下: + 文档总结指令:帮我总结文档“故障处理指南.docx” + 文档问答指令:介绍一下 A 产品故障的处理流程 + 增强检索指令:查看狗狗相关的图片