最大边际相关性(MMR)算法

如何选择既相关又多样的文档

什么是 MMR?

想象一下,你在图书馆找书。你希望找到的书既要和你的问题相关, 又要彼此不同(不要都是同一类型的书)。

MMR 算法就是帮你做这件事的!它会:

演示

下面演示MMR 算法是如何工作的:

0.5
3
说明:
  • 红色圆点 = 查询(你的问题)
  • 蓝色圆点 = 候选文档
  • 黄色圆点 = 已选中的文档
  • 线条 = 相关性(越粗越相关)
  • 距离 = 多样性(距离越远越不同)

MMR 公式

MMR = λ × 相关性 - (1-λ) × 相似度

这个公式告诉我们如何计算每个文档的"分数":

公式解释:

  • λ (Lambda):平衡参数,范围是 0 到 1
    • λ = 1:只看相关性,不管多样性
    • λ = 0:只看多样性,不管相关性
    • λ = 0.5:平衡相关性和多样性
  • 相关性:文档与查询的相似程度(越高越好)
  • 相似度:文档与已选文档的相似程度(越低越好,因为我们要多样性)

算法步骤

步骤 1:计算所有文档的相关性

计算每个文档与查询的相关性分数

步骤 2:选择第一个文档

选择相关性最高的文档作为第一个结果

步骤 3:使用 MMR 选择后续文档

对于剩余的每个文档,计算 MMR 分数,选择分数最高的

步骤 4:重复直到选够数量

重复步骤 3,直到选出足够数量的文档

举个例子

场景:你想了解"人工智能"

候选文档:

  • 文档A:什么是人工智能(相关性:0.9)
  • 文档B:人工智能的历史(相关性:0.8)
  • 文档C:机器学习基础(相关性:0.7)
  • 文档D:深度学习入门(相关性:0.6)
  • 文档E:Python 编程(相关性:0.3)

如果只看相关性:会选择 A, B, C(但 A 和 B 内容可能很相似)

使用 MMR:会选择 A(最相关),然后选择 C 或 D(与 A 不同但相关),而不是 B(因为 B 和 A 太相似)

相关性与多样性的平衡

只看相关性(λ = 1)

✅ 优点:选出的文档都很相关

❌ 缺点:可能选出的文档内容重复

适用场景:需要最相关的文档,不关心多样性

只看多样性(λ = 0)

✅ 优点:选出的文档各不相同

❌ 缺点:可能选出的文档不够相关

适用场景:需要覆盖不同方面,不关心相关性

最佳实践:通常使用 λ = 0.5 到 0.7,这样既能保证相关性,又能获得多样性。

总结

MMR 算法是一个聪明的选择策略,它帮助我们在相关性多样性之间找到平衡。

就像在图书馆选书一样,我们既希望书和我们的问题相关,又希望选出的书能覆盖不同的角度,这样我们就能获得更全面、更有价值的信息!