Clark Hash: 无状态稀疏 Johnson-Lindenstrauss 量化用于神经嵌入
Clark Hash 是一种紧凑的无状态编解码器,用于高效存储神经嵌入。该方法通过确定性稀疏 Johnson-Lindenstrauss 投影(也称为 JL 投影)和标量量化,将每个数据库向量归一化、投影、截断,并存储为固定宽度的量化码。查询向量保持浮点精度,与存储的草图计算余弦相似度。 在默认的 384 维句子嵌入场景中,Clark Hash 将每个向量从密集 f32 的 1536 字节压缩至 48 字节(32 倍压缩),且无需训练、码本或语料统计。实验在 29 个子集共 9,304 个标注对上进行多语言句子相似性评估。使用多语言 MiniLM 编码器时,48 字节草图在 STS17 和 STS22 上分别达到 0.910 和 0.946 的宏 Pearson 相关系数,与密集余弦分数高度一致。 Clark Hash 并非新的 JL 定理或近似最近邻索引的替代,而是一种简洁的无状态编解码器,适用于紧凑的嵌入存储。
论文精读
TL;DR Clark Hash 通过确定性稀疏 Johnson-Lindenstrauss 投影与标量量化,将 384 维嵌入压缩至 48 字节(压缩 32×),无需训练或码本,支持在线流式编码,且余弦相似度保持高保真。
问题
嵌入压缩 是神经搜索、推荐与检索系统的基础需求。随着模型维度增大(如 384 维浮点向量),单条嵌入的原始存储可达 1536 字节,在内存、缓存及网络传输中产生显著成本。业界关注在维持语义相似度精度的前提下,大幅降低每条向量的存储体积,同时支持在线流式写入,即向量逐个到达,无法预先收集语料进行训练。
现有压缩方案多依赖训练依赖的量化(如产品量化 PQ、码本学习)或数据分布统计(如校准旋转、优化分桶)。这些方法的局限在于:必须提前获得代表性语料或批量向量,才能完成聚类、码本训练或参数估计。在无静态语料的流式索引构建场景(如实时客服嵌入、边缘设备本地存储)中,新向量到达时无法立即编码,导致高延迟或无法部署。此外,学得的码本或变换矩阵可能因数据分布漂移而失效,需要定期重新训练,增加了系统复杂性。
该问题的难点在于无状态与高精度的平衡。一方面,压缩器不能依赖任何全局统计量或训练过程,必须对单条向量即时产生紧凑码;另一方面,需要保证压缩后的余弦相似度排序与原浮点向量高度一致。这涉及随机投影的方差控制、量化误差优化,以及非对称查询(查询可用浮点、数据库用压缩码)的评分无偏性。业界对低存储、高召回、免训练的方案关注度持续上升,尤其在设备端、跨模态匹配及大规模分布式索引中。
类比:类似移动端设备端照片检索,需要即时索引新图片嵌入,却无法依赖云端批量训练码本,必须用本地快速、确定性的压缩方式。
核心洞察
- **无状态流式编码**:Clark Hash 对每个数据库向量独立编码,仅依赖确定性种子,无需预先收集训练数据学习码本、旋转或全局统计量。这与 Product Quantization (PQ)、Optimized Product Quantization (OPQ) 等需要离线训练的压缩方法形成鲜明对比。在向量持续到达的在线场景(如实时推荐、动态知识库、流式日志索引),该特性消除了训练延迟与数据漂移问题,使压缩系统可即刻部署,极大降低了工程复杂度。
- **极高压缩比下的精度平衡**:在默认 384 维 sentence embedding 设置中,存储从 1536 字节(f32)降至 48 字节,压缩 32 倍,且在 STS17 和 STS22 多语言相似度任务上,与全精度余弦相似度的宏平均 Pearson 相关系数分别达到 0.910 和 0.946。这表明通过稀疏 JL 投影加固定标量量化的组合,并未显著损失语义检索质量,对存储敏感的边缘设备或大规模在线服务有明确的实用价值。
方法
方法流程:从浮点向量到紧凑草图
Clark Hash 将单个高维嵌入向量独立编码为固定宽度的量化草图(sketch),查询时保持全精度并执行非对称评分。整体步骤:归一化 → 稀疏投影 → 裁剪 → 标量量化 → 比特打包。
输入与配置
数据库向量 ( v \in \mathbb{R}^d )(默认 ( d=384 ) 的句子嵌入)与一组可调参数:种子(保证确定性)、草图维度 ( k )、每元素比特数 ( b )、稀疏度 ( s )、裁剪范围 ( [-C, C] ) 及相似度度量。方向归一化与缩放
首先将 ( v ) 归一化为单位长度,可选择再乘以常数以便后续量化。此步骤使编码直接支持余弦相似度搜索。确定性稀疏符号 Johnson-Lindenstrauss 投影
使用以固定种子生成的随机矩阵 ( P \in \mathbb{R}^{k \times d} ),其元素为 ({-1, 0, +1}),且保持指定稀疏度(仅约 ( s \times dk ) 个非零)。该投影保持向量间余弦距离近似不变,同时利用稀疏性加速计算。投影结果 ( p = P \cdot v_{\text{norm}} ) 的维度通常小于或等于原始维度,配合量化达到压缩目的。裁剪与标量量化
将 ( p ) 的每个分量限制在 ([-C, C]) 内,然后均匀量化为 ( b ) 比特整数(如 ( b=3 ))。量化边界由裁剪范围决定,避免离群值主导量化粒度。比特打包输出
所有量化后的整数连续打包为比特流,形成最终草图。在默认 384 维设置下,每向量仅占用 48 字节(例如 ( k=128, b=3 ) 给出 384 比特),相较原始 f32 存储减小 32 倍。查询与非对称评分
查询向量保持浮点,经过相同的归一化和投影(不量化),直接与解量化后的数据库草图计算点积(余弦相似度)或指定度量。这种“查询全精度,数据库低精度”的非对称策略在精度与存储间取得平衡。
与同类方法的差异:Clark Hash 无需训练码本、旋转矩阵或统计语料,每个向量可独立即时编码,特别适合流式入库且无训练集的在线场景,是一种完全无状态的编解码器。
实验
实验设计
评估使用 multilingual MiniLM 编码器,在 9,304 个多语言句子对(涵盖 29 个子集)上测试 Clark Hash 48 字节草图 与密集 f32 余弦分数的保真度。数据库向量经归一化、稀疏 JL 投影、裁剪、标量量化后存储为固定宽度码字;查询保持浮点并采用不对称评分。
关键发现
- 在 STS17 上,48 字节草图与密集分数的宏 Pearson 相关性达到 0.910,而 STS22 上为 0.946,压缩比达 32 倍(从 1536 字节降至 48 字节)。
- 方法完全 无训练,无需码本、旋转或语料统计,适用于向量逐个到达的在线场景。
与基线对比解读
以原始密集 f32 存储(相关性 1.0)为参考,压缩后的草图保持了极高的语义保真度,说明 确定性稀疏投影 + 标量量化 的组合在句子嵌入上有效保留了余弦结构。这与需要批量训练的产品量化、OPQ 等方法形成鲜明对比:Clark Hash 在存储效率与便利性之间取得了折衷,尤其适合无预训练语料或流式入库的场景。
行业影响
落地场景
Clark Hash 为无状态嵌入压缩方案,特别适合无法预先收集语料的在线场景。典型落地包括:
- 电商商品去重与语义搜索:高吞吐写入的商品向量,每条只需 48 字节,可放入内存缓存,实现毫秒级相似匹配,无需等待训练码本。
- 社交媒体内容审核与去重:流式到来的帖子嵌入可即时编码并持久化,低存储开销支持长期去重。
- 边缘设备/轻量级服务:在 IoT 设备或移动端直接压缩嵌入,减少发送到云端的带宽,降低延迟与成本。
商业价值
- 存储成本骤降 32 倍:在十亿级向量规模下,直接降低内存/磁盘需求,节省云基础设施开支。
- 简化运维:无需维护训练集、旋转矩阵或码本,消除离线训练管道和模型版本管理,适合动态数据流。
- 低延迟查询体验:压缩码可直接驻留 L3 缓存,查询时仅需解压投影值,提升实时搜索或推荐系统的响应速度。
与现有产品/工作流的接口
Clark Hash 以 Rust 库形式提供,可轻松嵌入自有服务:
- 作为编码后处理层:接收原始 f32 嵌入,输出压缩码,存入任何键值数据库(如 Redis、RocksDB)。
- 向量数据库集成:作为自定义编码插件接入 Milvus、Weaviate 等,或与 FAISS/Annoy 索引组合,先编码再建索引,降低内存占用。
- 无服务器函数友好:每个向量独立编码,天然适合 Lambda/FaaS 架构,与流处理平台(Kafka、Kinesis)直接对接。
具体落地 Use Case
- 全球电商平台商品去重
每天新增数百万商品描述,使用多语言 MiniLM 生成 384 维嵌入,Clark Hash 压缩至 48 字节。所有活跃商品向量可全内存检索,实时屏蔽重复商品,无需定期重训,适应长尾语言和品类变化。 - 内容聚合平台的相似文章检测
新闻或博客平台在发布时,对文章嵌入压缩并查询已有内容库,防止重复推荐。48 字节/篇的高效存储使超大规模语料(数十亿篇)的长期去重成为可能,同时大幅降低索引服务器成本。
局限
- **Clark Hash 明确定位为无状态编解码器**,不提供近似近邻搜索加速。它仅压缩存储,查询时仍需与浮点向量逐一计算(或依赖外部索引),因此在大规模向量库下检索计算量并未减少。与端到端的近似最近邻索引方案(如 FAISS + PQ)相比,它只解决了存储瓶颈,未改善搜索复杂度。
- **方法依赖固定的确定性投影与标量量化**,超参数(稀疏度、比特宽度、裁剪范围)需手动设定,无基于数据分布的自适应调整。在可获取训练语料的场景下,基于学习的量化(如 OPQ、RQ)通常能获得更高的精度-压缩比;Clark Hash 的固定变换可能对某些分布的嵌入产生较大信息损失。
- **评估仅覆盖句子相似性任务**,使用多语言 MiniLM 编码器在 STS17/STS22 上测试,未涉及图像、多模态等其他嵌入类型,也未探索极端压缩倍率(如 16 字节)下的性能变化。其在不同领域和更严苛条件下的通用性尚未验证,限制了对其适用范围的判断。