Class BaseSchemaService

java.lang.Object
com.alibaba.cloud.ai.service.base.BaseSchemaService
Direct Known Subclasses:
AnalyticSchemaService, SimpleSchemaService

public abstract class BaseSchemaService extends Object
Schema 服务基类,提供共同的方法实现
  • Field Details

    • dbConfig

      protected final DbConfig dbConfig
    • gson

      protected final com.google.gson.Gson gson
    • vectorStoreService

      protected final BaseVectorStoreService vectorStoreService
      向量存储服务
  • Constructor Details

  • Method Details

    • mixRag

      public SchemaDTO mixRag(String query, List<String> keywords)
      基于 RAG 构建 schema
      Parameters:
      query - 查询
      keywords - 关键词列表
      Returns:
      SchemaDTO
    • mixRagForAgent

      public SchemaDTO mixRagForAgent(String agentId, String query, List<String> keywords)
      基于 RAG 构建 schema - 支持智能体隔离
      Parameters:
      agentId - 智能体ID
      query - 查询
      keywords - 关键词列表
      Returns:
      SchemaDTO
    • buildSchemaFromDocuments

      public void buildSchemaFromDocuments(List<List<org.springframework.ai.document.Document>> columnDocumentList, List<org.springframework.ai.document.Document> tableDocuments, SchemaDTO schemaDTO)
    • getTableDocuments

      public List<org.springframework.ai.document.Document> getTableDocuments(String query)
      根据关键词获取所有表文档
    • 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

      protected abstract void addColumnsDocument(Map<String,org.springframework.ai.document.Document> weightedColumns, String columnName, String vectorType)
    • 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

      protected Map<String,Object> getTableMetadata(String tableName)
      获取表元数据
      Parameters:
      tableName - 表名
      Returns:
      表元数据
    • extractDatabaseName

      public void extractDatabaseName(SchemaDTO schemaDTO)
      提取数据库名称
      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)