在 KMatrix 的设计中,Dataset (数据集) 是知识库(Knowledge Base)之下的核心逻辑单元。如果说“知识库”是一个图书馆,那么“数据集”就是图书馆里的书架,但它比书架更聪明——它不仅是存储位置,更是数据处理策略的容器

以下是关于 Dataset 概念的深挖:

1. 它是层级关系的中枢

KMatrix 的知识存储架构是:
知识库 (Knowledge Base) -> 数据集 (Dataset) -> 文档 (Document) -> 分块 (Chunk)

  • 知识库:代表业务边界(如“HR 知识库”、“技术文档库”)。
  • 数据集:代表数据来源和处理逻辑的集合。

2. 它是“处理策略”的实际承载者 (The Strategy Container)

这是 Dataset 最重要的职责。同一个知识库中,你可能有不同的数据源,它们的特征完全不同,因此不能用“一刀切”的方式处理。Dataset 决定了数据如何“进入”系统。

  • 决定处理逻辑 (Process Type)
    • 如果你创建一个 GENERIC_FILE 类型的数据集,它会调用 Tika 引擎解析 PDF/Word。
    • 如果你创建一个 QA_PAIR 类型的数据集,它会去解析 Excel 里的“问”与“答”列。
    • 这保证了同一个知识库可以混合存储异构数据(文件、网页、数据库、结构化问答)。
  • 决定分块粒度 (Chunking Config)
    • 你可以在“合同数据集”中设置分块大小为 1000 字(为了保留严密的逻辑)。
    • 在“常见问题数据集”中设置分块为 200 字(为了极高的检索精度)。
    • 这些参数(Size, Overlap, Child-size)都是在 Dataset 级别定义的,而不是在知识库级别。

3. 它的核心属性与设计意图

从代码实现 (KmDataset.java) 来看,它的几个关键设计点:

  • sourceType (来源类型):标记数据是怎么来的。是用户手动上传的(FILE_UPLOAD)?还是系统去自动爬取的(WEB_CRAWL)?或者是直接粘贴的文本(TEXT_INPUT)?
  • config (动态配置):这是一个 JSON 字段(Map类型)。它赋予了 Dataset 极强的扩展性。比如对于“网页爬取”数据集,这里可以存储爬取的起始 URL、深度限制、Cookie 等信息;对于“外部同步”数据集,这里可以存储第三方系统的 API Token。
  • isSystem (系统预设):某些数据集是系统初始化时自带的(比如为了存放系统引导说明),标记为 true 后不可被用户误删。

4. 为什么要引入 Dataset 这一层?

如果没有 Dataset,直接让知识库管理文档,会带来两个灾难:

  1. 管理混乱:数千个文档堆在一个库里,无法分类管理。
  2. 灵活性丧失:你无法为一个库里的不同文档设置不同的分块大小或解析方式。

总结:
在 KMatrix 中,Dataset 是数据进入 AI 大脑的“加工车间”。它根据数据的来源属性(Source Type)和内容特征(Process Type),定义了一套标准化的流水线参数。通过划分不同的 Dataset,KMatrix 实现了对海量知识的精细化、差异化管理

作者:admin  创建时间:2026-04-28 16:29
最后编辑:admin  更新时间:2026-05-01 09:38