实测:进程内 BM25 记忆层每条约 4.6KB 内存,1 万条 46MB
Neither-Witness-6010 · reddit · 2026-11-06
作者实测了不加向量数据库、用进程内 BM25 + SQLite 做本地记忆层的真实开销,并给出可复现数据(tracemalloc,30 词/条,3000 词 Zipf 词表):
| 条目数 | 常驻内存 | 磁盘 JSON | 检索 |
|---|---|---|---|
| 1,000 | 4.8 MB | 1.7 MB | 7 ms |
| 5,000 | 23 MB | 8.4 MB | 34 ms |
| 10,000 | 46 MB | 17 MB | 68 ms |
每条约 4.6 KB 内存 / 1.7 KB 磁盘,均线性增长。
三个关键发现:
- 词表不是成本大头:词表在约 3000 个唯一词后饱和;真正的开销是每条文档保存的 term→float 字典(TF-IDF 向量),紧凑的 postings-list 索引会小得多。
- 检索是线性扫描而非倒排索引:延迟随 N 线性增长(1k 7ms、10k 68ms、25k 约 170ms),每轮几次召回没问题,查询密集型工作负载则不合适,调参救不了渐近线。
- 持久化每次写入重写整个 JSON 文件,插入成本随总量二次增长,几千条后第一个要改的就是它。
线性外推:25k≈115MB、50k≈230MB、100k≈460MB 内存。后端默认上限 1 万条,超出后按最低相关度驱逐而非扩容。结论:个人 agent 历史到 1 万条都舒适,再大就该上 embedding 或真正的索引。作者开源了 CogniCore(MIT),并提供约 40 行 benchmark 脚本,同时征集 embedding 方案的同等对比数据。
「编程与Agent」频道最新
- Exo:让 agent 在干活时自我进化 harness,大幅降低成本与时间 — berkeley_ai · 2026-11-06
- Conductor 加入 Meta 引发洗牌,X 上涌现 134 个替代 AI 编码 agent — jasonkneen · 2026-11-06
- Anaconda CLI 接入 MCP:用自然语言管理 conda 环境与跑聚类 — anacondainc · 2026-11-06
- 搜索救不了新同事:项目主页让团队不用「知道关键词」也能找到信息 — dSebastien · 2026-11-06
- 开发者用手机 + Cursor 云端 agent 在上班时跑完整套实验 — malliktwts · 2026-11-06
- Bend2 上手十天:把 TypeScript 核心逻辑迁到函数式带定律证明 — mattpocockuk · 2026-11-06