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()