From 958081108a82d2ed36ebdd8519f9eedd4360b85a Mon Sep 17 00:00:00 2001 From: jyong <718720800@qq.com> Date: Mon, 10 Mar 2025 16:42:43 +0800 Subject: [PATCH] fix metadata --- api/core/rag/retrieval/dataset_retrieval.py | 18 ++++++++++-------- .../knowledge_retrieval_node.py | 18 ++++++++++-------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/api/core/rag/retrieval/dataset_retrieval.py b/api/core/rag/retrieval/dataset_retrieval.py index fba7aa4ad5..b52a24dee7 100644 --- a/api/core/rag/retrieval/dataset_retrieval.py +++ b/api/core/rag/retrieval/dataset_retrieval.py @@ -800,14 +800,16 @@ class DatasetRetrieval: filter.get("condition"), filter.get("metadata_name"), filter.get("value"), document_query ) elif metadata_filtering_mode == "manual": - for condition in metadata_filtering_conditions.conditions: - metadata_name = condition.name - expected_value = condition.value - if isinstance(expected_value, str): - expected_value = self._replace_metadata_filter_value(expected_value, inputs) - document_query = self._process_metadata_filter_func( - condition.comparison_operator, metadata_name, expected_value, document_query - ) + if metadata_filtering_conditions: + for condition in metadata_filtering_conditions.conditions: + metadata_name = condition.name + expected_value = condition.value + if expected_value: + if isinstance(expected_value, str): + expected_value = self._replace_metadata_filter_value(expected_value, inputs) + document_query = self._process_metadata_filter_func( + condition.comparison_operator, metadata_name, expected_value, document_query + ) else: raise ValueError("Invalid metadata filtering mode") documnents = document_query.all() diff --git a/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py b/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py index cc88d666af..e935cbb15b 100644 --- a/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py +++ b/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py @@ -300,14 +300,16 @@ class KnowledgeRetrievalNode(LLMNode): filter.get("condition"), filter.get("metadata_name"), filter.get("value"), document_query ) elif node_data.metadata_filtering_mode == "manual": - for condition in node_data.metadata_filtering_conditions.conditions: - metadata_name = condition.name - expected_value = condition.value - if isinstance(expected_value, str): - expected_value = self.graph_runtime_state.variable_pool.convert_template(expected_value).text - document_query = self._process_metadata_filter_func( - condition.comparison_operator, metadata_name, expected_value, document_query - ) + if node_data.metadata_filtering_conditions: + for condition in node_data.metadata_filtering_conditions.conditions: + metadata_name = condition.name + expected_value = condition.value + if expected_value: + if isinstance(expected_value, str): + expected_value = self.graph_runtime_state.variable_pool.convert_template(expected_value).text + document_query = self._process_metadata_filter_func( + condition.comparison_operator, metadata_name, expected_value, document_query + ) else: raise ValueError("Invalid metadata filtering mode") documnents = document_query.all()