- DB: segments 用户输入文本(Alembic 0002) - Chat: 阶段检测/阶段提示/回复限制,编排与访谈/画像 prompts 调整 - Memoir: 忠实度检查 agent,叙事与分类等链路更新 - Core: agent 日志、Alembic 启动、LangChain/日志/配置等 - Story: time_hints;Memory 检索与相关测试 - Expo: 助手头像、会话页与消息拆分、实时会话与文案/i18n - Docs/scripts/tests: 迁移脚本、LLM JSON/记忆检索文档、新增单测
1.5 KiB
1.5 KiB
记忆检索:异步 API 与 Celery 同步路径
两条路径
| 路径 | 入口 | 检索能力 |
|---|---|---|
| **异步(HTTP / MemoirService) | MemoryService.retrieve → HybridRetriever |
FTS + 向量(pgvector),RRF 融合;facts;timeline;relevant_summaries / relevant_stories 当前多为占位空列表 |
| **同步(Celery) | retrieve_evidence_sync(app/features/memory/repo.py) |
仅 FTS chunks;confirmed 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,避免模型误以为有额外材料。