Skip to main content
XpertAI 的智能过滤检索将结构化条件与向量语义检索组合在同一次查询中。你可以把工程、水利、物流、制度等不同领域的文档保存在同一个知识库中,再通过文件名、逻辑文件夹、文件类型和业务元数据缩小候选范围,避免在全库内容中无差别匹配。 该功能同时支持两类互不替代的条件:
  • 固定过滤条件由管理员配置,形成 Agent 不可修改的业务边界。
  • Agent 动态过滤由 Agent 根据用户问题和对话上下文按需生成,用来进一步提高召回精度。
最终检索始终在租户、组织、知识库权限和启用状态约束内执行。Agent 只能缩小固定范围,不能覆盖或绕过固定条件。

适用场景

智能过滤特别适合以下场景:
  • 一个知识库存放多个专业领域或项目的文档;
  • 不同 Agent 共享同一批知识,但只能检索各自负责的范围;
  • 报价、合规、客服等应用需要先满足结构化条件,再进行语义匹配;
  • 用户问题中经常包含年份、地区、文件格式、文档状态或分类;
  • 需要在调试和审计中还原“为什么检索到这些内容”。
例如,同一个“工程造价”知识库可以同时包含水利、物流和建筑工程资料。水利报价 Agent 的固定条件限定 metadata.domain = 水利metadata.documentStatus = effective,用户询问“查找 2025 年 PDF 定额”时,Agent 可再自动增加年份、PDF 和文件名条件。

两层过滤如何协作

如果 Agent 无法从问题中确定可靠条件,它会省略动态过滤,只在固定条件范围内执行检索。固定条件不会作为工具参数暴露给 Agent。

条件合并规则

一次查询的有效范围可理解为:
固定条件与动态条件之间始终使用 AND。每一层内部可以使用 ANDOR 分组,因此可以表达“有效文档,并且属于华东或华南区域”等组合条件。

可过滤字段

系统字段

document.folderPath 是知识库内的逻辑路径,不是服务器文件存储路径。使用“位于目录下(under)”时,系统会匹配当前目录及其子目录,并按完整路径段判断,不会把 水利 错误匹配为 水利工程旧版

文件夹路径的取值与匹配规则

XpertAI 根据知识库目录树生成文件夹路径。界面中的面包屑 水利 > 华东 对应规范值 水利/华东
  • 规范路径使用 / 分隔目录名,不包含开头或结尾的 /
  • 直接位于知识库根目录的文档,其文件夹路径为空字符串;召回测试的目录选择器将其显示为 /(根目录)
  • **等于(eq)**只匹配当前目录的完整路径。水利/华东 不会包含 水利/华东/归档
  • **位于目录下(under)**匹配所选目录及其全部后代目录。系统会先规范化首尾斜杠,再按完整路径段判断。
  • 召回测试面板会列出已有目录并提交规范路径,避免手工抄写面包屑造成顺序或斜杠错误。
不要使用文档的 filePath 值作为过滤条件。filePath 标识内部或外部存储对象,可能包含自动生成的目录、ID 或文件名;它不属于公开过滤字段,也不要求在逻辑目录重命名或移动时变化。 创建、重命名或移动文件夹时,系统会更新该目录及其后代的逻辑路径,并将最新属性同步至 PGVector 或 Milvus,不重新计算 embedding。系统升级时,历史逻辑路径同样根据父子目录关系重建,而不是从存储路径推断。

业务元数据

知识库的 metadata schema 可以声明文档级或分块级字段:
  • metadata.<字段>:应用于整份文档及其所有分块,例如领域、年份、地区、文档状态。
  • chunk.metadata.<字段>:只应用于对应分块,例如章节类型、专业编码、清单类别。
字段支持字符串、枚举、数值、日期时间、布尔值、字符串数组、数值数组和对象类型。管理员还可以为字段设置显示名称、说明和枚举值。Agent 只能使用 schema 中已登记且类型有效的字段。
将长期稳定、会频繁参与检索的业务属性定义为 metadata 字段。例如 domaineffectiveYearregiondocumentStatusspecialtyCode

过滤操作符

系统会根据字段类型提供可用操作符,避免错误比较。 精确匹配用于等于和属于;文本包含、开头为和结尾为不区分大小写。日期时间统一使用 ISO-8601 UTC 格式。

配置固定过滤条件

固定条件配置在数字专家或工作流节点与知识库的绑定上,而不是设置成知识库的全局策略。这样,同一个知识库可以安全地服务多个 Agent,每个绑定拥有不同边界。
  1. 在 Studio 中打开数字专家的知识库节点,或工作流中的知识检索节点。
  2. 添加或选择知识库,并将检索模式设置为 Vector
  3. 在“固定过滤条件”区域添加字段、操作符和值。
  4. 根据需要创建 ANDOR 分组。
  5. 保存并使用测试面板验证结果。
固定值可以是常量,也可以引用 Agent 或工作流变量。例如:
如果固定变量缺失、类型错误或已经失效,检索会在访问向量库前停止并返回配置错误。系统不会忽略固定边界后继续全库检索。

允许 Agent 自动过滤

在同一个知识库绑定中开启“允许 Agent 自动过滤”后,知识检索工具会向 Agent 提供所有可用系统字段和 metadata schema 字段,以及对应类型、枚举值和操作符。 Agent 会结合用户问题和对话上下文决定是否添加动态条件。例如用户询问:
查找 2025 年 PDF 水利工程定额。
Agent 可以生成以下动态条件:
这些条件只会进一步缩小管理员配置的水利领域和有效文档范围。

让 Agent 查询实时过滤选项

文件夹名称、文件类型和业务 metadata 值都属于知识库中的实时数据,因此不应要求 Agent 根据对话猜测。开启 Agent 自动过滤后,XpertAI 会同时为该知识库注册一个只读的“知识过滤选项”工具。 Agent 可以先在不指定字段的情况下调用工具,查看全部可发现字段、字段类型、允许的操作符和选项形式;再选择一个字段查询:
  • 实际存在的文件名、扩展名、MIME 类型、分类、来源类型、枚举值、布尔值和字符串值;
  • 数值和日期时间的不同取值,以及当前最小值和最大值;
  • 字符串数组、数值数组 metadata 中可选择的成员值;
  • 对主要使用 exists 的字段,比较合格文档/分块数与字段实际存在数;
  • 使用不区分大小写的关键词搜索值,或分页读取完整列表;
  • 将返回值原样复制到知识检索工具的动态条件中。
文档级 metadata 会返回对应的文档数和分块数;分块级 metadata 会按匹配分块及其来源文档计数。字段目录仍展示 schema 配置的枚举值,而实时值查询会说明哪些值当前实际存在于有效边界内。 目录路径会得到额外处理:工具列出规范逻辑路径,区分知识库根目录(""),返回当前目录和后代文档数,并补充可用于 under 的祖先路径。 例如,用户提到“华东目录”时,Agent 可以按以下顺序执行:
工具只返回知识库相对逻辑路径,不会返回服务器 filePath。所有实时值和计数都会先经过租户、组织、知识库、启用状态以及管理员固定条件的约束;固定条件本身仍对 Agent 隐藏,固定变量缺失时选项查询也会像正式检索一样失败关闭。空目录和没有合格分块的目录不会返回;祖先目录仍可返回,因为它们可以作为 under 操作符的有效选项。

先探索 GraphRAG,再检索知识分块

绑定的知识库启用 GraphRAG 后,XpertAI 还会为 Agent 提供只读的“知识图谱探索”工具。当用户只知道某个概念或关系,却不知道文档中的准确术语时,Agent 不必要求一次图查询直接给出最终答案,而可以通过多次小调用逐步探索:
  1. 使用 search 输入问题或简短概念,语义查找候选种子实体。
  2. 使用 neighbors 和上一步返回的实体 ID,沿相关关系展开一到两跳。
  3. 使用 evidence 查看某个候选实体在当前范围内的支持证据。
  4. 关系仍不清楚时继续探索;信息充分后,将 suggestedRetrievalQuery 交给知识召回工具,检索最终原始分块和引用。
例如:
图谱工具有意采用简单参数:actionqueryentityIddepthtake。实体 ID 由前一次调用返回,Agent 不需要构造复杂嵌套图表达式,也不需要猜测内部标识。 知识图谱探索和过滤选项查询可以配合使用:过滤选项工具发现实时目录、文件类型、年份和 metadata 等结构化值;图谱探索工具发现从文档内容抽取的实时实体、名称和关系。Agent 可以综合两类信息,再调用知识召回工具。 每次图谱结果都会经过租户、组织、知识库、启用状态和固定条件边界校验。实体只有在当前有效范围内存在合格分块证据时才会返回;关系也必须在范围内存在支持证据。固定条件生效时,系统不会返回可能由边界外文档聚合得到的全局实体描述、摘要、别名和统计数量。固定变量缺失时,会在图谱探索前失败关闭。 图谱证据只用于探索线索,不作为最终回答来源。Agent 会在探索完成后调用知识召回工具,让普通回答继续使用完整分块和可追溯引用。该辅助工具不等于开启带过滤的 GraphHybrid 检索模式;当前版本的最终过滤检索仍使用 Vector 有关图谱抽取、索引、可视化治理、检索模式和运维建议,请参阅知识图谱与 GraphRAG

异常与零命中处理

  • 动态条件中出现未知字段、类型错误或非法操作符时,整组动态条件会被舍弃,系统改用固定条件检索,并记录 invalid_dynamic_filter
  • 合法动态条件返回零条结果时,服务端不会自动放宽范围。
  • 工具会告诉 Agent 本次结果为零,并标记可以在不带动态条件的情况下重试;是否重试由 Agent 根据任务判断。
  • 禁用文档和禁用分块在所有调用路径中都不会被召回。

测试与诊断

知识库测试面板和 Agent 调试界面会显示:
  • 固定条件、调用方测试条件和 Agent 动态条件;
  • 最终生效条件及每个条件的来源;
  • 候选文档数、候选分块数和最终命中数;
  • 向量后端、过滤耗时和向量检索耗时;
  • 动态条件是否因校验失败而降级,以及对应原因。
普通用户看到的 Agent 最终回答默认只包含答案和引用,不展示内部过滤决策。 检索日志会保存规范化条件、条件摘要、命中统计、后端和耗时等审计信息,但不会记录文档正文。日志访问权限沿用知识库权限。

支持范围

最佳实践

  • 用固定条件表达安全边界、适用领域、文档生效状态和项目范围。
  • 只在用户问题中经常出现且数据质量可靠的字段上启用 Agent 自动过滤。
  • 枚举类属性优先使用 enum,而不是自由文本,减少拼写差异。
  • 年份使用数值,生效时间使用日期时间,布尔属性保存为布尔值,不要全部保存成字符串。
  • 文件夹用于内容组织,metadata 用于稳定业务语义;二者可以组合使用。
  • 上线前使用代表性问题测试“带动态条件”“不带动态条件”“零命中”和“固定变量缺失”等场景。
接下来可阅读维护文档与元数据召回测试知识库的使用方式