Files
life-echo/api/docs/memory-retrieval.md

23 lines
1.4 KiB
Markdown
Raw Permalink Normal View History

# 记忆检索async 单链路
Memory 运行链路只有一个入口:`MemoryService`
| 能力 | 入口 | 行为 |
| --- | --- | --- |
2026-04-30 16:22:55 +08:00
| ingest | `MemoryService.ingest_transcript` / `ingest_transcripts_batch` | 先持久化 `memory_sources``memory_chunks`;随后写 embedding 状态并投递 enrichment |
| embed | `MemoryService.embed_source` | 对已持久化 chunks 生成向量;失败记录状态并由 Celery 重试 |
| retrieve | `MemoryService.retrieve` | 非空 query 做向量 chunk 检索,并合并 query 命中的 facts / session summaries / stories |
| enrichment | `MemoryService.enrich_source` | 单次 LLM 生成 session summary 与 confirmed facts |
| compaction | `MemoryService.compact_user` | 近重复 chunk 软排除并 stale 相关 facts |
## 检索语义
- 空 query 固定返回空 evidence bundle。
2026-04-30 16:22:55 +08:00
- facts / summaries 只按 query 命中返回;不回退最近事实或 rolling summary。
- `MemorySummary.summary_type="session"` 可进入 evidencerolling summary 不参与 prompt evidence。
- Celery task 只是同步入口包装 async service不再维护 sync memory 业务链路。
## 回忆录流水线
`process_memoir_phase1` 通过 `MemoryService.ingest_transcripts_batch` 批量写入记忆;`process_memoir_phase2` 先通过 `MemoryService.retrieve` 取 evidence再把 evidence 传给叙事流水线。叙事代码只消费 evidence不直接调用 memory repo。