Weaviate 上线 Diversity Ranking:一个参数解决检索结果同质化
Weaviate 推出 Diversity Ranking 功能,针对向量搜索、BM25 和 cross-encoder 都存在的同一问题:每篇文档只按与 query 的相关性打分,返回的 top-k 结果常常高度重复,比如问"史上最伟大运动员"会得到五名篮球运动员。其实现基于经典的 Maximal Marginal Relevance(MMR)算法,在每一步选择时同时权衡候选结果与 query 的相关性,以及与已选结果的相异度,让结果列表覆盖整个主题而非单一角落。使用上只需设置一个参数:Weaviate 的 search 层支持 diversity_weight,取值 0.0 到 1.0,越接近 0 越偏重相关性,越接近 1 越偏重多样性;qa.search 接口可直接传入 diversity_weight=0.5;Query Agent 中则在向量或混合查询上加 diversity_selection=Diversity.mmr(...),其中 balance 参数方向相反(0.0 偏多样性、1.0 偏相关性)。此前开发者要自己实现多样性重排,需要超额取回大候选池、做候选间相似度检测、编写并调优独立的 reranking 阶段、长期维护这套流水线代码,现在这些步骤被收敛为一个参数配置。
Current read
做 RAG 或搜索的人应该都有过返回五条几乎一样的结果的体验,Weaviate 把 MMR 多样性重排做成了一个 diversity_weight 参数,省掉自己写 rerank 流水线。和自己手搓方案比配置成本低很多,值得在你的检索链路里试一下 0.5 左右的取值。
Evidence
3 sourcesConflict check
Dedup data only shows that these sources discuss the same event, not that they agree. There is no structured supporting or refuting evidence yet, so no conflict is inferred automatically.