跳转至

Schema 元数据智能化

简介

元数据模块主要用于使 LLM 能够根据用户问题快速匹配可能相关的表定义信息和样本数据。

当你使用 bootstrap-kb 命令时,我们会将你指定的数据源中创建表/视图/物化视图的 SQL 语句和样本数据初始化到本地知识库存储中。

此模块包含两种类型的信息:表定义样本数据

表定义的数据结构

字段名称 说明 支持的数据库类型
catalog_name 支持 catalog 的数据库系统中的顶层容器。它通常表示数据库的集合,并提供关于它们的元数据,例如可用的 schema、表和安全设置。Snowflake 需要留空 StarRocks
database_name 存储相关数据的逻辑容器。它通常将多个 schema 组合在一起,并为数据组织、安全和管理提供边界 DuckDB/MySQL/StarRocks/Snowflake
schema_name 数据库内的命名空间。它将表、视图、函数和过程等对象组织到逻辑组中。Schema 有助于避免名称冲突并支持基于角色的访问 DuckDB/PostgreSQL/Snowflake
table_type 数据库中的表类型,包括 tableviewmv(物化视图的缩写)。每个数据库都支持表和视图。DuckDB 和 Snowflake 支持物化视图 所有支持的数据库
table_name 表/视图/物化视图的名称 所有支持的数据库
definition 创建表/视图/物化视图的 SQL 语句 所有支持的数据库
identifier 当前表的唯一标识符,由数据源支持的命名空间字段和 table_name 组成;Snowflake 使用 database_nameschema_nametable_name,不包含 catalog_name。大多数场景下你不需要关心它 所有支持的数据库

样本数据的数据结构

字段名称 说明
catalog_name 同上
database_name 同上
schema_name 同上
table_type 同上
table_name 同上
sample_rows 当前表/视图/物化视图的样本数据。通常是当前表中的前 5 条记录
identifier 同上

如何构建

你可以使用 datus-agent bootstrap-kb 命令构建:

datus-agent bootstrap-kb --datasource <your_datasource> --kb_update_strategy [check/overwrite/incremental]

命令行参数说明

  • --datasource:你的数据库配置对应的键
  • --kb_update_strategy:执行策略,有三个选项:
    • check:检查当前构建的数据条目数
    • overwrite:完全覆盖现有数据
    • incremental:增量更新:如果现有数据已更改,则更新它并追加不存在的数据
  • --kb_search_mode:可选的元数据搜索模式。默认值是 vector;设置为 fts 时会从头构建全文检索 metadata。

元数据搜索模式

metadata 搜索默认继续使用现有 vector store,因此老用户升级后不需要重建数据,检索行为保持不变。

如果要使用不生成 embedding 的全文检索,显式设置 kb.search.modefts

kb:
  search:
    mode: fts

必须在构建 metadata 前选定模式。已有 vector 数据切换到 FTS 时需要完整重建:

datus-agent bootstrap-kb --datasource <your_datasource> --components metadata \
  --kb_search_mode fts --kb_update_strategy overwrite

关于存储后端要求、持久配置与单次覆盖的区别、索引验证、增量更新、模式切换和故障排查,请参阅元数据全文检索

使用示例

检查当前状态

datus-agent bootstrap-kb --datasource <your_datasource> --kb_update_strategy check

完全重建

datus-agent bootstrap-kb --datasource <your_datasource> --kb_update_strategy overwrite

增量更新

datus-agent bootstrap-kb --datasource <your_datasource> --kb_update_strategy incremental

最佳实践

数据库配置

  • 确保你的数据库命名空间在 agent.yml 中正确配置
  • 运行 bootstrap 命令前验证数据库连接性
  • 使用具有系统表读取权限的适当凭据

更新策略选择

  • 使用 check 在不做更改的情况下验证当前状态
  • 使用 overwrite 进行初始设置或当 schema 发生重大变化时
  • 使用 incremental 进行常规更新以捕获新表和更改

性能考虑

  • 大型数据库在初始 bootstrap 期间可能需要时间处理
  • 考虑在生产数据库的非高峰时段运行
  • 监控磁盘空间,因为元数据存储在 LanceDB 本地

故障排除

常见问题

  • 权限错误:确保数据库用户有权访问系统/信息 schema 表
  • 连接超时:检查网络连接性和数据库可用性
  • 大结果集:如果数据库非常大,考虑过滤到特定 schema

验证

Bootstrap 完成后,验证元数据是否正确捕获:

  • 检查 LanceDB 存储目录中的填充文件
  • 通过 CLI 测试搜索功能
  • 验证样本数据代表实际表内容