FastGPTFastGPT
知识库

知识库集合标签

使用集合标签管理知识库文档,并在检索时通过手动输入或变量引用精准过滤搜索范围

💡

版本提示:多维度类型化集合标签管理与检索条件过滤自 FastGPT v4.17.1 版本起正式支持。

知识库集合标签是 FastGPT 商业版功能。你可以为知识库中的集合(文件/文档)添加多维度的结构化标签(如适用部门、文档分类、保密等级、生效日期等),不仅可以在知识库内快速筛选和批量管理文档,还能在应用与工作流的「知识库搜索」阶段通过手动输入或变量引用精准过滤检索范围。

除「Web 站点同步」知识库外,通用知识库、第三方知识库(飞书、语雀、API 文件库等)均支持集合标签功能。

为什么需要使用集合标签?

在实际业务中,一个知识库往往会沉淀大量不同部门、不同版本或不同密级的文档。如果仅依赖纯向量或全文检索,容易出现以下问题:

  • 跨部门干扰:研发部员工询问“项目评审流程”,却召回了市场部的活动评审制度。
  • 过期文档干扰:知识库中同时保留了历史制度与 2026 年新版制度,检索时召回了旧版条款。
  • 密级与范围控制:不同职级或外部客户共用同一个知识库问答助手时,需要按用户身份隔离可检索的文档范围。

通过集合标签,你可以先通过元数据过滤圈定目标文件集合,再在这些文件内部执行语义与全文检索,大幅提升回答准确率与数据安全性。


第一步:规划与管理标签

进入知识库详情页,在「集合列表」右上角点击 「标签管理」 按钮(需具备该知识库的写权限),即可打开标签管理弹窗。

标签管理

1. 如何选择标签属性?

点击弹窗左下角的 「+ 添加标签」,输入标签名称(最长 20 个字符)并选择标签属性。FastGPT 支持以下 3 种标签属性:

标签属性适用场景赋值方式与限制示例
选项适合固定分类或一对多归属场景(最常用)单个文件可勾选多个选项(单文件最多 64 个选项,单选项最长 256 字符)适用部门(全员、研发部、财务部)
文档分类(人事制度、信息安全)
数字适合需要按大小或数值区间比较的量化指标单个文件填写 1 个数值(支持整数或小数)保密等级(1、2、3)
适用职级(5、6)
日期适合具有明确时效性的文档时间节点单个文件选择 1 个日期时间(精确到 YYYY-MM-DD HH:mm)生效日期(2026-01-01 09:00)
  • 标签创建后,标签属性不可修改;标签名称可随时点击修改图标进行重命名。
  • 删除某个标签时,系统会同步移除该知识库下所有文件已绑定的该标签数据,请谨慎操作。

2. 预设与维护「选项」值

对于 「选项」 属性的标签,点击该行右侧的设置图标(⚙)可进入 「选项管理」:

选项管理

  • 预先添加选项:提前录入标准分类词(如各部门名称),方便团队成员后续统一打标。
  • 重命名选项:修改某个选项名称后,知识库内所有已绑定该选项的文件会自动同步更新为新名称,无需逐个文件重新设置。
  • 删除选项:删除某个选项后,会自动从已绑定该选项的文件中移除该选项值。

第二步:为文件设置标签

创建好标签后,你可以通过以下三种方式为知识库中的文件设置标签值:

1. 单个文件设置标签

在集合列表中打开目标文件的 「标签设置」 弹窗:

打开单个文件标签设置单个文件设置标签
  • 点击 「+ 添加标签」 可为当前文件增加新的标签项,并根据标签属性选择选项、输入数字或选择日期。
  • 快速新建选项:为「选项」属性标签赋值时,如果下拉列表中还没有你需要的选项,可以直接在输入框中输入新选项名称并按回车(或点击创建提示),系统会自动将该选项加入标签库并绑定到当前文件。
  • 如果还未创建所需标签,可直接点击弹窗左下角的 「标签管理」 快捷跳转创建。

2. 批量修改标签

当需要同时为一批文件打标或清理标签时,在集合列表中勾选多个文件,点击底部浮窗操作栏的 「批量修改标签」:

批量修改标签

批量修改支持两个标签页操作:

  • 批量添加标签:
    • 「选项」属性标签:右侧支持选择 「追加」(默认,保留各文件原有的选项,仅将本次新增的选项合并进去)或 「覆盖」(清空该标签原有选项,替换为本次选择的选项)。
    • 「数字 / 日期」属性标签:由于单文件仅存单个值,批量添加时会直接覆盖原有值。
  • 批量移除标签:
    • 弹窗会自动汇总所选文件当前已绑定的全部标签。
    • 对于 「选项」 标签,既可以点击右侧删除图标移除整个标签,也可以点击展开箭头,仅勾选移除某几个特定选项值(保留其余选项)。

3. 通过 API 导入或更新文件时设置标签

通过 OpenAPI 创建或更新集合时,可在请求体中直接传入 tags 字段:

{
  "datasetId": "69ddb01e2d241386ca47adbe",
  "name": "员工考勤与休假管理制度(2026版).pdf",
  "tags": [
    { "tag": "适用部门", "value": ["全员", "人力资源部"] },
    { "tag": "保密等级", "value": 1 },
    { "tag": "生效日期", "value": 1767229200000 }
  ]
}
  • 如果传入的标签名称在当前知识库中尚不存在,系统会根据 value 的数据格式自动创建对应标签(字符串数组创建为 选项,数值创建为 数字)。

第三步:在集合列表中按标签筛选文件

日常维护知识库时,点击集合列表表头上方的 「标签 | 全部」 按钮,即可按标签快速筛选文件:

集合列表按标签筛选

  • 左列选择标签名称(右上角数字角标代表该标签下已勾选的值数量),右列支持搜索并勾选具体标签值,勾选后列表实时刷新。
  • 组合筛选规则:
    • 同一标签内勾选多个值:为 或(OR) 关系。例如在 适用部门 下同时勾选 全员 和 研发部,会展示包含其中任意一个部门的文件。
    • 不同标签之间:为 且(AND) 关系。例如同时筛选 适用部门:研发部 与 保密等级:3,则只展示同时满足这两个条件的文件。

第四步:在知识库检索中使用「标签过滤」

在构建问答应用或工作流时,启用「标签过滤」可以让模型只在满足标签条件的文件范围内检索。

1. 开启与配置入口

  • 工作流(Workflow):在画布中找到 「知识库搜索」 节点,在 「标签过滤」 区域右上角点击 「开启」 按钮即可展开条件配置器。

    工作流知识库搜索标签过滤

  • 对话 Agent / 简易应用:在应用配置页的「知识库」区域点击 「参数」,打开「知识库搜索配置」弹窗并切换到 「标签过滤」 标签页。

    对话Agent知识库搜索标签过滤

2. 过滤条件组合逻辑(自定义标签 + 系统标签)

标签过滤条件分为上下两个区域,「自定义标签」与「系统标签」两个区域之间固定为 AND(同时满足)关系:

  1. 自定义标签:
    • 点击 「+ 添加过滤条件」 选择知识库中的自定义标签、比较操作符与目标值(支持切换 手动输入 或 变量引用)。
    • 当存在多条自定义标签条件时,点击区域左上角的 AND / OR 按钮可切换它们之间的逻辑关系:
      • AND:文件必须同时满足所有自定义标签条件才会被检索。
      • OR:文件满足任意一条自定义标签条件即可被检索。
  2. 系统标签:
    • 基于文件自身的系统属性进行过滤,多条系统标签条件之间固定为 AND 关系:
      • 创建时间:按文件在知识库中的创建时间过滤,支持 大于等于(>=)和 小于等于(<=)。
      • 集合 ID:操作符固定为 属于,通过变量引用传入指定的集合 ID(或文件夹 ID;若传入文件夹 ID,系统会自动递归包含该文件夹下的所有子文件)。

3. 各属性标签支持的比较操作符

不同属性的标签在过滤时支持的操作符如下:

标签属性支持的操作符说明与匹配规则
选项等于、不等于
包含、不包含
属于、不属于
为空、不为空
- 等于 / 不等于:文件的选项集合与目标选项集合完全相同 / 不完全相同(忽略顺序)
- 包含 / 不包含:文件的选项中包含全部目标选项 / 不包含全部目标选项
- 属于 / 不属于:文件的选项与目标选项存在交集(命中任一即满足)/ 无任何交集
数字等于、不等于
大于、小于
大于等于、小于等于
为空、不为空
按数值大小进行数学比较。变量引用时支持传入数值或可转为数值的字符串
日期等于、不等于
晚于、早于
为空、不为空
按时间先后进行比较。变量引用时支持传入毫秒时间戳或标准日期字符串(如 2026-01-01 09:00)

未设置该标签的文件(空值)会如何匹配?

如果知识库中有部分文件尚未绑定某个标签:

  • 当过滤条件使用正向匹配(如 等于、包含、属于、大于、小于、大于等于、小于等于、晚于、早于、不为空)时,未绑定该标签的文件均判定为不满足条件,不会被检索召回。
  • 当过滤条件使用排除或空值判断(为空、不等于、不包含、不属于)时,未绑定该标签的文件判定为满足条件,会正常参与检索。

高级用法:通过变量引用整体传入 JSON 过滤表达式

在工作流「知识库搜索」节点中,如果可视化条件构建器无法满足复杂的组合逻辑(例如由上游「代码运行」节点根据业务规则动态拼装过滤条件),你可以将「标签过滤」标题栏右侧的输入方式从「手动输入」切换为 「变量引用」,直接传入一个 JSON 对象或 JSON 字符串。

JSON 过滤结构示例

{
  "tags": {
    "$and": [
      { "适用部门": { "$in": ["全员", "研发部"] } },
      { "保密等级": { "$lte": 2 } },
      { "生效日期": { "$gt": "2026-01-01 00:00" } }
    ]
  },
  "createTime": {
    "$gte": "2026-01-01 00:00",
    "$lte": "2026-12-31 23:59"
  },
  "collectionIds": ["6593e137231a2be9c5603ba9"]
}

JSON 字段与操作符对照表

1. 顶层字段说明(顶层各字段之间固定为 AND 交集关系)

字段类型说明
tagsObject自定义标签过滤条件,支持包含 $and(全部满足)或 $or(满足任一)条件数组
createTimeObject文件创建时间范围,支持 $gte(大于等于)和 $lte(小于等于),值可为毫秒时间戳或日期字符串
collectionIdsstring[]限定检索的集合 ID(或文件夹 ID)字符串数组

2. 自定义标签操作符对照表

标签属性操作符标识对应含义示例
选项$is / $isNot等于 / 不等于{"适用部门": {"$is": ["全员", "研发部"]}}
选项$contains / $notContains包含 / 不包含{"适用部门": {"$contains": ["研发部"]}}
选项$in / $notIn属于 / 不属于{"适用部门": {"$in": ["全员", "研发部"]}}
选项$empty / $notEmpty为空 / 不为空{"适用部门": {"$empty": true}}
数字 / 日期$eq / $ne等于 / 不等于{"保密等级": {"$eq": 1}}
数字 / 日期$gt / $lt大于(晚于)/ 小于(早于){"生效日期": {"$gt": "2026-01-01 00:00"}}
数字$gte / $lte大于等于 / 小于等于{"保密等级": {"$lte": 2}}
数字 / 日期$empty / $notEmpty为空 / 不为空{"保密等级": {"$notEmpty": true}}

常见问题

1. 为什么在「标签过滤」的下拉框里找不到某个标签?

当应用或工作流节点同时关联了多个知识库时,「自定义标签」下拉列表仅会展示在所有已选知识库中标签名称和标签属性均完全一致的共有标签(对于「选项」属性标签,可选值为各知识库选项的并集)。请检查是否所有关联的知识库都创建了同名同属性的标签。

2. 从旧版本升级后,原有的字符串标签去哪了?

系统在升级时会自动将旧版本的纯字符串标签无损迁移为一个名为 default_tag 的 「选项」 属性标签,所有文件原有的打标关系均完整保留。你可以在「标签管理」中将 default_tag 重命名为你需要的业务名称(如 文档分类)。

3. 修改标签名称或选项名称后,会影响已配置的「标签过滤」吗?

「标签过滤」条件是通过标签名称与选项值文本进行匹配的。如果你在知识库「标签管理」中重命名了某个标签或修改了选项名称,请同步检查并更新相关应用或工作流「标签过滤」中已配置的条件。

在 GitHub 上编辑

文件更新时间