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)