Class BaseSchemaService
java.lang.Object
com.alibaba.cloud.ai.service.base.BaseSchemaService
- Direct Known Subclasses:
AnalyticSchemaService,SimpleSchemaService
Schema 服务基类,提供共同的方法实现
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final DbConfigprotected final com.google.gson.Gsonprotected final BaseVectorStoreService向量存储服务 -
Constructor Summary
ConstructorsConstructorDescriptionBaseSchemaService(DbConfig dbConfig, com.google.gson.Gson gson, BaseVectorStoreService vectorStoreService) -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract voidaddColumnsDocument(Map<String, org.springframework.ai.document.Document> weightedColumns, String columnName, String vectorType) protected abstract voidaddTableDocument(List<org.springframework.ai.document.Document> tableDocuments, String tableName, String vectorType) 添加缺失的表文档protected voidattachColumnsToTables(Map<String, org.springframework.ai.document.Document> weightedColumns, List<TableDTO> tableList) 将列文档附加到对应的表中voidbuildSchemaFromDocuments(List<List<org.springframework.ai.document.Document>> columnDocumentList, List<org.springframework.ai.document.Document> tableDocuments, SchemaDTO schemaDTO) buildTableListFromDocuments(List<org.springframework.ai.document.Document> documents) 从文档构建表列表voidextractDatabaseName(SchemaDTO schemaDTO) 提取数据库名称extractForeignKeyRelations(List<org.springframework.ai.document.Document> tableDocuments) 提取外键关系getColumnDocumentsByKeywords(List<String> keywords) 根据关键词获取所有列文档getColumnDocumentsByKeywords(List<String> keywords, String agentId) 根据关键词获取所有列文档 - 支持智能体隔离getColumnDocumentsByKeywordsForAgent(String agentId, List<String> keywords) 为指定智能体根据关键词获取所有列文档List<org.springframework.ai.document.Document>getTableDocuments(String query) 根据关键词获取所有表文档List<org.springframework.ai.document.Document>getTableDocuments(String query, String agentId) 根据关键词获取所有表文档 - 支持智能体隔离List<org.springframework.ai.document.Document>getTableDocumentsForAgent(String agentId, String query) 为指定智能体根据关键词获取所有表文档getTableMetadata(String tableName) 获取表元数据protected voidhandleDocumentQuery(List<org.springframework.ai.document.Document> targetList, String key, String vectorType, Function<String, SearchRequest> requestBuilder, Function<SearchRequest, List<org.springframework.ai.document.Document>> searchFunc) 通用文档查询处理模板,减少子类冗余代码。protected voidhandleDocumentQuery(Map<String, org.springframework.ai.document.Document> targetMap, String key, String vectorType, Function<String, SearchRequest> requestBuilder, Function<SearchRequest, List<org.springframework.ai.document.Document>> searchFunc) 基于 RAG 构建 schemamixRagForAgent(String agentId, String query, List<String> keywords) 基于 RAG 构建 schema - 支持智能体隔离voidprocessColumnWeights(List<List<org.springframework.ai.document.Document>> columnDocuments, List<org.springframework.ai.document.Document> tableDocuments) 给每个列打分(结合其所在表的评分)selectWeightedColumns(List<List<org.springframework.ai.document.Document>> columnDocumentList, int maxCount) 按照权重选取最多 maxCount 个列
-
Field Details
-
dbConfig
-
gson
protected final com.google.gson.Gson gson -
vectorStoreService
向量存储服务
-
-
Constructor Details
-
BaseSchemaService
public BaseSchemaService(DbConfig dbConfig, com.google.gson.Gson gson, BaseVectorStoreService vectorStoreService)
-
-
Method Details
-
mixRag
基于 RAG 构建 schema- Parameters:
query- 查询keywords- 关键词列表- Returns:
- SchemaDTO
-
mixRagForAgent
基于 RAG 构建 schema - 支持智能体隔离- Parameters:
agentId- 智能体IDquery- 查询keywords- 关键词列表- Returns:
- SchemaDTO
-
buildSchemaFromDocuments
-
getTableDocuments
根据关键词获取所有表文档 -
getTableDocuments
public List<org.springframework.ai.document.Document> getTableDocuments(String query, String agentId) 根据关键词获取所有表文档 - 支持智能体隔离 -
getTableDocumentsForAgent
public List<org.springframework.ai.document.Document> getTableDocumentsForAgent(String agentId, String query) 为指定智能体根据关键词获取所有表文档 -
getColumnDocumentsByKeywords
public List<List<org.springframework.ai.document.Document>> getColumnDocumentsByKeywords(List<String> keywords) 根据关键词获取所有列文档 -
getColumnDocumentsByKeywords
public List<List<org.springframework.ai.document.Document>> getColumnDocumentsByKeywords(List<String> keywords, String agentId) 根据关键词获取所有列文档 - 支持智能体隔离 -
getColumnDocumentsByKeywordsForAgent
public List<List<org.springframework.ai.document.Document>> getColumnDocumentsByKeywordsForAgent(String agentId, List<String> keywords) 为指定智能体根据关键词获取所有列文档 -
addTableDocument
protected abstract void addTableDocument(List<org.springframework.ai.document.Document> tableDocuments, String tableName, String vectorType) 添加缺失的表文档- Parameters:
tableDocuments-tableName-vectorType-
-
addColumnsDocument
-
selectWeightedColumns
protected Map<String,org.springframework.ai.document.Document> selectWeightedColumns(List<List<org.springframework.ai.document.Document>> columnDocumentList, int maxCount) 按照权重选取最多 maxCount 个列 -
buildTableListFromDocuments
protected List<TableDTO> buildTableListFromDocuments(List<org.springframework.ai.document.Document> documents) 从文档构建表列表- Parameters:
documents- 文档列表- Returns:
- 表列表
-
processColumnWeights
public void processColumnWeights(List<List<org.springframework.ai.document.Document>> columnDocuments, List<org.springframework.ai.document.Document> tableDocuments) 给每个列打分(结合其所在表的评分) -
extractForeignKeyRelations
protected Set<String> extractForeignKeyRelations(List<org.springframework.ai.document.Document> tableDocuments) 提取外键关系- Parameters:
tableDocuments- 表文档列表- Returns:
- 外键关系集合
-
attachColumnsToTables
protected void attachColumnsToTables(Map<String, org.springframework.ai.document.Document> weightedColumns, List<TableDTO> tableList) 将列文档附加到对应的表中 -
getTableMetadata
获取表元数据- Parameters:
tableName- 表名- Returns:
- 表元数据
-
extractDatabaseName
提取数据库名称- Parameters:
schemaDTO- SchemaDTO
-
handleDocumentQuery
protected void handleDocumentQuery(List<org.springframework.ai.document.Document> targetList, String key, String vectorType, Function<String, SearchRequest> requestBuilder, Function<SearchRequest, List<org.springframework.ai.document.Document>> searchFunc) 通用文档查询处理模板,减少子类冗余代码。 -
handleDocumentQuery
protected void handleDocumentQuery(Map<String, org.springframework.ai.document.Document> targetMap, String key, String vectorType, Function<String, SearchRequest> requestBuilder, Function<SearchRequest, List<org.springframework.ai.document.Document>> searchFunc)
-