平衡相关性与多样性:推荐系统中的永恒博弈与 MMR 算法详解
在信息过载的时代,推荐系统不仅要"猜对"用户想要什么,更要"给全"用户可能需要的一切。本文深入探讨相关性与多样性的权衡之道,并详解经典算法 MMR 的原理与实践。
一、为什么需要平衡?
1.1 推荐系统的双重使命
现代推荐系统面临一个根本性的矛盾:
- 相关性(Relevance):衡量推荐结果与用户当前兴趣的匹配程度。高相关性意味着"精准"------用户看到的正是他想要的。
- 多样性(Diversity):衡量推荐结果之间的差异程度。高多样性意味着"丰富"------用户能看到不同角度、不同类型的内容。
如果只追求相关性,系统会陷入信息茧房(Filter Bubble):用户越点击某类内容,系统越推送同类内容,最终视野越来越窄。反之,如果只追求多样性,推荐结果会变得杂乱无章,用户体验急剧下降。
1.2 真实世界的困境
想象一下这些场景:
| 场景 | 过度追求相关性 | 过度追求多样性 |
|---|---|---|
| 电商平台 | 购买手机后连续一周推荐手机壳 | 推荐完全无关的品类 |
| 视频平台 | 永远推送同一类型的短视频 | 推荐内容质量参差不齐 |
| 搜索引擎 | 返回多个几乎相同的网页 | 结果与查询意图偏离 |
| 新闻应用 | 只推送用户已认同的观点 | 信息噪音过大 |
正如诺贝尔经济学奖得主 Harry Markowitz 所言:"分散化是金融领域唯一的免费午餐。" 这一原则同样适用于推荐系统------在不确定性中分散赌注,才能最大化长期收益。
二、相关性与多样性的量化
2.1 相关性度量
相关性通常通过以下方式计算:
- 协同过滤:基于用户-物品评分矩阵,计算用户与物品的匹配度
- 内容匹配:使用余弦相似度、内积等度量查询与文档的相似性
- 深度学习模型:通过神经网络学习用户和物品的隐式表示
2.2 多样性度量
多样性可以从多个维度衡量:
- 基于项目的多样性:推荐列表中物品内容的差异程度(如电影类型、商品类别)
- 基于用户行为的多样性:用户历史行为覆盖的广度
- 基于语义的多样性:物品在嵌入空间中的分布情况
常用的数学工具包括:
- Jaccard 指数:衡量集合间的差异
- 信息熵:评估分布的均匀程度
- Gini 系数:衡量推荐结果分布的不平等程度
三、MMR:最大边际相关性算法
3.1 算法起源
最大边际相关性(Maximal Marginal Relevance, MMR) 由 Carbonell 和 Goldstein 于 1998 年在 SIGIR 会议上提出,最初用于信息检索和文档摘要。如今,它已成为推荐系统、RAG(检索增强生成)和向量搜索中平衡相关性与多样性的标准工具。
3.2 核心思想
MMR 的核心洞察是:每次选择时,不仅考虑候选物品与查询的相关性,还要惩罚它与已选物品的相似性。
换句话说,MMR 问的不是"这个物品有多相关?",而是"这个物品有多相关,同时与已选物品有多不同?"
3.3 数学公式
MMR 的评分公式如下:
MMR(d_i) = lambda * Sim(d_i, q) - (1 - lambda) * max_{d_j in S} Sim(d_i, d_j)
其中:
- d_i:候选文档/物品
- q:用户查询或用户画像
- S:已选中的文档集合
- Sim(d_i, q):候选文档与查询的相似度(相关性)
- Sim(d_i, d_j):候选文档与已选文档的相似度(冗余度)
- lambda:权衡参数,取值范围 0, 1
3.4 参数 lambda 的调节
lambda 是 MMR 的灵魂,控制着相关性与多样性的天平:
| lambda 值 | 行为 | 适用场景 |
|---|---|---|
| 1.0 | 纯相关性,无多样性 | 用户意图非常明确(如查具体代码报错) |
| 0.7 | 略微偏重相关性 | 一般搜索和推荐场景 |
| 0.5 | 均衡平衡 | 探索性浏览、首页推荐 |
| 0.3 | 偏重多样性 | 用户意图模糊,需要广泛覆盖 |
| 0.0 | 纯多样性 | 冷启动、发现新兴趣 |
原论文建议从 lambda = 0.5 开始,根据实际效果调整。
3.5 算法流程
MMR 采用贪婪迭代策略:
- 第一轮:选择相关性最高的物品(此时 S 为空,多样性惩罚为 0)
- 后续轮次 :对每个候选物品,计算
lambda*相关性 - (1-lambda)*与已选最大相似度,选择得分最高的加入 S - 重复直到选出 K 个物品
关键细节在于公式中的 max :候选物品被惩罚的程度取决于它与已选物品中最相似的那个。这意味着:即使候选物品与 9 个已选物品都不同,只要与第 10 个高度相似,它就会被大幅惩罚。
四、MMR 的实践应用
4.1 在 RAG 中的应用
在检索增强生成(RAG)中,MMR 能有效解决上下文冗余问题:
当你搜索"评估和监控 LLM"时,普通向量搜索可能返回 5 篇内容几乎相同的博客。MMR 则能确保每篇检索到的文档都提供独特视角,让 LLM 获得更全面的上下文,生成更丰富的回答。
4.2 在推荐系统中的应用
以视频推荐为例:
- 无 MMR:用户搜索"篮球",返回 10 个同一比赛的精彩集锦
- 有 MMR:返回比赛集锦、篮球教学、球员访谈、历史经典战役等,覆盖用户可能的多重兴趣
4.3 代码实现示例
以下是 MMR 的伪代码实现:
python
def mmr_select(query, candidates, k, lambda_param=0.5):
selected = []
remaining = candidates.copy()
while len(selected) < k and remaining:
best_score = -float('inf')
best_item = None
for item in remaining:
relevance = cosine_similarity(item.vector, query)
if selected:
max_similarity = max(
cosine_similarity(item.vector, s.vector)
for s in selected
)
else:
max_similarity = 0
score = (lambda_param * relevance -
(1 - lambda_param) * max_similarity)
if score > best_score:
best_score = score
best_item = item
selected.append(best_item)
remaining.remove(best_item)
return selected
4.4 主流框架支持
如今,MMR 已被众多框架原生支持:
- OpenSearch:通过 mmr_rerank_factory 提供向量搜索 MMR 重排序
- Qdrant:支持 diversity 参数直接配置 MMR
- LangChain:MaxMarginalRelevanceExampleSelector 用于少样本示例选择
- Azure AI Search:支持 MMR 增强 RAG 检索
五、MMR 的局限与进阶
5.1 局限性
- 贪婪策略非最优:MMR 是贪婪算法,无法保证全局最优解
- 相似度度量敏感:结果高度依赖于相似度函数的选择
- lambda 参数需调优:不同场景需要不同的 lambda,缺乏自适应机制
- 仅考虑成对差异:未充分利用物品间的高阶关系
5.2 进阶方法
针对 MMR 的不足,研究者提出了多种改进:
- xQuAD / RxQuAD:引入"意图感知"多样化,考虑用户的多个潜在兴趣方面
- 多目标优化:将相关性和多样性同时纳入损失函数,寻找 Pareto 最优前沿
- 矩阵补全框架:利用用户评分和物品元数据,通过凸优化统一平衡两者
- LLM 重排序:使用大语言模型理解语义层面的多样性,进行更智能的重排序
六、总结
平衡相关性与多样性是推荐系统的永恒命题。MMR 以其简洁优雅的数学形式和广泛的适用性,成为这一领域的经典解决方案。
核心要点回顾:
- 相关性 解决"对不对"的问题,多样性解决"全不全"的问题
- MMR通过 lambda*相关性 - (1-lambda)*冗余度 的公式实现动态平衡
- lambda 参数是关键调优点,需根据场景灵活配置
- 贪婪迭代策略简单高效,但存在局部最优风险
- 现代框架已原生支持 MMR,落地门槛大幅降低
在实际应用中,没有放之四海而皆准的"最佳平衡点"。理解业务场景、用户意图和系统目标,才能找到属于你的最优 lambda。
"在不确定性中,分散你的赌注。" ------ Harry Markowitz
参考资料:
- Carbonell, J., & Goldstein, J. (1998). The Use of MMR, Diversity-Based Reranking for Reordering Documents and Producing Summaries. SIGIR.
- OpenSearch Vector Search with MMR Reranking Documentation
- Qdrant MMR Implementation Guide
- Agrawal, A. (2025). Beyond Accuracy: Using Maximal Marginal Relevance to create more diverse and engaging recommendations.