Skip to content

引擎 ​

本节介绍 SuperSQL 的引擎接口和抽象类。

SqlEngine ​

SqlEngine 是 SQL 引擎的核心接口,定义了生成和执行 SQL 的基本方法。

接口定义 ​

java
public interface SqlEngine {
    String generateSql(String question);
    List<Map<String, Object>> executeSql(String sql);
    void train(TrainBuilder trainBuilder);
}

方法说明 ​

generateSql ​

根据自然语言问题生成 SQL 查询。

java
String generateSql(String question)

参数:

  • question: 自然语言问题

返回: 生成的 SQL 查询字符串

executeSql ​

执行 SQL 查询并返回结果。

java
List<Map<String, Object>> executeSql(String sql)

参数:

  • sql: 要执行的 SQL 查询

返回: 查询结果列表

train ​

训练数据库表结构或 SQL 示例。

java
void train(TrainBuilder trainBuilder)

参数:

  • trainBuilder: 训练构建器

AbstractSqlEngine ​

AbstractSqlEngine 是 SqlEngine 接口的抽象实现,提供了通用的功能。

主要属性 ​

属性类型说明
chatModelChatModelChat 模型实例
vectorStoreSpringVectorStore向量存储实例
ragEngineSpringRagEngineRAG 引擎实例
resourceLoaderResourceLoader资源加载器
rerankModelRerankModel重排序模型实例
optionsRagOptionsRAG 选项配置

主要方法 ​

setChatModel ​

设置 Chat 模型。

java
protected abstract SqlEngine setChatModel(ChatModel chatModel)

setOptions ​

设置 RAG 选项。

java
protected abstract SqlEngine setOptions(RagOptions options)

setPrompt ​

设置自定义 Prompt。

java
protected abstract SqlEngine setPrompt(SqlpromptBuilder promptBuilder)

RagEngine ​

RagEngine 是 RAG(检索增强生成)引擎接口。

接口定义 ​

java
public interface RagEngine {
    List<Document> retrieve(String query, RagOptions options);
    String generate(String query, List<Document> context);
}

方法说明 ​

retrieve ​

检索相关文档。

java
List<Document> retrieve(String query, RagOptions options)

参数:

  • query: 查询文本
  • options: RAG 选项

返回: 相关文档列表

generate ​

基于检索结果生成 SQL。

java
String generate(String query, List<Document> context)

参数:

  • query: 用户问题
  • context: 检索到的上下文文档

返回: 生成的 SQL 查询

SpringRagEngine ​

SpringRagEngine 是 RagEngine 接口的 Spring 实现。

构造函数 ​

java
public SpringRagEngine(
    ChatModel chatModel,
    SpringVectorStore vectorStore,
    RerankModel rerankModel
)

主要方法 ​

retrieve ​

检索相关文档,支持重排序。

java
public List<Document> retrieve(String query, RagOptions options)

实现细节:

  1. 使用向量存储进行相似性搜索
  2. 如果启用重排序,使用重排序模型重新排序
  3. 根据分数阈值过滤结果

generate ​

使用 Chat 模型生成 SQL。

java
public String generate(String query, List<Document> context)

实现细节:

  1. 构建包含上下文的 Prompt
  2. 调用 Chat 模型生成 SQL
  3. 提取和返回 SQL 查询

使用示例 ​

自定义引擎实现 ​

java
public class CustomSqlEngine extends AbstractSqlEngine {

    @Override
    protected SqlEngine setChatModel(ChatModel chatModel) {
        this.chatModel = chatModel;
        return this;
    }

    @Override
    public String generateSql(String question) {
        List<Document> context = ragEngine.retrieve(question, options);
        return ragEngine.generate(question, context);
    }

    @Override
    public List<Map<String, Object>> executeSql(String sql) {
        return executeService.executeSql(sql);
    }

    @Override
    public void train(TrainBuilder trainBuilder) {
        List<Document> documents = parseDocuments(trainBuilder);
        vectorStore.add(documents);
    }
}

引擎配置 ​

java
@Configuration
public class SqlEngineConfig {

    @Bean
    public SpringSqlEngine sqlEngine(
            IExecuteSqlService executeService,
            ChatModel chatModel,
            SpringVectorStore vectorStore,
            SpringRagEngine ragEngine,
            ResourceLoader resourceLoader,
            RerankModel rerankModel) {
        
        return new SpringSqlEngine(
                executeService,
                chatModel,
                vectorStore,
                ragEngine,
                resourceLoader,
                rerankModel
        );
    }
}

下一步 ​

最近更新

基于 Apache 2.0 许可证发布