Skip to content

工作原理

KaaS 采用先编译、后检索的架构。不同于将原始文本切块放入向量数据库的传统 RAG 方案,KaaS 通过 LLM 流水线将内容编译为结构化、人类可读的 Markdown 文章,查询时再从这些文章中检索。

两个阶段

阶段一:编译

当你提交内容(粘贴文本、上传文件或提供 URL)时,内容进入 4 阶段流水线

原始内容 → Extract(提取) → Classify(分类) → Write(写入) → Index(索引) → 结构化 Wiki

每个阶段都是一次 LLM 调用,对材料进行进一步转化:

阶段功能
Extract从原始文本中提取概念、实体、决策和行动项
Classify将提取结果映射到现有 wiki 文章或标记为新建
Write创建新文章或合并到现有文章(输出 Markdown)
Index更新 master-index 和 topic-index 以供检索导航

最终产出是一组互相链接的 Markdown 文件——人类可读、git 可管理、LLM 可检索。

阶段二:检索

当你提出问题时,KaaS 使用 LLM 迭代检索(无需嵌入模型、无需向量数据库):

  1. master-index.md 作为导航目录喂给 LLM
  2. LLM 选择最相关的 wiki 页面
  3. 读取这些页面的完整内容作为上下文
  4. 通过 SSE 流式生成带引用的回答

这种方式消除了分块检索的噪声——LLM 读取的是完整的、结构良好的文章,而非任意的文本片段。

为什么先编译?

先编译后检索切块+嵌入(传统 RAG)
结构化、去重的文章有冗余的原始切块
人类可读、可编辑的输出不透明的向量存储
LLM 导航精心编排的索引对噪声嵌入做相似度搜索
上下文是完整文章上下文是 512 token 的片段
零嵌入依赖需要嵌入模型 + 向量数据库

Worker 并发加速

编译阶段由 Go Worker Pool 并行化执行,管理并发、容错和增量处理:

Worker Pool 架构图

核心机制:

  • Dispatcher(调度器)——基于信号量的并发控制;每用户 goroutine 上限
  • Extract Worker Pool(提取工作池)——多 worker 并行执行 Extract 阶段(通过 extract_workers 配置)
  • Pipeline Worker(流水线工作器)——按用户批量处理 Classify/Write/Index
  • Circuit Breaker(断路器)——LLM 连续失败 N 次后自动熔断;冷却期后通过半开探针自动恢复
  • Lease + Heartbeat(租约 + 心跳)——防止重复处理;崩溃后自动恢复孤立任务

详见 编译流水线 了解各阶段的详细说明。