增量编译
KaaS 采用增量编译避免重复工作 — 只有新增或变更的内容才会触发重新处理。随着知识库增长,编译速度和成本效率依然保持稳定。
工作原理
当你向 KaaS 提交内容时,系统会判断该内容是否已经处理过:
- 内容指纹 — 每次提交都会生成哈希值。如果与之前已编译项的哈希匹配,则跳过重新编译。
- 选择性流水线执行 — 只有新增或修改的内容进入四阶段流水线(Extract → Classify → Write → Index)。
- 文章合并 — 当新内容与已有 Wiki 文章相关时,Write 阶段会将新信息合并到现有文章中,而非创建副本。
- 增量索引更新 — 主索引仅更新新增或变更的文章,无需重建整个索引。
已有内容的保留
当新内容到达时:
- 已有的 Wiki 文章保持不变,除非新内容与其直接相关。
- 之前构建的索引增量更新,不会从头重建。
- 文章间的交叉链接保持有效 — 新文章被编织进现有的链接结构中。
触发重新编译的条件
以下情况会触发重新编译:
- 提交了新的内容(文本、文件或 URL),且该内容之前未被处理过。
- 重新提交了之前已提交的内容,但有修改(哈希值不同)。
以下情况不会触发重新编译:
- 重复提交完全相同的内容。
- 浏览或查询已有知识库。
强制全量重新编译
在某些情况下,你可能希望从头重建整个知识库 — 例如升级 KaaS 到改进了编译逻辑的新版本后。
要强制全量重新编译,删除编译状态后重新提交:
Docker:
bash
# 停止服务
docker stop kaas
# 删除编译状态(Wiki 文章保留在 data/kb/ 中)
rm -f data/compile.db
# 重启 — 下次提交时所有内容将被重新处理
docker start kaasCLI:
bash
# 停止服务,然后:
rm -f data/compile.db
kaas serveTIP
强制重新编译后,已有的 Wiki 文章将被新编译的版本覆盖。如果你对文章做过手动编辑且希望保留,请先备份 data/kb/ 目录。
收益对比
| 方面 | 无增量编译 | 有增量编译 |
|---|---|---|
| 速度 | 每次提交都执行完整流水线 | 只处理新内容 |
| 成本 | 每次都对所有内容调用 LLM | 仅对新增/变更内容调用 LLM |
| 稳定性 | 文章可能在多次运行间波动 | 已有文章保持稳定 |
| 可扩展性 | 随语料库增长线性变慢 | 每次新提交耗时恒定 |