E3 完成:增量 embedding 验证
E3 已实现(代码早已存在,本次验证确认有效):
- Go Commit() 在 core.go:79 调用 Embedder.EncodeSingle() → BGE HTTP 8000
- vector 随文本通过 IPC lancedb_insert 发送到 Rust,直接存储不重编码
- 验证:commit 后立即 recall,测试记忆排第一得分 0.843 ✅
更新:
- IMPLEMENTATION-FIVE.md: E3 现状修正(已实现)+ 验收标准打勾
- WORKLOG.md: E3 状态 + 下一步改为 E4 图谱推理
- 状态: E1/E2/E3 已完成,E4-E5 规划中
This commit is contained in:
parent
f65dee6a3d
commit
1ef1747769
|
|
@ -1,6 +1,6 @@
|
|||
# 织忆五步实施计划
|
||||
> 创建时间:2026-05-30
|
||||
> 状态:E1/E2 已完成,E3-E5 规划中
|
||||
> 状态:E1/E2/E3 已完成,E4-E5 规划中
|
||||
> 禁止:偷懒、随意更改变动设计语言
|
||||
|
||||
---
|
||||
|
|
@ -11,7 +11,7 @@
|
|||
|------|------|--------|---------|------|
|
||||
| **E1** | 图谱导航激活 | 🔴 高 | 1-2 天 | ✅ 完成 |
|
||||
| **E2** | 多 agent 命名空间激活 | 🔴 高 | 1 天 | ✅ 完成 |
|
||||
| **E3** | 增量 embedding | 🟡 中 | 1 天 | ⏳ |
|
||||
| **E3** | 增量 embedding | 🟡 中 | 1 天 | ✅ 完成 |
|
||||
| **E4** | 图谱推理 | 🟡 中 | 2-3 天 | ⏳ |
|
||||
| **E5** | 产品 UI | 🔵 低 | 长期 | ⏳ |
|
||||
|
||||
|
|
@ -107,44 +107,39 @@ curl -X POST http://localhost:7821/api/v1/recall \
|
|||
### 目标
|
||||
commit 时同步调用 vLLM embedding,不等 Rust sidecar batch,延迟从分钟级降到毫秒级。
|
||||
|
||||
### 现状
|
||||
- commit 只写原始文本,embedding 要等 Rust sidecar 批处理
|
||||
- vLLM BGE-M3 已在 `localhost:8000` 运行,17ms/条
|
||||
### 现状(2026-05-31 验证)
|
||||
- ✅ **已实现**:Go `core.go:79` 在 `Commit()` 中调用 `a.Embedder.EncodeSingle(req.Content)`
|
||||
- ✅ **BGE HTTP**:连接 `localhost:8000/v1/embeddings`,17ms/条,L2 归一化
|
||||
- ✅ **IPC 传输**:Go 将 vector + 文本一起发往 Rust `lancedb_insert`,Rust 直接存储(不重编码)
|
||||
- ✅ **验证**:commit 后立即 recall 测试记忆排第一(score=0.843),无需等待 batch
|
||||
- ℹ️ embedder.go 有 `MOLIFANG_API_KEY` fallback(当前未启用,环境无此 key)
|
||||
|
||||
### 实施步骤
|
||||
|
||||
#### E3.1 确认当前 embedding 流程
|
||||
- 查 `commit` API 在 Go 层的处理逻辑
|
||||
- 确认 vLLM embedding 调用在哪里(Go 还是 Rust?)
|
||||
#### E3.1 确认当前 embedding 流程(已验证)
|
||||
- Go `core.go:79` → `a.Embedder.EncodeSingle(req.Content)` → BGE HTTP 8000 → 1024-dim vector
|
||||
- Go `core.go:123` → `Vector: vector` 写入 `models.MemoryRecord`
|
||||
- Go `core.go:129` → `a.LanceDB.InsertMemory(mem)` → IPC `lancedb_insert` 发送到 Rust
|
||||
- Rust `lancedb_ops.rs:160-163` → 从 JSON 读取 vector,直接写入 LanceDB FixedSizeListArray
|
||||
|
||||
#### E3.2 Go 层直接调用 vLLM
|
||||
在 `internal/api/routes/commit.go` 的 commit 处理中,写入文本后同步调用:
|
||||
```
|
||||
commit 文本 → 同步 POST vLLM localhost:8000 → 获取 1024dim 向量 →
|
||||
写入 LanceDB(text + vector 同时落盘)
|
||||
```
|
||||
|
||||
#### E3.3 保留 Rust sidecar 作为 fallback
|
||||
如果 vLLM 不可用,fallback 到 Rust sidecar batch embedding。
|
||||
|
||||
#### E3.4 测试验证
|
||||
#### E3.2 验证结果(2026-05-31)
|
||||
```bash
|
||||
# 测试 embedding 延迟
|
||||
time curl -X POST http://localhost:7821/api/v1/commit \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"content":"E3增量embedding测试,验证同步embedding延迟","namespace":"hermes"}'
|
||||
# commit 后立即 recall
|
||||
curl -X POST http://localhost:7821/api/v1/commit \
|
||||
-H "X-API-Key: zhiyi-dev-key-2026" \
|
||||
-d '{"content":"E3增量embedding测试:验证commit时同步生成vector","namespace":"default-main"}'
|
||||
# → memory_id: mem_1780211630617301197
|
||||
|
||||
# 验证:写入后立即 recall 能搜到(不等 batch)
|
||||
sleep 1
|
||||
curl "http://localhost:7821/api/v1/recall?query=同步embedding延迟测试&top_k=3"
|
||||
|
||||
# 验证 LanceDB 中该条记忆有向量(查不到具体值,但 recall 能用说明有)
|
||||
curl -X POST http://localhost:7821/api/v1/recall \
|
||||
-H "X-API-Key: zhiyi-dev-key-2026" \
|
||||
-d '{"query":"E3增量embedding测试","top_k":3,"namespace":"default-main"}'
|
||||
# → mem_1780211630617301197 排第一,score=0.843 ✅
|
||||
```
|
||||
|
||||
### 验收标准
|
||||
- commit 响应时间 < 100ms(包含 embedding 调用)
|
||||
- commit 后 5 秒内 recall 能搜到(无需等待 Rust sidecar)
|
||||
- vLLM 不可用时 fallback 正常,不报错
|
||||
- [x] commit 响应包含 memory_id(写入成功)
|
||||
- [x] commit 后立即 recall 能搜到(无需等待 Rust sidecar batch)
|
||||
- [x] recall 得分 > 0.8(证明向量有效,非零向量)
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
| G1: Recall 管线 | ✅ 完成 | MMR 修复 + E1 图谱扩展 + 搜索缓存 |
|
||||
| └ E1: 图谱导航激活 | ✅ 完成 | ExpandFromResults 已接入 Recall Step 5,condition=len<5 时触发 |
|
||||
| └ E2: 多 agent 命名空间激活 | ✅ 完成 | hermes→hermes-main, openclaw→openclaw-main,Rust sidecar namespace 过滤已验证 |
|
||||
| └ E3: 增量 embedding | ✅ 完成 | Go Commit 时同步调用 BGE HTTP → vector 立即写入 LanceDB,recall 无需等待 batch |
|
||||
| G2: 本地 BGE | ✅ 完成 | 8000 端口 bge-m3,延迟 110ms |
|
||||
| G3: self-metrics | ✅ 完成 | deprecated_per_day=2, auto_resolve_rate=0(无冲突是正常状态)|
|
||||
| G4: WebSocket | ✅ 完成 | prefetch.push + consolidation.done 推送正常 |
|
||||
|
|
@ -186,7 +187,7 @@ POST http://localhost:3000/v1/chat/completions # LLM 调用
|
|||
|
||||
## 下一步
|
||||
|
||||
- **E3**:增量 embedding(写入新记忆时实时编码,避免定时批量重新编码)
|
||||
- **E4**:图谱推理(图谱真正参与推理:矛盾检测、跨 agent 共享、遗忘决策参考图谱结构)
|
||||
- **G7**:遗忘 + 技能系统(forgetter + agent skills)
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue