之前我们开源了SuperSQL,我们经过最多的测试的大模型版本是Azure 的GPT-4o版本。当DeepSeek大火后,我们也尝试了利用本地部署的方式利用deepseek作为SuperSQL的基座,来构建RAG生成SQL。但是效果其实很不理想。因为我们的资源有限,本地部署的方式只能跑7B,14B以及32B。然而nl2sql对于大模型的能力和embedding有一定的要求的。所以如果生成sql的效果不理想不妨试着换个模型试试!
今天我们来看看,通过Gitee AI来免费体验一下DeepSeek的满血版本。再来结合我们的SuperSQL看看效果如何。
开干!!!!
准备大模型
登录Gitee AI:https://ai.gitee.com/serverless-api
选择DeepSeek满血版
点击详情,我们看到目前GiteeAI上可以每天白嫖一百次,那来吧,咔咔一顿梭哈
生成API KEY
新建访问令牌,复制保存好key,我们就可以调用啦!!
好啦,万事俱备只欠东风,上代码!!!!
下载代码
git clone https://gitee.com/guocjsh/supersql-open.git
git clone https://github.com/guocjsh/SuperSQL
进入super-sql-console工程进行配置
配置deepseek大模型基座
目前市面上的大模型都遵循open ai的规则,所以集成deepseek我们只需要选择spring ai下的open ai的包就可以了。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
配置配置文件
spring:
ai:
openai:
base-url: https://ai.gitee.com
api-key: #填在Gitee AI上生成的API KEY
chat:
options:
model: DeepSeek-R1
embedding:
enabled: false
向量数据库配置,我们还是选择最简单的chromadb
启动本地chroma
docker run -it --rm --name chroma -p 8000:8000 ghcr.io/chroma-core/chroma:1.0.0
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
enabled: false
embedding:
enabled: true
options:
model: bge-m3
init:
pull-model-strategy: never
embedding:
additional-models:
- bge-m3
开始写业务代码!!
@Slf4j
@RestController
@RequestMapping("super")
@AllArgsConstructor
public class SuperChatController {
private final OpenAiChatModel chatModel;
private final SpringSqlEngine sqlEngine;
@PostMapping("/chat")
public ResponseBodyEmitter chat(@RequestBody ChatBO chatBO, HttpServletResponse servletResponse) {
ResponseBodyEmitter emitter = new ResponseBodyEmitter();
servletResponse.setContentType(MediaType.TEXT_EVENT_STREAM_VALUE);
String sql = sqlEngine.setChatModel(chatModel).generateSql(chatBO.getQuestion());
Object object = sqlEngine.executeSql(sql);
Flux<ChatResponse> stream = sqlEngine.generateSummary(chatBO.getQuestion(), object.toString());
stream.publishOn(Schedulers.boundedElastic())
.doOnError(emitter::completeWithError)
.doOnComplete(emitter::complete)
.subscribe(data -> {
String text = data.getResult().getOutput().getText();
try {
if(StrUtil.isNotEmpty(text)){
emitter.send(text );
}
} catch (Exception e) {
emitter.completeWithError(e);
}
});
return emitter;
}
}
配置文件配置初始化灌库
super-sql:
init-train: true
启动Super-Sql控制台的Spring Boot项目:
导入Super-Sql UI项目到VSCode:
npm install
npm run dev
访问:http://localhost:5173/chat
复杂场景下的sql生成
可以在向量数据库下添加复杂sql的场景。
下一次他就会举一反三,生成你想要的sql和效果
好啦,我们测试下来,满血版本的deepseek也是能够满足我们SuperSQL的模型要求的!!不愧是国产之光!!!
更新迭代计划
我们接下来会规划在生成sql执行后的基础上生成图表,我们也欢迎大家帮我们提更多的需求
我们鼓励所有用户访问 SuperSql官方文档 来获取更多信息和支持。此外,我们的代码托管在 Gitee,欢迎提出建议和贡献代码!
未来,我们将继续致力于SuperSQL的发展和完善,不断引入新的功能和技术,帮助更多开发者轻松应对复杂的数据库查询挑战。
让我们一起开启数据库查询的新时代吧!立即尝试SuperSQL,体验前所未有的便捷与高效。
关注我们的公众号,获取更多关于Super Sql和其他前沿技术的第一手资讯!
Spring-Ai的官方文档:https://docs.spring.io/spring-ai/docs/getting-started
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。