ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

把384维向量压进48字节:Mnemosyne背后的MIB二进制向量压缩技术

把384维向量压进48字节:Mnemosyne背后的MIB二进制向量压缩技术 把384维向量压进48字节Mnemosyne背后的MIB二进制向量压缩技术【免费下载链接】mnemosyneZero-cloud AI memory that works everywhere. SQLite-backed. One pure-Python dependency.项目地址: https://gitcode.com/gh_mirrors/mnemosyne5/mnemosyneMnemosyne 是一款零云依赖、基于 SQLite 的 AI 记忆系统它为 AI Agent 提供长期记忆能力。其中最省空间的设计是MIBMaximally Informative Binarization最大信息二值化二进制向量压缩把 384 维 float32 向量嵌入约 1536 字节压缩成48 字节的二值向量压缩比高达32 倍而且检索结果完全确定——同一查询永远得到同一结果。 为什么 AI 记忆需要向量压缩AI Agent 要记住对话内容通常先把文本变成向量嵌入embedding再用余弦相似度在向量库里检索。但这条路有几个绕不开的痛点痛点传统方案的代价存储贵384 维 × 4 字节/维 1536 字节/条百万条记忆 ≈ 1.5 GB索引重需要 HNSW / IVF / PQ 等近似最近邻ANN索引构建慢、调参难结果不稳ANN 是近似检索同一查询可能返回不同结果依赖多往往要引入 Qdrant、ChromaDB 等外部向量数据库Mnemosyne 的思路很直接既然记忆系统要零云、零额外依赖那就让向量检索完全跑在 SQLite 里。而要做到这一点向量必须先减肥——这就是 MIB 二进制向量压缩技术出场的地方。 MIB 核心原理一个符号位一个比特Mnemosyne 的二值化规则简单到令人惊讶源码见 mnemosyne/core/binary_vectors.py向量的每一维大于 0 记为 1否则记为 0。为什么只看正负就够因为对很多嵌入模型来说符号信息才是语义方向的主要载体——这维上是正的还是负的比具体是 0.37 还是 0.41携带的信号更强。这就是Maximally Informative最大信息量的含义在只保留 1 比特的约束下符号是信息量最大的切分点。压缩账很好算384 维 → 384 个比特8 个比特打包进 1 字节 →384 ÷ 8 48 字节原来 1536 字节 → 现在 48 字节32 倍压缩 代码中维度不是写死的EMBEDDING_DIM从嵌入模型配置动态获取如 bge-small-en-v1.5 是 384 维multilingual-e5-large 是 1024 维避免大模型向量被静默截断。⚡ 三大核心机制MIB EDM ITSMIB 只是第一步。Mnemosyne 在这套体系里实现了三个配套创新文件头注释见 binary_vectors.py#L1-L201️⃣ MIB32 倍压缩的二值化上文介绍的符号二值化 按字节打包packbits。替换掉 float32 存储直接以 BLOB 存进 SQLite。2️⃣ EDM用异或 数 1算相似度两个二值向量有多相似只需三步hamming_distance 实现两个向量按位异或XOR——不同的位变成 1用一张256 项的查找表数出所有 1 的个数popcount得到的数就是汉明距离0 表示完全相同384 表示完全相反这套操作全是 CPU 原生的位运算不需要任何 ANN 索引也不需要 GPU。3️⃣ ITS把距离翻译成相似度分数信息论分数Information-Theoretic Score公式只有一行ITS 1 − 汉明距离 ÷ 维度距离 0 → 分数 1.0完全匹配距离 192差一半→ 分数 0.5。分数越高越相似排序规则一目了然而且完全确定性——没有随机采样没有近似索引的不确定性。 Mnemosyne 里48 字节的向量如何参与检索MIB 二值向量在 Mnemosyne 的 BEAM 记忆架构中并不是备胎而是一条正经的检索通道写入时每存一条情景记忆系统同步计算其二值向量写入episodic_memory表的binary_vector列见 beam.py 写入路径重建索引时同样回填reindex 逻辑。查询时查询向量同样二值化与候选记忆的 48 字节做 XOR popcount得到一个0~0.08 的加成分binary_bonus与向量相似度、FTS5 全文排名一起参与混合排序。批量加速FastBinarySearch类用 NumPy 广播一次性对所有向量做 XOR再向量化 popcount argsort取 Top-K实现适合高吞吐场景。也就是说Mnemosyne 的检索是多声部合唱polyphonic recall浮点向量、全文搜索、二值向量各司其职而 MIB 向量贡献的是又快又稳的那一声。 用 MIB 二进制向量实际能换来什么维度传统 float32 ANN 索引Mnemosyne MIB 二进制向量单条存储1536 字节48 字节32× 更小百万条占用~1.5 GB~46 MB索引HNSW/IVF 需构建维护无需任何索引外部依赖向量数据库只有 SQLite numpy检索结果近似、可能波动完全确定同查询同结果计算方式浮点乘加位异或 计数CPU 极友好对自托管用户来说这意味着一个 SQLite 文件就是整个记忆库备份、迁移、同步配合 Mnemosyne Sync都极其轻量。 自己跑一遍验证二值向量检索仓库自带一个可独立运行的自检脚本直接执行即可看到查询向量匹配自身的 Top 结果和压缩率统计python -m mnemosyne.core.binary_vectors输出会打印每条向量的字节数、压缩率约 3.125%和理论存储体积。若想深入测试还可以看 tests/test_beam.py 以及基准测试文档 docs/beam-benchmark.md 了解 BEAM 架构下的完整召回评测。 延伸阅读核心实现mnemosyne/core/binary_vectors.py —— MIB 二值化、汉明距离、ITS 打分、SQLite 存储一体BEAM 记忆引擎mnemosyne/core/beam.py —— 二值向量如何嵌入混合检索多声部召回mnemosyne/core/polyphonic_recall.py架构总览README.md 的 Architecture 章节一句话总结Mnemosyne 的 MIB 技术证明了一件事——对本地记忆系统而言够用的确定性比极致的精度更值钱。把 384 维向量压成 48 字节丢掉的是小数点后的细节换来的是 32 倍的空间节省、零索引依赖和 100% 可复现的检索结果。【免费下载链接】mnemosyneZero-cloud AI memory that works everywhere. SQLite-backed. One pure-Python dependency.项目地址: https://gitcode.com/gh_mirrors/mnemosyne5/mnemosyne创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表