仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
大家好,我是Ai学习的老章
看一篇Google最近一篇RAG论文《MUVERA:Multi-VectorRetrievalviaFixedDimensionalEncodings》
在构建高级检索增强生成(RAG)系统时,开发者普遍面临一个棘手的权衡:
单向量检索(Single-Vector):将整篇文档压缩成一个向量。这种方法的优势是快,能无缝利用成熟的最大内积搜索(MIPS)技术。但其致命弱点是“语义瓶颈”,单一向量无法充分表达长文档的丰富层次和细微差别,导致检索精度不足。
多向量检索(Multi-Vector):将文档切分成多个语义块(如段落、句子),每个块独立编码成一个向量。这种方法通过保留局部上下文,极大地提升了检索的“相关性”和“可解释性”。然而,其精度是以牺牲速度为代价的。衡量查询和文档(两个向量集合)的相似度通常采用
Chamfer相似度(或称MaxSim),这涉及到密集的两两比较,计算量呈爆炸式增长,使其难以胜任需要低延迟响应的在线应用。
Google提出的MUVERA正是为打破这一僵局而来。它并非简单的折衷,而是一种具备理论保证的、优雅的降维打击,其核心武器就是固定维度编码(FixedDimensionalEncodings,FDEs)。
MUVERA的精髓在于,它设计了一种方法,可以用简单的单向量内积来高度近似复杂的多向量Chamfer相似度,从而将问题转化回我们已经极度擅长解决的MIPS问题。
Chamfer相似度Sim(Q,D)的计算公式为:
Sim(Q,D)=Σ_{q∈Q}max_{d∈D}sim(q,d)
其中Q是查询的向量集,D是文档的向量集。这个公式揭示了其非对称性:它计算的是每一个查询向量q与文档集中最匹配的向量d的相似度之和。这种非对称性对RAG至关重要,因为它能更好地模拟“查询-文档”的相关性判断。
FDE的构建过程是一个精妙的、无需训练的(data-oblivious)随机算法,主要分为三步:
**空间随机划分(LSH):算法的核心是局部敏感哈希(LocalitySensitiveHashing)**。通过生成一个随机的高斯矩阵(SimHash),将原始的高维向量空间随机地切割成2^k个分区。LSH的关键特性是:原本在高维空间中彼此接近的向量,有极高的概率被映射到同一个分区中。
非对称聚合:这是MUVERA最巧妙的设计,它完美地模拟了Chamfer相似度的非对称性。
**对于查询(Query):将落入同一分区的所有查询向量求和(Sum)**。这保留了每个查询向量的独立贡献。
**对于文档(Document):将落入同一分区的所有文档向量求平均(Average)。这恰好对应了Chamfer公式中的max操作——通过平均,可以防止分区内某个“明星”向量的权重过高,从而更好地反映该分区对查询向量的整体响应水平。
重复与拼接:上述过程会使用不同的随机种子重复(num_repetitions)多次。每次重复都会产生一套全新的空间划分和聚合结果。最后,将所有重复运行得到的向量拼接起来,形成最终的、维度更高的FDE向量。这样做极大地增强了算法的鲁棒性,确保了真正相似的向量对能在某一次或几次随机划分中“相遇”。
最终,⟨FDE(Q),FDE(D)⟩≈Sim(Q,D)。一个复杂的多向量问题,被转化成了一个简单的内积计算。
MUVERA不仅在实践中表现优异,更具备坚实的理论基础,这是它与许多启发式方法的核心区别。
论文从理论上证明,MUVERA生成的FDE能够提供对真实Chamfer相似度的ε-近似(epsilon-approximation)。这意味着其近似误差是有界的、可控的。这为多向量检索的“降维打击”提供了数学上的确定性,保证了检索质量不会因近似而大幅牺牲,是其相比纯黑盒模型或无理论保证方法的最大优势。
在涵盖多种检索任务的BEIR(BenchmarkingIR)数据集上的实验结果,雄辩地证明了MUVERA的价值:
效率的飞跃:
延迟锐减:与此前最先进的多向量检索实现(如PLAID)相比,MUVERA的端到端(end-to-end)延迟降低了惊人的90%。
候选集更优:在达到同等召回率(Recall)的前提下,MUVERA检索出的候选文档数量比其他方法少了2-5倍。这意味着它能用更少的计算量捕获到相关的结果,极大地减轻了后续精排(re-ranking)阶段的负担。
效果的提升:
召回率更高:在延迟大幅降低的同时,MUVERA的平均召回率反而还提升了10%。这实现了“既要又要”的理想目标:更快,而且更准。
这些数据表明,MUVERA成功地将多向量检索的计算复杂度降低到了与单向量检索相近的水平,同时在检索质量上甚至超越了现有的SOTA(State-of-the-Art)方法。
实证性能:在BEIR基准测试中,MUVERA的表现令人瞩目:
极致的速度:与之前最先进的多向量检索系统PLAID相比,MUVERA将端到端延迟降低了90%**。
更高的效率:与常用的单向量基线方法相比,MUVERA仅需检索5%到20%的候选文档就能达到相同的召回率。
内存友好:FDE向量可以被高效地压缩。实验表明,使用乘积量化(ProductQuantization)可以将内存占用减少32倍,而对检索质量的影响微乎其微。
社区提供的muvera-py库让我们可以轻松上手MUVERA。
在FixedDimensionalEncodingConfig中,几个关键参数决定了FDE的性能和资源消耗:
num_repetitions:重复次数。越高的值能带来更准确的相似度近似,但也会导致最终FDE向量维度更高,计算和存储成本也相应增加。
num_simhash_projections:控制分区数量(2^num_simhash_projections)。越多的分区能更精细地划分空间,但可能导致数据稀疏问题(即很多分区为空)。
muvera-py的基准测试结果清晰地展示了其权衡:
Retriever
IndexingTime(s)
AvgQueryTime(ms)
Recall@10
ColBERT(Native)
82. 31
1618. 29
0. 7000
ColBERT+FDE
221. 09
189. 97
0. 6400
可以看到,FDE的预处理(索引)时间更长,因为它需要执行随机映射和聚合。但其回报是巨大的:平均查询延迟从1. 6秒骤降至0.19秒,速度提升了近9倍,而代价仅仅是召回率略微下降。这对于在线服务是极具吸引力的交易。
MUVERA并非对现有方法的简单改进,而是一次范式上的革新。它通过一个具备理论保证的、轻量级的随机算法,巧妙地将一个计算密集型的多向量检索问题,降维打击成了一个已经高度优化的单向量MIPS问题。
对于追求极致性能的RAG系统开发者而言,MUVERA提供了一座桥梁,连接了多向量表示的“高精度”与单向量搜索的“高效率”。它证明了,在RAG的世界里,速度与精度并非不可兼得。
参考资料:
[1]MUVERA:Multi-VectorRetrievalviaFixedDimensionalEncodings:https ://arxiv. org/abs/2405. 19504
[3]github. com/sigridjineth/muvera-py:http ://github. com/sigridjineth/muvera-py
制作不易,如果这篇文章觉得对你有用,可否点个关注。给我个三连击:点赞、转发和在看。若可以再给我加个🌟,谢谢你看我的文章,我们下篇再见!
搭建完美的写作环境:工具篇(12章)图解机器学习-中文版(72张PNG)ChatGPT、大模型系列研究报告(50个PDF)108页PDF小册子:搭建机器学习开发环境及Python基础116页PDF小册子:机器学习中的概率论、统计学、线性代数史上最全!371张速查表,涵盖AI、ChatGPT、Python、R、深度学习、机器学习等