在 RAG(检索增强生成)系统中,标准的向量检索(Dense Retrieval)通常只关注相关性(Relevance)。这意味着如果你的知识库中有大量相似的文档(例如多篇关于同一新闻的报道,或者同一概念的重复定义),检索出的 Top-K 结果往往内容高度重复。 这会导致两个问题: 1. 浪费 Context Window:大模型的上下文窗口有限,重复信息挤占了其他潜在有用信息的空间。 2. 误导 LLM:重复信息可能导致模型产生“幻觉”或过分关注某一点,忽略了更全面的视角。 为了解决这个问题,我们需要引入多样性排序(Diversity Ranking)。以下是几种主流的去除冗余、提升多样性的方法: --- 1. 最大边界相关算法 (Maximal Marginal Relevance, MMR) —— 最常用 这是目前 RAG 中最经典、最常用的去重与多样性算法(LangChain 和 LlamaIndex 均内置支持)。 核心思想: 在选择下一个文档时,不仅要看它与Query(查询)的相关性,还要看它与已选文档集的差异性(不相似度)。 公式逻辑: $$ MMR = \arg\...