Skip to content

索引与检索

Knowledge 使用两类独立索引:导入后立即可用的 FTS5 关键词索引,以及按资料库和 Embedding 模型隔离的 chunk vector。相邻分块图用于在混合检索中补充上下文。

索引生命周期

text
文件解析
  -> document 写入
  -> chunk 切分
  -> FTS5 更新
  -> 相邻分块边更新
  -> 可选的 Embedding 批处理
  -> 当前模型覆盖率更新

原文档是来源真源,chunk、FTS、vector 和 graph edge 都是可重建资产。

关键词索引

关键词索引不依赖外部模型。文档成功导入后即可使用 keywordauto 在没有可用向量时也会退化到 BM25。

语义索引

点击“语义索引”选择 Embedding 模型。系统按批次请求向量并写入当前资料库的 .kdb

状态区显示:

  • 当前模型
  • 向量维度
  • 分块总数
  • 已向量化分块数
  • 待处理分块数

覆盖率来自数据库实时统计,不依赖前端缓存。

切换模型

不同模型的向量不能混在同一检索空间中。系统使用“渠道配置 + 模型 ID”共同标识模型,避免不同渠道的同名模型混用。切换模型后,新模型成为当前语义检索基准,覆盖率按新模型重新计算。旧模型记录不会参与当前 semantic/hybrid 检索。

检索策略

自动

单库有当前 Embedding 模型时,前端先为查询生成向量并使用 hybrid;没有模型或无法生成向量时退化为 BM25。

关键词

使用 FTS5 BM25,适合专有名词、文件内容和精确短语。

语义

使用 cosine similarity 搜索当前模型的 chunk vector。只有已覆盖分块参与候选。

混合

融合 BM25 与 vector 候选,并可通过相邻 chunk graph 补充上下文。结果 signals 会说明每个候选使用了哪些信号。

分数说明

BM25、cosine similarity 和图扩展分数不是同一种量纲。界面显示原始相关度和命中信号,不把它们转换为看似统一的百分比。

失败恢复

向量化按批次提交。请求失败时,已提交批次保留;重新执行构建会覆盖写入同一模型的 chunk vector,并继续补齐覆盖。

重建分块会使旧 chunk ID 失效,因此重建会清除当前语义索引配置,防止误用旧向量。

Released under the Apache-2.0 License.