WMX · 随记
·AI· 3 分钟阅读

MMR:相关性很高的结果也可能彼此重复

检索前几名都是同一段话的近似副本时,模型获得的信息并没有随条数增加。重排可以在相关性与多样性之间做权衡。

AI 系列概览:模型机制、系统边界与效果评估
AI 系列概览:模型机制、系统边界与效果评估 点击图片查看大图 ↗

问题从哪里出现

检索前几名都是同一段话的近似副本时,模型获得的信息并没有随条数增加。重排可以在相关性与多样性之间做权衡。

理解核心机制

MMR 每次选择一个候选,兼顾查询相关性并扣除它与已选项的最大相似度。下面使用手工给定分数,只展示贪心选择规则。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。

Python13 行 · 可横向滚动
relevance = {"a": 0.95, "b": 0.93, "c": 0.80}
similarity = {frozenset(("a", "b")): 0.99,
              frozenset(("a", "c")): 0.10,
              frozenset(("b", "c")): 0.15}
selected = []
while len(selected) < 2:
    def score(doc):
        redundancy = max((similarity[frozenset((doc, other))] for other in selected), default=0)
        return 0.6 * relevance[doc] - 0.4 * redundancy
    choice = max((doc for doc in relevance if doc not in selected), key=score)
    selected.append(choice)
assert selected == ["a", "c"]
print(selected)

适用边界与常见误区

相关性与相似度的尺度需要可比。多样性不是越大越好,过强惩罚会选入不相关信息,参数应根据答案质量和证据覆盖评估。

继续练习

把权重从 0.6 改成 1.0,观察选择何时回到纯相关性排序,再设计包含互补证据的验证问题。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档