聊天和回忆录证据检索都走 pgvector,去掉 Postgres FTS/content_tsv,新迁移删掉 content_tsv 列(部署要先 alembic upgrade)。
Embedding 端口增加 is_available(),聊天和回忆录日志用统一方式表示向量是否真能调用。 记忆整理(compaction)支持 Beat 定期扫用户; 事实抽取提示与 subject 归一化,减少同一人多种称呼;
This commit is contained in:
@@ -15,14 +15,33 @@ from app.core.memory_compaction_schedule import (
|
||||
finalize_memory_compaction_run,
|
||||
read_debounce_deadline_ts,
|
||||
release_scheduler_gate,
|
||||
schedule_memory_compaction_run,
|
||||
set_incremental_cursor_pair,
|
||||
)
|
||||
from app.core.redis_lock import acquire_redis_lock, release_redis_lock
|
||||
from app.features.memory.compaction_service import run_memory_compaction_sync
|
||||
from app.features.memory.repo import list_users_with_recent_chunks_sync
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
@shared_task
|
||||
def memory_compaction_sweep() -> dict[str, Any]:
|
||||
"""Beat:为近期有记忆写入的用户调度 compaction(debounce 仍由 schedule 合并)。"""
|
||||
if not settings.memory_compaction_enabled:
|
||||
return {"skipped": True, "reason": "disabled"}
|
||||
hours = int(settings.memory_compaction_sweep_recent_hours)
|
||||
with get_sync_db() as session:
|
||||
user_ids = list_users_with_recent_chunks_sync(session, hours=hours)
|
||||
ctx_base: dict[str, Any] = {"trigger_source": "beat", "sweep_hours": hours}
|
||||
for uid in user_ids:
|
||||
schedule_memory_compaction_run(uid, dict(ctx_base))
|
||||
logger.info(
|
||||
"memory_compaction_sweep hours={} scheduled_users={}", hours, len(user_ids)
|
||||
)
|
||||
return {"scheduled": len(user_ids), "user_ids": user_ids}
|
||||
|
||||
|
||||
@shared_task(bind=True, max_retries=12, default_retry_delay=20)
|
||||
def memory_compaction_run(
|
||||
self, user_id: str, context: dict[str, Any] | None = None
|
||||
|
||||
Reference in New Issue
Block a user