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 2512845d..39f583b1 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 ed0acf43..b3d7f334 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 b272906c..8326e60e 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); }