Files
life-echo/api/docs/memory-retrieval.md
Kevin a3f61fcc0f feat(api+app): 对话阶段化、回忆录流水线与客户端会话体验
- DB: segments 用户输入文本(Alembic 0002)
- Chat: 阶段检测/阶段提示/回复限制,编排与访谈/画像 prompts 调整
- Memoir: 忠实度检查 agent,叙事与分类等链路更新
- Core: agent 日志、Alembic 启动、LangChain/日志/配置等
- Story: time_hints;Memory 检索与相关测试
- Expo: 助手头像、会话页与消息拆分、实时会话与文案/i18n
- Docs/scripts/tests: 迁移脚本、LLM JSON/记忆检索文档、新增单测
2026-03-26 12:13:36 +08:00

24 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 记忆检索:异步 API 与 Celery 同步路径
## 两条路径
| 路径 | 入口 | 检索能力 |
|------|------|----------|
| **异步HTTP / MemoirService | `MemoryService.retrieve` → `HybridRetriever` | **FTS + 向量pgvector**RRF 融合factstimeline`relevant_summaries` / `relevant_stories` 当前多为占位空列表 |
| **同步Celery | `retrieve_evidence_sync``app/features/memory/repo.py` | **仅 FTS** chunksconfirmed **facts****timeline**无向量worker 内 ingest 不写 embedding |
## 为何 Celery 与 Hybrid 不完全一致
- `ingest_transcript_sync` 仅写入 chunk + **FTS****跳过 embedding**(见 `MemoryService.ingest_transcript_sync` 注释),与异步 ingest 行为对齐策略不同。
- 在 worker 中补齐同步向量检索需注入 `EmbeddingProvider` 与同会话查询,成本与可用性需单独评估。
业务上应假设:**线上章节生成任务**以 FTS 证据为主;**异步 API** 若配置了 embedding检索语义更富。
## Celery 任务中的顺序
`process_memoir_segments``app/tasks/memoir_tasks.py`)在**同一任务**内先执行 `ingest_transcript_sync`(并 `commit`),再执行 `MemoirOrchestrator``run_story_pipeline_for_category_batch`。因此 `retrieve_evidence_sync` 能看到**本批刚写入**的 memory chunks无竞态
## Evidence 与叙事 Prompt
`format_evidence_chunks_for_prompt` 仅拼接**实际返回**的 chunks、facts、timeline不包含未实现的 summaries/stories避免模型误以为有额外材料。