|
|
|
@@ -70,7 +70,20 @@ class KnowledgeRetrievalNode(BaseNode[KnowledgeRetrievalNodeData]): |
|
|
|
|
|
|
|
except KnowledgeRetrievalNodeError as e: |
|
|
|
logger.warning("Error when running knowledge retrieval node") |
|
|
|
return NodeRunResult(status=WorkflowNodeExecutionStatus.FAILED, inputs=variables, error=str(e)) |
|
|
|
return NodeRunResult( |
|
|
|
status=WorkflowNodeExecutionStatus.FAILED, |
|
|
|
inputs=variables, |
|
|
|
error=str(e), |
|
|
|
error_type=type(e).__name__, |
|
|
|
) |
|
|
|
# Temporary handle all exceptions from DatasetRetrieval class here. |
|
|
|
except Exception as e: |
|
|
|
return NodeRunResult( |
|
|
|
status=WorkflowNodeExecutionStatus.FAILED, |
|
|
|
inputs=variables, |
|
|
|
error=str(e), |
|
|
|
error_type=type(e).__name__, |
|
|
|
) |
|
|
|
|
|
|
|
def _fetch_dataset_retriever(self, node_data: KnowledgeRetrievalNodeData, query: str) -> list[dict[str, Any]]: |
|
|
|
available_datasets = [] |
|
|
|
@@ -160,18 +173,18 @@ class KnowledgeRetrievalNode(BaseNode[KnowledgeRetrievalNodeData]): |
|
|
|
reranking_model = None |
|
|
|
weights = None |
|
|
|
all_documents = dataset_retrieval.multiple_retrieve( |
|
|
|
self.app_id, |
|
|
|
self.tenant_id, |
|
|
|
self.user_id, |
|
|
|
self.user_from.value, |
|
|
|
available_datasets, |
|
|
|
query, |
|
|
|
node_data.multiple_retrieval_config.top_k, |
|
|
|
node_data.multiple_retrieval_config.score_threshold, |
|
|
|
node_data.multiple_retrieval_config.reranking_mode, |
|
|
|
reranking_model, |
|
|
|
weights, |
|
|
|
node_data.multiple_retrieval_config.reranking_enable, |
|
|
|
app_id=self.app_id, |
|
|
|
tenant_id=self.tenant_id, |
|
|
|
user_id=self.user_id, |
|
|
|
user_from=self.user_from.value, |
|
|
|
available_datasets=available_datasets, |
|
|
|
query=query, |
|
|
|
top_k=node_data.multiple_retrieval_config.top_k, |
|
|
|
score_threshold=node_data.multiple_retrieval_config.score_threshold, |
|
|
|
reranking_mode=node_data.multiple_retrieval_config.reranking_mode, |
|
|
|
reranking_model=reranking_model, |
|
|
|
weights=weights, |
|
|
|
reranking_enable=node_data.multiple_retrieval_config.reranking_enable, |
|
|
|
) |
|
|
|
dify_documents = [item for item in all_documents if item.provider == "dify"] |
|
|
|
external_documents = [item for item in all_documents if item.provider == "external"] |