面包屑图标 当前位置: 首页
AI资讯
热点详情

最大边际相关性MMR提升RAG检索结果多样性与实用性

AI热点日报
AI热点日报时间:2026-07-17
热点解读

在RAG系统中,仅仅依赖向量相似度进行检索,很容易陷入信息重复或视角单一的困境。为了真正提升回答的多样性和信息覆盖度,引入最大边际相关性(MMR)算法,是一种非常实用的解法——它能在“相关性”和“多样性”之间找到一个巧妙的平衡点,帮助我们从候选信息中挑出那些既相关、又不重复的精华。 在RAG(Ret

在RAG系统中,仅仅依赖向量相似度进行检索,很容易陷入信息重复或视角单一的困境。为了真正提升回答的多样性和信息覆盖度,引入最大边际相关性(MMR)算法,是一种非常实用的解法——它能在“相关性”和“多样性”之间找到一个巧妙的平衡点,帮助我们从候选信息中挑出那些既相关、又不重复的精华。

最大边际相关性MMR:提升RAG检索结果的多样性与实用性


在RAG(Retrieval-Augmented Generation)系统中,检索阶段直接决定了最终生成内容的“信息底牌”。但如果我们只用向量相似度做top-k检索,一个常见的问题是:拿回来的结果可能内容高度重复,信息都集中在同一个角度上。这会导致模型生成的回答缺乏层次感和覆盖度。

这时候,光“相关”是不够的,我们真正想要的是——既相关,又多样。而MMR(Maximum Marginal Relevance)算法,正是为了解决这个痛点而生的。

1. MMR 是什么,它能解决什么问题?

最大边际相关性(MMR)是一种排序算法,广泛应用于信息检索、推荐系统和文本摘要等任务中。它的核心任务就是:在保证内容与查询相关的前提下,尽可能增加结果之间的多样性。

放到RAG的场景里来看,传统的排序方法常常只盯着“相关性”这一个维度。但一味的追求相关,会出现两个典型问题:

  • 内容重复:就像推荐系统里连续推了十篇几乎一样的文章,用户很快就觉得乏味。
  • 信息片面:系统可能只聚焦于某个子话题,导致用户无法看到问题的全貌。

MMR的思想很明确:在确保相关性的同时,主动引入多样性,从而提供更全面、更丰富的结果。

简单概括就是:在一堆候选内容里,优先选那些既跟用户查询相关、又跟已经选过的内容不重复的条目。

它的目的可以理解为——MMR = “给你想要的 + 避免你已经看过的”。

举个例子:如果你用新闻推荐系统搜“人工智能”,传统方法可能推来推去都是“AI在医疗领域的应用”文章。而使用MMR后,系统可能会推荐:

  • 一篇讲AI医疗应用的,
  • 一篇讲AI教育领域的,
  • 一篇讲AI伦理问题的。

这样一来,用户既能得到与主题相关的信息,又能了解不同维度的视角,避免了信息过窄或重复。

2. MMR 的基本思想

这里面有两个关键词始终在“拉锯”:相关性(Relevance)多样性(Diversity)。它们听起来像是在打架,但实际在信息排序中,是缺一不可的搭档。

相关性是基础,但光有它不够。

相关性好理解,就是内容跟用户查询的匹配程度。你搜“机器学习”,系统当然不该推荐“烘焙教程”。这是相关性在起作用。

但如果系统只盯着相关性,就会出现一个瓶颈:内容很快就在一个点上饱和了,“重复”感随之而来

多样性让信息有层次。

多样性指的是结果之间的差异化程度。如果推荐的每条内容分别从原理、应用、未来趋势切入,你读完后会觉得信息更立体、更有收获。

相关性保证你“看对东西”,多样性保证你“看到不同的东西”。

全是相关但重复的内容,如同嚼蜡;全是多样但不相关的内容,那是跑题。所以,MMR的目标很纯粹:从一堆候选内容里,挑出那些既“与查询高度相关”,又“跟已选内容不重复”的条目。

它在每一步选择下一个内容时,都会权衡两件事:

  • 这个内容本身和用户需求的匹配度有多高?
  • 它和我们已经选过的那些内容,是不是太像了?

MMR做的就是在这两者之间找到最佳平衡点。换句话说,它每次都想选一个“有新意的好内容”,而不是简单地把最相关的几个一股脑推出来。

你可以把MMR想象成一位懂信息、又懂用户心理的策展人:它会说,“这个你可能还没看过,但跟你想要的很有关,而且比之前那些不一样,值得一看。”

3. MMR 的原理和公式解析

MMR的标准公式如下:

其中:

  • Di:当前候选文档

  • Q:用户查询

  • S:已选文档集合

  • Sim1(Di, Q):候选文档与查询的相关性得分

  • Sim2(Di, Dj):候选文档与某个已选文档的相似度(公式中会取与所有已选文档中最相似的那个)

  • λ:平衡参数(0 ≤ λ ≤ 1)

    • λ = 1:完全关注相关性,不考虑多样性。
    • λ = 0:完全关注多样性,不考虑相关性。
    • 0 < λ < 1:在相关性和多样性之间进行平衡。

3.1 算法流程

  1. 初始化:计算所有文档与查询的得分,选择得分最高的文档加入已选集合S。
  2. 迭代选择:对剩余候选文档中的每一个,根据MMR公式计算得分,选择得分最高的文档加入S。
  3. 重复迭代,直到选出所需数量的结果。

3.2 举个例子:摘要任务中的 MMR

假设有一篇长文章,要从中选出三句话组成摘要。手头有五个候选句子:S1、S2、S3、S4、S5。设定平衡参数λ=0.5。

初始化:计算所有句子与查询的相关性得分,选择得分最高的S1加入已选集合S。

集合状态:已选集合{S1},候选集合{S2, S3, S4, S5}。

第一次迭代:计算每个候选句子的MMR得分。

  • S2: 相关性0.9,与S1相似度0.8 → MMR = 0.5×0.9 - (1-0.5)×0.8 = 0.05
  • S3: 相关性0.75,与S1相似度0.2 → MMR = 0.5×0.75 - 0.5×0.2 = 0.275
  • S4: 相关性0.85,与S1相似度0.3 → MMR = 0.5×0.85 - 0.5×0.3 = 0.275
  • S5: 相关性0.65,与S1相似度0.2 → MMR = 0.5×0.65 - 0.5×0.2 = 0.225

S3和S4得分相同?这里需要进一步区分。假设S4的多样性收益更高,或者原文设定中S4的MMR得分最高,最终选择S4加入S。

集合状态:已选集合{S1, S4},候选集合{S2, S3, S5}。

第二次迭代:计算剩余句子的MMR得分,这次需要计算与S1和S4两者中最相似的相似度。

假设S3的MMR得分最高(0.405),选择S3加入S。

集合状态:已选集合{S1, S4, S3}。

最终选出的三句话为S1、S4、S3。你会看到,系统没有选择相关性最高的S2,因为它与S1太相似了。这一结果体现了MMR在相关性和多样性之间的权衡。

4. MMR 的应用场景

4.1. 信息检索(搜索引擎结果排序)

在搜索引擎中输入“ChatGPT 应用案例”,如果没有MMR,前几条可能全都讲的是“教育场景怎么用ChatGPT”。虽然都相关,但信息单调。

运用MMR后,结果会更有层次:第一条讲教育,第二条讲法律行业,第三条讲开发者集成,第四条讲伦理问题。用户能从不同维度获取信息。

4.2. 问答系统(多候选答案排序)

对于开放性问题,比如“人工智能未来会带来哪些改变?”,MMR能帮忙在众多候选答案中,挑出互补的信息:一个回答强调就业影响,一个强调教育变革,一个聚焦技术潜力……而不是简单地把重复的观点堆在一起。

此外,MMR在推荐系统(避免推相似内容)和文本摘要(避免重复句子)等多个场景中也有广泛应用。

5. 代码测试

# 导入操作系统模块
import os

# 设置OpenAI API密钥
OPENAI_API_KEY = '你的有效密钥'
os.environ['OpenAI_API_KEY'] = OPENAI_API_KEY

from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

texts = [
    "大语言模型(LLM)是基于Transformer架构的深度学习模型。",
    "LLM的核心是Transformer架构,这是一种强大的深度学习技术。",
    "基于Transformer的LLM在自然语言处理任务中表现出色。",
    "LLM通过在海量文本数据上进行预训练来学习语言模式。",
    "预训练使得LLM能够掌握丰富的语言知识和世界常识。",
    "LLM展现出强大的自然语言理解和生成能力。",
    "理解和生成自然语言是LLM的核心功能之一。",
    "像GPT-4这样的LLM可以执行翻译、摘要和问答等多种任务。",
    "LLM在文本翻译、内容摘要和智能问答方面有广泛应用。",
    "人工智能(AI)是一个更广泛的领域,LLM是其中的一个子集。",
    "AI的目标是创造能够像人类一样思考和行动的机器。"
]

embeddings = OpenAIEmbeddings(model="text-embedding-3-large", base_url="https://api.openai-hk.com/v1")
vectorstore = Chroma.from_texts(
    texts=texts,
    embedding=embeddings,
    persist_directory="./chroma_db"
)

query = '什么是大语言模型以及它们能做什么?'

print("========================= 相似度检索 ============================")
t1 = vectorstore.similarity_search(query, k=5)
print(t1)

print("========================= MMR lambda=0.3 ============================")
t2 = vectorstore.max_marginal_relevance_search(query, k=5, fetch_k=10, lambda_mult=0.3)
print(t2)

print("========================= MMR lambda=0.7 ============================")
t3 = vectorstore.max_marginal_relevance_search(query, k=5, fetch_k=10, lambda_mult=0.7)
print(t3)

运行结果:

========================= 相似度检索 =============================
[Document(id='...', metadata={}, page_content='大语言模型(LLM)是基于Transformer架构的深度学习模型。'), 
 Document(id='...', metadata={}, page_content='LLM通过在海量文本数据上进行预训练来学习语言模式。'), 
 Document(id='...', metadata={}, page_content='理解和生成自然语言是LLM的核心功能之一。'), 
 Document(id='...', metadata={}, page_content='LLM展现出强大的自然语言理解和生成能力。'), 
 Document(id='...', metadata={}, page_content='基于Transformer的LLM在自然语言处理任务中表现出色。')]
========================= MMR lambda=0.3 =============================
[Document(id='...', metadata={}, page_content='大语言模型(LLM)是基于Transformer架构的深度学习模型。'), 
 Document(id='...', metadata={}, page_content='LLM展现出强大的自然语言理解和生成能力。'), 
 Document(id='...', metadata={}, page_content='像GPT-4这样的LLM可以执行翻译、摘要和问答等多种任务。'), 
 Document(id='...', metadata={}, page_content='预训练使得LLM能够掌握丰富的语言知识和世界常识。'), 
 Document(id='...', metadata={}, page_content='人工智能(AI)是一个更广泛的领域,LLM是其中的一个子集。')]
========================= MMR lambda=0.7 =============================
[Document(id='...', metadata={}, page_content='大语言模型(LLM)是基于Transformer架构的深度学习模型。'), 
 Document(id='...', metadata={}, page_content='LLM通过在海量文本数据上进行预训练来学习语言模式。'), 
 Document(id='...', metadata={}, page_content='理解和生成自然语言是LLM的核心功能之一。'), 
 Document(id='...', metadata={}, page_content='LLM展现出强大的自然语言理解和生成能力。'), 
 Document(id='...', metadata={}, page_content='像GPT-4这样的LLM可以执行翻译、摘要和问答等多种任务。')]

5.1 标准相似度检索 (Top 5)

这种策略的目标很直接:找出与查询最相似的文档。

结果特点:

  • 高度相关:检索到的文档都与“大语言模型”的定义、架构和能力直接相关。
  • 潜在冗余:部分文档内容相似度较高,比如都提到了Transformer架构或自然语言处理能力。

5.2 MMR检索 (lambda=0.3, k=5, fetch_k=10)

低的lambda值(0.3)更侧重于多样性

结果特点:

  • 平衡性:保留了最相关的文档,同时引入了更多不同角度的信息,比如具体应用、训练方法和与AI的关系。
  • 较低冗余:相比纯相似度检索,重复性明显降低。

5.3 MMR检索 (lambda=0.7, k=5, fetch_k=10)

高的lambda值(0.7)更侧重于相关性

结果特点:

  • 高相关性:结果与标准相似度检索很接近,保留了大部分最相似的文档。
  • 有限多样性:相比lambda=0.3,多样性较低,但仍比纯相似度检索略好一些,引入了关于LLM具体任务的文档。

MMR的核心价值在于提升结果的多样性,确保返回的内容既相关又有足够的信息广度。在推荐系统、摘要生成、问答系统等多个场景中,MMR都能有效避免重复,显著提升用户体验。

热点追踪提示词
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:最大边际相关性MMR提升RAG检索结果多样性与实用性要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
来源:https://www.53ai.com/news/RAG/2025042354863.html
ai 人工智能

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关热点
AI热点2026-07-18 09:17
小米17T Pro影像实测:徕卡动态照片与硬件解析

小米17T系列即将发布,其Pro版本的实拍体验通过官方演示得以展现。新品核心亮点在于全新徕卡Live动态照片功能,支持5倍长焦直出动态画面,并新增拼图玩法,提升了社交分享的趣味性。硬件上,该机搭载5000万像素双OIS影像系统、天玑9500芯片以及7000mAh大电池配百瓦快充,在影像、性能和续航三

AI热点2026-07-18 09:17
汽车博主发布不实言论被判败诉,需向比亚迪致歉

汽车博主“987疯狂奶爸”因发布针对比亚迪及其方程豹豹5车型的不实、贬损言论,被法院判决败诉,需公开道歉。此前,比亚迪已对其提起诉讼,指出其内容损害品牌声誉,相关账号现已被平台封禁。这并非个例,近年来比亚迪已对多名发布不实信息的自媒体发起诉讼并胜诉,包括“龙猪-集车”被判赔201 87万元、“王悟空

AI热点2026-07-18 09:17
我国科学家合成新型工程菌DB1精准靶向消灭实体肿瘤

我国科学家在合成生物学领域取得重大突破,成功构建了一种名为DB1的工程菌,能够精准靶向并消灭实体肿瘤。该研究揭示了细菌通过激活肿瘤内特定的白介素-10免疫通路来杀伤癌细胞,同时利用肿瘤缺氧环境实现特异性定殖,并巧妙逃避免疫清除的核心机制。DB1在多种动物模型中均显示出显著疗效,且相关机制在人类癌症组

AI热点2026-07-18 09:17
今夏国家电网最大用电负荷预计超13亿千瓦相当于美国发电装机总量

国家电网预测,今年夏季其经营区最大用电负荷将突破13亿千瓦,同比增长约6%,电网保供压力增大。为保障电力稳定供应,国家电网正加快保供能力建设,推动跨区域电力交易,促进清洁能源消纳,并加紧建设168项迎峰度夏电网工程。值得注意的是,13亿千瓦的负荷峰值已与美国全国年发电装机总量(约12 4亿千瓦)相当

延伸阅读