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

1.5 KiB
Raw Blame History

记忆检索:异步 API 与 Celery 同步路径

两条路径

路径 入口 检索能力
**异步HTTP / MemoirService MemoryService.retrieveHybridRetriever FTS + 向量pgvectorRRF 融合factstimelinerelevant_summaries / relevant_stories 当前多为占位空列表
**同步Celery retrieve_evidence_syncapp/features/memory/repo.py 仅 FTS chunksconfirmed factstimeline无向量worker 内 ingest 不写 embedding

为何 Celery 与 Hybrid 不完全一致

  • ingest_transcript_sync 仅写入 chunk + FTS跳过 embedding(见 MemoryService.ingest_transcript_sync 注释),与异步 ingest 行为对齐策略不同。
  • 在 worker 中补齐同步向量检索需注入 EmbeddingProvider 与同会话查询,成本与可用性需单独评估。

业务上应假设:线上章节生成任务以 FTS 证据为主;异步 API 若配置了 embedding检索语义更富。

Celery 任务中的顺序

process_memoir_segmentsapp/tasks/memoir_tasks.py)在同一任务内先执行 ingest_transcript_sync(并 commit),再执行 MemoirOrchestratorrun_story_pipeline_for_category_batch。因此 retrieve_evidence_sync 能看到本批刚写入的 memory chunks无竞态

Evidence 与叙事 Prompt

format_evidence_chunks_for_prompt 仅拼接实际返回的 chunks、facts、timeline不包含未实现的 summaries/stories避免模型误以为有额外材料。