From 7910a0e3111de6ee1042e858a40ec96f8aaf0923 Mon Sep 17 00:00:00 2001 From: luowanghaoyun Date: Fri, 27 Feb 2026 17:27:06 +0800 Subject: [PATCH] fix: schemaRecallNode recall schema information with query --- .../dataagent/service/schema/SchemaServiceImpl.java | 11 +---------- .../service/vectorstore/AgentVectorStoreService.java | 3 +++ .../vectorstore/AgentVectorStoreServiceImpl.java | 10 ++++++++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/schema/SchemaServiceImpl.java b/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/schema/SchemaServiceImpl.java index 2512845dd..39f583b1f 100644 --- a/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/schema/SchemaServiceImpl.java +++ b/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/schema/SchemaServiceImpl.java @@ -39,7 +39,6 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.ai.document.Document; import org.springframework.ai.embedding.BatchingStrategy; -import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.filter.Filter; import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder; import org.springframework.stereotype.Service; @@ -298,15 +297,7 @@ public List getTableDocumentsByDatasource(Integer datasourceId, String Filter.Expression filterExpression = DynamicFilterService.combineWithAnd(conditions); - // 执行向量检索 - SearchRequest searchRequest = SearchRequest.builder() - .query(query) - .topK(tableTopK) - .similarityThreshold(tableThreshold) - .filterExpression(filterExpression) - .build(); - - return agentVectorStoreService.getDocumentsOnlyByFilter(filterExpression, tableTopK); + return agentVectorStoreService.getDocumentsOnlyByFilter(filterExpression, tableTopK, query, tableThreshold); } private List getMissingTableNamesWithForeignKeySet(List tableDocuments, diff --git a/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/vectorstore/AgentVectorStoreService.java b/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/vectorstore/AgentVectorStoreService.java index ed0acf43e..b3d7f334d 100644 --- a/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/vectorstore/AgentVectorStoreService.java +++ b/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/vectorstore/AgentVectorStoreService.java @@ -45,6 +45,9 @@ public interface AgentVectorStoreService { // 通过元数据过滤精确查找 List getDocumentsOnlyByFilter(Filter.Expression filterExpression, Integer topK); + List getDocumentsOnlyByFilter(Filter.Expression filterExpression, Integer topK, String query, + Double similarityThreshold); + boolean hasDocuments(String agentId); void addDocuments(String agentId, List documents); diff --git a/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/vectorstore/AgentVectorStoreServiceImpl.java b/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/vectorstore/AgentVectorStoreServiceImpl.java index b272906cb..8326e60e7 100644 --- a/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/vectorstore/AgentVectorStoreServiceImpl.java +++ b/data-agent-management/src/main/java/com/alibaba/cloud/ai/dataagent/service/vectorstore/AgentVectorStoreServiceImpl.java @@ -229,14 +229,20 @@ public List getDocumentsForAgent(String agentId, String query, String @Override public List getDocumentsOnlyByFilter(Filter.Expression filterExpression, Integer topK) { + return getDocumentsOnlyByFilter(filterExpression, topK, DEFAULT, 0.0); + } + + @Override + public List getDocumentsOnlyByFilter(Filter.Expression filterExpression, Integer topK, String query, + Double similarityThreshold) { Assert.notNull(filterExpression, "filterExpression cannot be null."); if (topK == null) topK = dataAgentProperties.getVectorStore().getDefaultTopkLimit(); SearchRequest searchRequest = SearchRequest.builder() - .query(DEFAULT) + .query(query) .topK(topK) .filterExpression(filterExpression) - .similarityThreshold(0.0) + .similarityThreshold(similarityThreshold) .build(); return vectorStore.similaritySearch(searchRequest); }