Browse Source

fix multi retrieval with resource score issue (#1578)

Co-authored-by: jyong <jyong@dify.ai>
Jyong 1 year ago
parent
commit
0d9ce1bab0

+ 6 - 1
api/core/tool/dataset_multi_retriever_tool.py

@@ -80,6 +80,9 @@ class DatasetMultiRetrieverTool(BaseTool):
 
         hit_callback = DatasetIndexToolCallbackHandler(self.conversation_message_task)
         hit_callback.on_tool_end(all_documents)
+        document_score_list = {}
+        for item in all_documents:
+            document_score_list[item.metadata['doc_id']] = item.metadata['score']
 
         document_context_list = []
         index_node_ids = [document.metadata['doc_id'] for document in all_documents]
@@ -120,8 +123,10 @@ class DatasetMultiRetrieverTool(BaseTool):
                             'document_name': document.name,
                             'data_source_type': document.data_source_type,
                             'segment_id': segment.id,
-                            'retriever_from': self.retriever_from
+                            'retriever_from': self.retriever_from,
+                            'score': document_score_list.get(segment.index_node_id, None)
                         }
+
                         if self.retriever_from == 'dev':
                             source['hit_count'] = segment.hit_count
                             source['word_count'] = segment.word_count

+ 3 - 3
api/core/tool/dataset_retriever_tool.py

@@ -196,10 +196,10 @@ class DatasetRetrieverTool(BaseTool):
                                 'document_name': document.name,
                                 'data_source_type': document.data_source_type,
                                 'segment_id': segment.id,
-                                'retriever_from': self.retriever_from
+                                'retriever_from': self.retriever_from,
+                                'score': document_score_list.get(segment.index_node_id, None)
+
                             }
-                            if dataset.indexing_technique != "economy":
-                                source['score'] = document_score_list.get(segment.index_node_id)
                             if self.retriever_from == 'dev':
                                 source['hit_count'] = segment.hit_count
                                 source['word_count'] = segment.word_count