From 4f52b30f95736f73089344a4547c374c9d7c7600 Mon Sep 17 00:00:00 2001 From: Blizzard Date: Tue, 30 Jun 2026 13:38:03 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20DEPTH=5FROADMAP=20=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?T2.4=20=E5=A4=A7=E6=96=87=E4=BB=B6RAG=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E5=8C=96(=E4=B8=89=E6=AE=B5/P0-P2=20=E5=85=A8=E5=8B=BE?= =?UTF-8?q?=EF=BC=8C=E5=9D=87=20live=20=E9=AA=8C=E8=AF=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- DEPTH_ROADMAP.md | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/DEPTH_ROADMAP.md b/DEPTH_ROADMAP.md index 7d8bf08..e5a5f54 100644 --- a/DEPTH_ROADMAP.md +++ b/DEPTH_ROADMAP.md @@ -88,6 +88,30 @@ - [ ] prompt 版本化(可回溯/对比/灰度)—— 未做,是 T2.3 的另一半,独立较大块。 - 验收:缓存 ✅ 单测;prompt 版本切换待做。 +### [~] T2.4 大文件 RAG 生产化(切片/向量/队列✅;检索持久 + 治理待补) +准生产目标:几十万字文件从上传到可检索,全链路抗并发、抗崩溃、抗大体量。三段已做实并全 live 验证。 +- [x] **存储**:正文一律落 MinIO(去 <8000字内联PG 阈值,仅 MinIO 挂时回退兜底);`sundynix_doc` 删死字段 `MD5` +- [x] **切片**:不改(`chunk.go` 语义切块 500字/重叠80/句界,对大文件本就 OK) +- [x] **向量化**:串行→`embedAll` 并发分批(并发4,保序);几十万字上千块快数倍 +- [x] **图谱**:整篇喂LLM(爆上下文只抽开头)→`extractGraphWindowed` 窗口化(4000字/窗,封顶60,并发3),实体按 kb+name 去重。live:16k→6窗,末段实体进图谱=全覆盖 +- [x] **入库工作队列**:裸 `go runIngest` → JetStream 持久队列(claim-check 暂存 + durable consumer + MaxAckPending 背压 + AckWait 30min + MaxDeliver 4 + 优雅 drain) +- [x] **live 验证**:202/80ms 异步入队;kill -9 中途崩→作业不丢→重启重投续跑完成;4次重投实体数 81 不翻倍(幂等:先删后写+MERGE) +- 验收 ✅:切片/向量/队列三段准生产级;下列待补项按 ROI 排序见下。 + +#### 待补 backlog(按 ROI 排序) +- [x] **🔴 P0 Bleve 落盘**(瓶颈②)✅ —— 全文索引 `NewMemOnly` → 落盘 scorch(env `BLEVE_PATH`,默认 `.data/bleve`, + 落盘失败退内存兜底;`Engine.Close` 刷盘释放锁)。修复"重启即丢、三路退两路"。 + 单测 `TestBleve_PersistsAcrossReopen`(写→关→重开仍可检索);**live:入库后全文=1 → 重启 mcp-go 不重入库 → 全文仍=1**。 +- [x] **P1 图谱抽取单配便宜模型**(瓶颈⑤)✅ —— 加 `graphChat`(env `GRAPH_CHAT_BASE/KEY/MODEL`), + `graphChatClient()` 优先专用模型、未配回退控制面主 chat。每篇≤60次图谱抽取走便宜模型,主对话仍用好模型。 + 单测 `TestGraphChatClient_FallsBackToMain`(回退/启用)。 +- [x] **P1 图谱封顶/窗口可配**(瓶颈①)✅ —— `graphMaxWindows/WindowRunes/Concurrency` 改 env 可配 + (`GRAPH_MAX_WINDOWS` 等)。单测 + **live:16k(默认6窗) 设 GRAPH_MAX_WINDOWS=2 → 实抽 2 窗 + 截断告警**。 +- [x] **P2 join key → file_id**(瓶颈④)✅ —— 下游键从 doc名 改**稳定 file_id**(gateway 传 docID; + Milvus/Bleve 按它键;Neo4j 关系打 `file_id` 属性、实体仍 kb+name 共享)。新增 `kb_delete` 工具 + + `DELETE /api/v1/kb/doc` **级联删**(三库 + MinIO + PG/双链,owner 隔离)。 + **live:删一篇 → PG404/向量0/全文0/图谱0/孤儿实体0/MinIO空 五处皆净;重名重入库 id 稳定不孤儿**。 + --- ## 🗄️ Tier 3 — 生产硬化 ⏸(等有真实流量再上) @@ -106,7 +130,7 @@ |---|---| | T0 激活 | 2 / 2 ✅ | | T1 收口 | 1 / 2 | -| T2 深化 | 1 / 3 | +| T2 深化 | 1 / 4 | | T3 硬化 ⏸ | 0 / 5 | -> 推进顺序:T0.1 → T0.2 → T1.1 → T1.2 → T2.* → (T3 按需)。 +> 推进顺序:T0.1 → T0.2 → T1.1 → T1.2 → T2.1 → T2.4(三段✅) → **T2.4 P0 Bleve 落盘** → … → (T3 按需)。