DataAgent 快速开始 | Spring AI Alibaba
跳到主要内容

项目简介

这是一个基于Spring AI Alibaba的自然语言转SQL项目,能让你用自然语言直接查询数据库,不需要写复杂的SQL。

Github repository: https://github.com/spring-ai-alibaba/dataagent

项目结构

这个项目分为三个部分:

spring-ai-alibaba-data-agent/
├── spring-ai-alibaba-data-agent-management # 管理端(可直接启动的Web应用)
├── spring-ai-alibaba-data-agent-chat # 核心功能(不能独立启动,供集成使用)
└── spring-ai-alibaba-data-agent-common # 公共代码

快速启动

项 目进行本地测试是在spring-ai-alibaba-data-agent-management中进行

1. 业务数据库准备

可以在项目仓库获取测试表和数据:

文件在:spring-ai-alibaba-data-agent-management/src/main/resources/sql,里面有两个文件:schema.sqldata.sql

将表和数据导入到你的MySQL数据库中。

2. 配置

2.1 配置management数据库

spring-ai-alibaba-data-agent-management/src/main/resources/application.yml中配置你的MySQL数据库连接信息。

初始化行为说明:默认开启自动创建表并插入示例数据(spring.sql.init.mode: always)。生产环境建议关闭,避免示例数据回填覆盖你的业务数据。

spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/saa_data_agent?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowMultiQueries=true&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai
username: ${MYSQL_USERNAME:root}
password: ${MYSQL_PASSWORD:root}
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource

2.2 可选:启用/关闭自动初始化(schema.sql + data.sql)

  • 默认配置:application.yml 中已设置为开启
spring:
sql:
init:
mode: always # 默认:每次启动执行 schema.sql 与 data.sql
schema-locations: classpath:sql/schema.sql
data-locations: classpath:sql/data.sql
  • 若不希望每次启动回填示例数据,可将 mode 改为 never 关闭:
spring:
sql:
init:
mode: never # 关闭自动初始化
schema-locations: classpath:sql/schema.sql
data-locations: classpath:sql/data.sql

注意:默认开启时(mode: always),data.sql 会在每次启动回填示例数据(即使你手动删除了数据)。生产环境请改为 mode: never,避免覆盖/复原业务数据。

2.3 配置 API Key

spring:
ai:
dashscope:
api-key: ${AI_DASHSCOPE_API_KEY}
chat:
enabled: true
options:
model: qwen-plus
embedding:
enabled: true
options:
model: text-embedding-v4

推荐将API Key配置到环境变量中,并使用${AI_DASHSCOPE_API_KEY}引用。

2.4 嵌入模型批处理策略配置

属性说明默认值
spring.ai.alibaba.data-agent.embedding-batch.encoding-type文本编码类型,可参考com.knuddels.jtokkit.api.EncodingTypecl100k_base
spring.ai.alibaba.data-agent.embedding-batch.max-token-count每批次最大令牌数 值越小,每批次文档越少,但更安全 值越大,处理效率越高,但可能超出API限制 建议值:2000-8000,根据实际API限制调整2000
spring.ai.alibaba.data-agent.embedding-batch.reserve-percentage预留百分比 用于预留缓冲空间,避免超出限制 建议值:0.1-0.2(10%-20%)0.2
spring.ai.alibaba.data-agent.embedding-batch.max-text-count每批次最大文本数量 适用于DashScope等有文本数量限制的API DashScope限制为1010

2.5 向量库配置