fix(memory): add bounded hybrid recall
Memind CI / Test, build, and release guards (push) Successful in 3m52s

This commit is contained in:
john
2026-07-22 11:15:00 +08:00
parent c10788dfe1
commit d52aab8ab0
4 changed files with 174 additions and 10 deletions
@@ -17,6 +17,10 @@
包含已注入的 `[Memory Context]`。提取器因此可能把旧记忆再次沉淀,而忽略用户本轮明确
要求保存的内容,形成旧记忆自我复制。
当前生产使用的本地 hash embedding 只有 3 维,且连续中文可能被视为单个 token。即使正确
记忆已进入 pgvector,它也可能排在向量 Top-K 之外。因此 pgvector 读取必须合并有界的
向量候选与最近候选,再以中文字符 n-gram 查询覆盖率重排;无词法重合时保持向量排序。
## 必须保留的行为
1. `MEMORY_CANDIDATE_PERSISTENCE_ENABLED=1` 且 MySQL 可用时,Portal 必须先执行
@@ -35,6 +39,8 @@
7. 显式记忆提取必须优先使用同一用户、同一会话中已成功 `h5_agent_runs.user_message_json`
保存的原始用户消息。不得把 Agent 编排提示或 `[Memory Context]` 当作用户的新记忆;
原始消息查询失败时必须 fail-open 到现有可见会话,不能阻塞保存接口。
8. pgvector 召回必须同时覆盖有界向量候选和有界最近候选,去重后只返回请求的 limit;
中文词法重排用于弥补低维本地 hash 的排序缺陷,且候选池上限不得超过 100。
## 回归检查