# Mem0 V3 迁移：改用 filters 传用户范围，核对 top_k 与阈值默认值变化

已实测mem0ai 2.2.1的Memory.search默认top_k=20/threshold=0.1及顶层user_id拒绝helper；算法V3不等于pip版本3，未运行真实记忆搜索。

## 运行

在本目录使用独立虚拟环境并安装requirements.txt；脚本结果写入results。

```sh
python reference/audit.py
python reference/run_sdk.py
```

fixtures是原创输入与故意失败样本；作者真值、离线合成provider和实际SDK记录各自标明，不是模型正确率。需要真实模型/账号/GPU的步骤按正文另行授权运行。

## 1. 把迁移算法与包版本分开

本题V2/V3指官方迁移指南中的记忆算法/接口阶段，不假定pip包一定叫3.x。先保存实际mem0ai版本与当前search签名。

## 2. 将用户范围放进filters

input.json的新请求把user_id置于filters，另显式写top_k=20、threshold=0.1。legacy反例仍把user_id放顶层，应先定位而不是删掉用户范围。

## 3. 先用原创记忆验证作用域

audit.py在两位虚构用户间筛出M-A，避免升级后把bob记忆混进alice。作者列表筛选不等于真实Mem0搜索。

## 4. 显式复现旧默认值

若要比较旧行为，按当前指南显式设top_k=100与合适阈值；不要把结果数量减少直接归因“新算法变差”。

## 5. 在独立Mem0环境迁移

配置自己的embedding、向量库与LLM，保存迁移前备份；按实际版本执行新接口，不连接已有生产记忆库。

## 6. 比较默认和显式参数

同一query记录返回ID、分数和过滤条件，补一个错误阈值/参数反例。SDK拒绝旧参数时保留真实错误，不能静默改为无过滤。

## 7. 交付接口差异和真实回读

把包版本、算法迁移阶段、用户过滤、默认值与实际结果分列。本文只完成参数和作用域基准，没有真实记忆搜索。

## 官方依据

- Mem0 官方文档或源码：https://docs.mem0.ai/migration/oss-v2-to-v3
