检索前五条都在重复同一段,怎样用 MMR 留出互补材料的位置

2026-10-24

MMR每次同时考虑候选对问题的相关性,以及它与已选材料的最大相似度,按贪心过程挑下一条。这样能让部分重复上下文让位给互补材料,但多样性不等于正确性,候选集中没有答案时也不能靠重排补出证据。

把两种相似度分开看

附件用手工向量表示查询和四条候选。相关性是查询与候选的余弦,冗余性则是候选与已经选中材料的余弦。a与b方向很近,c提供另一方向的信息,d与查询的联系较弱。真实检索可以采用不同的相关性来源,但数值尺度需要先检查;不能把一个任意范围的相关分数与余弦直接相减,再把结果称为通用最优排序。

逐轮记录选择依据

样例采用lambda乘相关性,减去一减lambda乘最大冗余性。第一轮尚无已选材料,冗余项按零处理;之后每选择一条,都重新计算剩余候选对已选集合的最大相似度。mmr-steps.csv记录每轮的候选、相关性、冗余值及最终分数。lambda为1时只看原相关性,lambda为0.5时会给互补方向留出位置,读者可以看到选择究竟在哪一轮变化。

不把低lambda当成越多样越好

附件还列出0.05的极低权重对照,显示过度惩罚相似性可能把偏离问题的材料提前。实际使用应在固定开发问题上检查答案所需证据是否更完整,而不只是统计重复字数下降。若两段内容相似却分别提供不同时间的修订信息,简单排斥相似也可能丢掉关键差别;文本与来源仍需人工核读。

先保证候选本身可用

失败命令加入零向量,余弦无法定义,程序明确停止;向量维数与非有限数值也需要在接入时核对。重排只能选择已经进入候选池的材料,前阶段没有召回的证据不会自动出现。重复内容可能采用不同表达,向量距离也不保证逐字去重。这个下载包演示的是本地算法与选择过程,没有运行嵌入模型或评测真实知识库,lambda也没有普遍适用的固定值。

把重排前后的候选全文并排看,确认新进入的材料确实补上问题所需维度。只看向量会忽略来源新旧、相反结论和适用条件;若两段互相矛盾,应该保留并标出冲突,而不是为了低相似度把其中一段当作多样性奖励。

下载与复现

下载完整样例包,解压到一个新文件夹;也可查看全部文件清单和主脚本。使用Python 3.10或更新版本,在解压目录运行。此脚本只使用标准库,无需安装额外包。

python -B run.py
python -B run.py --negative

先查看主要结果,再修改输入重跑;已有输入会保留,结果写回同目录。边界命令可能故意非零退出,也可能输出明确的不适用状态,按正文说明判断,不把所有非零退出都当成安装故障。

依据与延伸阅读

资料核对日期为2026年10月24日。一手资料1:原始MMR论文以相关性与已选内容相似度的折中进行选择,多样性不保证事实正确。

相关参考2:余弦相似度表达归一化向量点积;零向量需由应用定义处理。

继续阅读:检索都找到了相关段落,怎样比较重要段落是否排在前面;向量值没变但最近结果变了,怎样用小样本选清楚余弦与欧氏距离。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。

加微信,把这一页存到手机上

扫码加站长企业微信,会自动把这一页的链接发给你,方便在手机上接着看。AI 落地卡住了,也可以直接问。

去留微信

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。