聊天和回忆录证据检索都走 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

@@ -267,16 +267,16 @@ class Settings(BaseSettings):
memoir_phase2_singleflight_immediate: bool = True
# ── Memory 检索与富化 ─────────────────────────────────────
# Truequery 为空时仍返回 rolling 摘要 + 最近事实/时间线(无 chunk FTS
# Truequery 为空时仍返回 rolling 摘要 + 最近事实/时间线(无 chunk 向量检索
memory_evidence_empty_query_include_rolling: bool = False
# False跳过 ingest 后 LLM 富化(摘要/事实/时间线)
memory_enrichment_enabled: bool = True
memory_enrichment_max_chars: int = Field(default=12000, ge=1000, le=100_000)
# True事实 FTS 未命中时退回「最近 confirmed 事实」(易引入无关/矛盾事实;默认关)
# True事实 ILIKE 未命中时退回「最近 confirmed 事实」(易引入无关/矛盾事实;默认关)
memory_fact_search_use_recent_fallback: bool = False
# ── Memory compaction近重复 chunk 软排除;事件触发 + Redis 防抖 + 用户锁)──
memory_compaction_enabled: bool = False
# ── Memory compaction近重复 chunk 软排除;事件触发 + Redis 防抖 + 用户锁;需 worker + Beat 跑 sweep)──
memory_compaction_enabled: bool = True
memory_compaction_debounce_seconds: int = Field(default=105, ge=10, le=3600)
memory_compaction_lock_ttl_seconds: int = Field(default=600, ge=60, le=7200)
memory_compaction_chunk_similarity_threshold: float = Field(
@@ -288,6 +288,8 @@ class Settings(BaseSettings):
memory_compaction_max_neighbors_per_chunk: int = Field(default=25, ge=5, le=100)
memory_compaction_text_jaccard_min: float = Field(default=0.55, ge=0.0, le=1.0)
memory_compaction_metadata_event_year_window: int = Field(default=1, ge=0, le=50)
# Beat sweep扫描最近 N 小时内有新 chunk 的用户并调度 compaction
memory_compaction_sweep_recent_hours: int = Field(default=24, ge=1, le=168)
# ── Liblib ───────────────────────────────────────────────
liblib_access_key: str = ""