Skip to content

增量编译

KaaS 采用增量编译避免重复工作 — 只有新增或变更的内容才会触发重新处理。随着知识库增长,编译速度和成本效率依然保持稳定。

工作原理

当你向 KaaS 提交内容时,系统会判断该内容是否已经处理过:

  1. 内容指纹 — 每次提交都会生成哈希值。如果与之前已编译项的哈希匹配,则跳过重新编译。
  2. 选择性流水线执行 — 只有新增或修改的内容进入四阶段流水线(Extract → Classify → Write → Index)。
  3. 文章合并 — 当新内容与已有 Wiki 文章相关时,Write 阶段会将新信息合并到现有文章中,而非创建副本。
  4. 增量索引更新 — 主索引仅更新新增或变更的文章,无需重建整个索引。

已有内容的保留

当新内容到达时:

  • 已有的 Wiki 文章保持不变,除非新内容与其直接相关。
  • 之前构建的索引增量更新,不会从头重建。
  • 文章间的交叉链接保持有效 — 新文章被编织进现有的链接结构中。

触发重新编译的条件

以下情况会触发重新编译:

  • 提交了新的内容(文本、文件或 URL),且该内容之前未被处理过。
  • 重新提交了之前已提交的内容,但有修改(哈希值不同)。

以下情况不会触发重新编译:

  • 重复提交完全相同的内容。
  • 浏览或查询已有知识库。

强制全量重新编译

在某些情况下,你可能希望从头重建整个知识库 — 例如升级 KaaS 到改进了编译逻辑的新版本后。

要强制全量重新编译,删除编译状态后重新提交:

Docker:

bash
# 停止服务
docker stop kaas

# 删除编译状态(Wiki 文章保留在 data/kb/ 中)
rm -f data/compile.db

# 重启 — 下次提交时所有内容将被重新处理
docker start kaas

CLI:

bash
# 停止服务,然后:
rm -f data/compile.db
kaas serve

TIP

强制重新编译后,已有的 Wiki 文章将被新编译的版本覆盖。如果你对文章做过手动编辑且希望保留,请先备份 data/kb/ 目录。

收益对比

方面无增量编译有增量编译
速度每次提交都执行完整流水线只处理新内容
成本每次都对所有内容调用 LLM仅对新增/变更内容调用 LLM
稳定性文章可能在多次运行间波动已有文章保持稳定
可扩展性随语料库增长线性变慢每次新提交耗时恒定