索引与检索
Knowledge 使用两类独立索引:导入后立即可用的 FTS5 关键词索引,以及按资料库和 Embedding 模型隔离的 chunk vector。相邻分块图用于在混合检索中补充上下文。
索引生命周期
文件解析
-> document 写入
-> chunk 切分
-> FTS5 更新
-> 相邻分块边更新
-> 可选的 Embedding 批处理
-> 当前模型覆盖率更新原文档是来源真源,chunk、FTS、vector 和 graph edge 都是可重建资产。
关键词索引
关键词索引不依赖外部模型。文档成功导入后即可使用 keyword,auto 在没有可用向量时也会退化到 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 失效,因此重建会清除当前语义索引配置,防止误用旧向量。