聊天和回忆录证据检索都走 pgvector,去掉 Postgres FTS/content_tsv,新迁移删掉 content_tsv 列(部署要先 alembic upgrade)。

Embedding 端口增加 is_available(),聊天和回忆录日志用统一方式表示向量是否真能调用。

记忆整理(compaction)支持 Beat 定期扫用户;

事实抽取提示与 subject 归一化,减少同一人多种称呼;
This commit is contained in:
Kevin
2026-04-03 11:43:16 +08:00
parent b853b986dd
commit 41518bda11
26 changed files with 543 additions and 222 deletions

View File

@@ -68,9 +68,22 @@ async def _fetch_interview_memory_evidence(
):
return ""
try:
ms = MemoryService(db, embedding_provider=get_embedding_provider())
emb = get_embedding_provider()
ms = MemoryService(db, embedding_provider=emb)
bundle = await ms.retrieve(user_id, msg, top_k=settings.chat_memory_top_k)
text = format_evidence_chunks_for_prompt(bundle.model_dump())
bd = bundle.model_dump()
vector_ok = emb.is_available()
logger.info(
"memory_evidence_retrieved user_id={} chunks={} facts={} summaries={} timeline={} stories={} vector_ok={}",
user_id,
len(bd.get("relevant_chunks") or []),
len(bd.get("relevant_facts") or []),
len(bd.get("relevant_summaries") or []),
len(bd.get("timeline_hints") or []),
len(bd.get("relevant_stories") or []),
vector_ok,
)
text = format_evidence_chunks_for_prompt(bd)
t = (text or "").strip()
if not t:
return ""