@@ -50,8 +50,8 @@ def _get_relevant_documents(self, query: str, **kwargs: Any) -> List[Document]:
5050
5151 Note:
5252 - 每个检索器的结果会被转换为RetrievalResult格式
53- - 支持多种输入格式:Document对象、字典格式、字符串等
54- - 融合后的结果会将score和rank信息保存在Document的metadata中
53+ - 输入只会是Document对象
54+ - 融合后的结果只返回排序好的Document对象
5555 """
5656 top_k = kwargs .get ('top_k' , 10 )
5757
@@ -65,43 +65,12 @@ def _get_relevant_documents(self, query: str, **kwargs: Any) -> List[Document]:
6565 # 转换为RetrievalResult格式
6666 formatted_results = []
6767 for i , doc in enumerate (documents ):
68- if isinstance (doc , Document ):
69- # 如果是Document对象
70- retrieval_result = RetrievalResult (
71- document = doc ,
72- score = getattr (doc , 'score' , 1.0 ),
73- rank = i + 1
74- )
75- elif isinstance (doc , dict ):
76- # 如果返回的是字典格式,需要转换为Document对象
77- content = doc .get ('content' , '' )
78- metadata = doc .get ('metadata' , {})
79- doc_id = doc .get ('id' )
80-
81- document = Document (
82- content = content ,
83- metadata = metadata ,
84- id = doc_id
85- )
86-
87- retrieval_result = RetrievalResult (
88- document = document ,
89- score = doc .get ('score' , 1.0 ),
90- rank = i + 1
91- )
92- else :
93- # 如果是字符串或其他格式,转换为Document对象
94- document = Document (
95- content = str (doc ),
96- metadata = {},
97- id = None
98- )
99-
100- retrieval_result = RetrievalResult (
101- document = document ,
102- score = 1.0 ,
103- rank = i + 1
104- )
68+ # 输入只会是Document对象
69+ retrieval_result = RetrievalResult (
70+ document = doc ,
71+ score = getattr (doc , 'score' , 1.0 ),
72+ rank = i + 1
73+ )
10574 formatted_results .append (retrieval_result )
10675
10776 all_results .append (formatted_results )
@@ -116,16 +85,10 @@ def _get_relevant_documents(self, query: str, **kwargs: Any) -> List[Document]:
11685
11786 fused_results = self .fusion_method .fuse (all_results , top_k )
11887
119- # 转换回Document格式
88+ # 转换回Document格式,只返回排序好的Document对象
12089 documents = []
12190 for result in fused_results :
122- doc = result .document
123- # 将score和rank添加到metadata中以便保留
124- if doc .metadata is None :
125- doc .metadata = {}
126- doc .metadata ['score' ] = result .score
127- doc .metadata ['rank' ] = result .rank
128- documents .append (doc )
91+ documents .append (result .document )
12992
13093 return documents
13194
0 commit comments