小红书精读:Matryoshka Hash Representations for Model-Aware Compact Semantic Retrieval
32字节检索新SOTA,MHR怎么做到的?
各位算法同学们,量化检索码一直有个两难:短码省内存但掉点,长码保效果但费存储。这篇工作直接告诉你,256bit二值码可以同时长出64/128/256三种可检索前缀,32字节下NDCG@10做到0.5561,把同预算最好的baseline甩开3个点以上。
📄 Matryoshka Hash Representations for Model-Aware Compact Semantic Retrieval
🔧 先把全宽码训好,再冻结模型,用零初始化的残差adaptor去组织前缀。这样短码不再拖累长码,规避了直接多宽度联合训练里early bits反复翻转的问题。 🔧 文档端存硬二值码,query端保留连续logits,不对称打分和部署一致,而不是像传统PQ那样两端都量化。 🔧 用FAISS FastScan实现搜索,不需要复杂图索引,flat或IVF都能直接跑,还能无缝接rerank或LEANN这类剪枝图。
📊 MS MARCO上32字节预算:MHR的NDCG@10是0.5561,Recall@100是0.6535,而最强baseline只有0.5239和0.6426。 📈 换到更紧的8字节、16字节预算,优势更明显,说明短码场景下“为排序优化+前缀解耦”确实有用。 ✅ 零样本迁移到7个BEIR数据集,macro平均全部超过对比方法,不是只在源域上自嗨。
我的判断:这个工作适合做向量检索压缩的同学跟进,尤其是RAG里想省显存/内存又不想牺牲召回的场景。落地坑在于Stage II的adaptor是拿logits训的,换底座encoder要重新跑一遍;另外它默认query必须连续,如果部署环境只能存整型query,可能还得做一层量化。想压到32字节以下的朋友,建议先看它和RaBitQ在自家数据上的差距。

原文:AlphaXiv