Procházet zdrojové kódy

v0.0.3-调试-debug
- 修复多路召回响应格式

WangXuMing před 2 měsíci
rodič
revize
d98eb87dea
1 změnil soubory, kde provedl 23 přidání a 3 odebrání
  1. 23 3
      foundation/ai/rag/retrieval/retrieval.py

+ 23 - 3
foundation/ai/rag/retrieval/retrieval.py

@@ -150,7 +150,7 @@ class RetrievalManager:
                 top_k=top_k
             )
 
-            # 为重排序结果添加混合搜索的原始元数据,只保留text_content和metadata
+            # 为重排序结果添加混合搜索的原始元数据,优化metadata结构
             final_results = []
             for rerank_result in rerank_results:
                 # 使用正确的原始索引进行元数据映射
@@ -158,10 +158,30 @@ class RetrievalManager:
                 if original_index < len(hybrid_results):
                     original_metadata = hybrid_results[original_index].get('metadata', {})
 
-                    # 只输出text_content和metadata
+                    # 提取内层metadata并移除重复的content
+                    optimized_metadata = original_metadata.copy()
+
+                    # 如果内层有metadata字段,将其提取到外层
+                    if 'metadata' in optimized_metadata and isinstance(optimized_metadata['metadata'], str):
+                        import json
+                        try:
+                            # 解析JSON格式的metadata
+                            inner_metadata = json.loads(optimized_metadata['metadata'])
+                            optimized_metadata.update(inner_metadata)
+                            # 移除内层的metadata字符串,避免重复
+                            del optimized_metadata['metadata']
+                        except (json.JSONDecodeError, TypeError):
+                            # 如果解析失败,保持原样
+                            pass
+
+                    # 移除重复的content字段
+                    if 'content' in optimized_metadata:
+                        del optimized_metadata['content']
+
+                    # 输出优化后的结果
                     final_result = {
                         'text_content': rerank_result['text_content'],
-                        'metadata': original_metadata
+                        'metadata': optimized_metadata
                     }
                     final_results.append(final_result)