MMR
Maximal Marginal Relevance
最大边际相关性 · 让检索结果既相关又不重复
- 定义
- MMR(Maximal Marginal Relevance)是AI领域的专业术语。MMR 是一种信息检索排序算法,核心思想是:每选一条结果,不仅要和查询相关,还要和已选结果尽量不同。
最后更新:2026-03-29
什么是MMR?
MMR 是一种信息检索排序算法,核心思想是:每选一条结果,不仅要和查询相关,还要和已选结果尽量不同。这避免了向量检索中常见的「返回一堆语义相似但内容重复的文档」问题,在 RAG 系统中被广泛用于提升 LLM 回答的信息覆盖度。
- 1998 年由 Carbonell 和 Goldstein 在 CMU 提出,至今仍是检索多样性的事实标准
- 核心公式通过 λ 参数在相关性和多样性之间做权衡——λ=1 纯相关性,λ=0 纯多样性
- LangChain、LlamaIndex、Elasticsearch、Qdrant 等主流框架均内置 MMR 检索模式
MMR详解
MMR 算法迭代式地构建结果集:第一步选最相关的文档,之后每一步都选「与查询相关但与已选文档最不相似」的文档。公式为 MMR = argmax[λ·Sim(d,q) - (1-λ)·max Sim(d,dᵢ)],其中 λ 控制相关性与多样性的权衡。在 RAG 场景中,MMR 确保送入 LLM 的上下文窗口包含多角度信息而非冗余内容,直接提升回答质量。2024-2025 年随着 RAG 成为 LLM 应用标配,MMR 从学术概念变成了工程必备——Elasticsearch、Qdrant、OpenSearch、Google Bigtable 等向量数据库和检索引擎均已原生支持。不过 MMR 的 λ 参数调优依赖经验,且在大规模候选集上计算开销较高,近期有 VRSD 等新算法尝试改进。
公式提示
MMR = argmax[λ·Sim(d,q) - (1-λ)·max Sim(d,dᵢ)];λ 越大越偏相关性,越小越偏多样性,常用值 0.5-0.7。
MMR的应用场景
正式定义
一种通过在相关性和多样性之间做边际权衡来对检索结果排序的算法,减少冗余的同时保持查询相关性。
应用场景
- RAG 系统中为 LLM 提供多角度、低冗余的上下文文档
- 搜索引擎结果去重,避免返回语义高度重复的页面
- 自动摘要生成时选取覆盖面最广的关键段落
常见误区
- MMR 不是简单的去重——它是在相关性和多样性之间做连续权衡,不是二选一
- λ 参数没有万能最优值——不同场景(问答 vs 摘要 vs 推荐)需要不同的 λ 设置
实际案例
📌 RAG 问答中的上下文去冗余
用户问「什么是量子计算」,纯相似度检索可能返回 5 段几乎相同的定义。MMR 检索则会返回定义、原理、应用、局限等不同角度的段落,让 LLM 生成更全面的回答。
MMR的参考来源
- 论文Carbonell & Goldstein: Using MMR for Diversity-Based Reranking (1998)Jaime Carbonell, Jade Goldstein · 1998-10
- 文档
关于MMR的常见问题
- MMR 和普通向量相似度搜索有什么区别
- 普通向量搜索只按相似度排序,容易返回大量语义重复的结果。MMR 在相似度基础上加入多样性约束,确保每条新结果都带来增量信息。
- MMR 的 lambda 参数怎么设置
- λ=1 等于纯相似度搜索,λ=0 等于纯多样性。实践中 0.5-0.7 是常用范围,偏问答场景可设高一些(0.7),偏探索/摘要场景可设低一些(0.5)。