diff --git a/llama-index-core/llama_index/core/retrievers/fusion_retriever.py b/llama-index-core/llama_index/core/retrievers/fusion_retriever.py index d5de8373b12528e7ba83f1dc5a4d3ccc559291ad..d1425fcc9a4e60126f3ca277587c720fab7d3be2 100644 --- a/llama-index-core/llama_index/core/retrievers/fusion_retriever.py +++ b/llama-index-core/llama_index/core/retrievers/fusion_retriever.py @@ -130,7 +130,11 @@ class QueryFusionRetriever(BaseRetriever): for nodes_with_scores in results.values(): for node_with_score in nodes_with_scores: text = node_with_score.node.get_content() - all_nodes[text] = node_with_score + if text in all_nodes: + max_score = max(node_with_score.score, all_nodes[text].score) + all_nodes[text].score = max_score + else: + all_nodes[text] = node_with_score return sorted(all_nodes.values(), key=lambda x: x.score or 0.0, reverse=True) diff --git a/llama-index-legacy/llama_index/legacy/retrievers/fusion_retriever.py b/llama-index-legacy/llama_index/legacy/retrievers/fusion_retriever.py index 8b9f2859307f10a556bb56b73f2105356df53bc2..caa900bacf9f775d4df278be4a8aa302ae903f0a 100644 --- a/llama-index-legacy/llama_index/legacy/retrievers/fusion_retriever.py +++ b/llama-index-legacy/llama_index/legacy/retrievers/fusion_retriever.py @@ -127,7 +127,11 @@ class QueryFusionRetriever(BaseRetriever): for nodes_with_scores in results.values(): for node_with_score in nodes_with_scores: text = node_with_score.node.get_content() - all_nodes[text] = node_with_score + if text in all_nodes: + score = max(node_with_score.score, all_nodes[text].score) + all_nodes[text].score = score + else: + all_nodes[text] = node_with_score return sorted(all_nodes.values(), key=lambda x: x.score or 0.0, reverse=True)