Variance 是一个基于 Spring AI 的智能数据分析平台,深度集成多种大语言模型,支持数据导入、AI 增强分析、可视化展示及 RAG 检索增强生成等功能,适合个人学习、技术研究和快速原型开发。
- 多模型支持:原生支持 OpenAI GPT-4、Anthropic Claude、Google Gemini、Ollama 等主流大模型
- 灵活切换:运行时动态切换模型提供商,无需重启服务
- 向量数据库:集成 PGVector、Milvus 等向量存储,支持 RAG 检索增强生成
- Chat Client:Spring AI 高级 ChatClient,支持流式输出、函数调用
- 附件对话:支持上传 PDF、Word、Excel、TXT、Markdown 等多种格式附件进行对话
- 图片对话:支持上传 JPG、PNG、GIF、BMP、WebP 等图片格式进行多模态对话
- 语音输入:支持上传音频文件,使用 Whisper 或 Ollama 进行语音识别
- 多模态支持:文本、图像、PDF、语音等多格式内容解析与处理
- 自动化数据导入:支持Excel、CSV等多格式数据的智能解析与入库
- AI增强清洗:利用大模型进行数据质量检测与自动清洗
- 灵活规则引擎:可自定义数据处理规则,满足多样化业务需求
- 智能报表生成:基于大语言模型自动生成数据分析报告
- 趋势预测:结合机器学习算法进行业务趋势预测
- 异常检测:AI驱动的异常数据自动识别与告警
- 广告效果分析:智能评估广告投放ROI与优化建议
- 动态仪表盘:实时数据可视化,多维度业务监控
- 智能图表推荐:根据数据特征自动推荐最佳可视化方式
- 交互式分析:支持下钻、联动、筛选等丰富的交互功能
- 爬虫数据集成:支持多源数据的自动采集与整合
- 定时任务调度:灵活的任务调度与自动化工作流
- 导出与分享:一键导出精美报表,支持多格式输出
- 后端框架:Spring Boot 3.2.5 + Spring AI 1.0.0-M5 + JDK 17
- 持久层:MyBatis-Plus 3.5.5
- AI框架:Spring AI (OpenAI、Anthropic、Google Gemini、Ollama、PGVector)
- 文档API:SpringDoc OpenAPI 3.0
- 工具生态:Hutool 5.8.26、Apache POI 5.2.5
- 对象映射:MapStruct 1.1.0
┌─────────────────────────────────────────────────────────────────────┐
│ 前端展示层 │
│ (Web UI / 数据大屏 / 移动端 / AI 智能助手) │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ API 网关层 │
│ (路由转发 / 权限控制 / 流量控制 / API 管理) │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ 业务服务层 │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 数据分析服务 │ │ AI 智能服务 │ │ 报表引擎服务 │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ RAG 检索服务 │ │ 向量存储服务 │ │
│ └──────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ 数据存储层 │
│ (MySQL / Redis / PGVector / 向量数据库 / 文件存储 / 对象存储) │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ AI 模型层 │
│ (OpenAI GPT-4 / Claude 3 / Llama 3 / 自定义模型) │
└─────────────────────────────────────────────────────────────────────┘
variance/
├── variance-web # Web 入口模块
├── variance-service # 核心服务模块
├── data-analysis # 数据分析模块
│ ├── 业务报表分析
│ ├── 商品信息管理
│ ├── 广告投放分析
│ ├── 数据导出服务
│ └── AI 分析服务 (Spring AI 集成)
└── ai-service # AI 智能服务模块
├── Chat 对话服务
├── RAG 检索增强生成
├── 向量存储管理
├── 数据分析 AI 服务
└── 多模态文档处理
- 自定义Excel导入与导出
- 数据落库与规则化展示
- 基础报表生成能力
- 升级至 Spring Boot 3.2.5 + JDK 17
- 集成 Spring AI 1.0.0-M5
- 创建独立的 AI 服务模块
- 支持 OpenAI GPT-4 大模型
- 集成 PGVector 向量数据库
- 实现 RAG 检索增强生成
- Swagger → SpringDoc OpenAPI 3.0
- 多模型支持 (OpenAI、Anthropic、Gemini、Ollama)
- 运行时模型动态切换
- 附件对话功能 (PDF、Word、Excel、TXT、Markdown)
- 图片对话功能 (JPG、PNG、GIF、BMP、WebP)
- 语音输入功能 (Whisper、Ollama 语音识别)
- AI智能报表生成
- 数据趋势预测
- 异常检测与告警
- 多模态数据支持
- 函数调用与工具集成
- 社区模板市场
- AI Assistant 智能助手
- 开放 API 生态
- 更多数据源接入
- 部署方案完善
- JDK 17+
- Maven 3.8+
- MySQL 8.0+
- PostgreSQL 15+ (用于 PGVector)
spring:
ai:
openai:
api-key: ${OPENAI_API_KEY:}
chat:
options:
model: gpt-4
temperature: 0.7
embedding:
options:
model: text-embedding-ada-002
anthropic:
api-key: ${ANTHROPIC_API_KEY:}
chat:
options:
model: claude-3-opus-20240229
vertex-ai:
gemini:
api-key: ${GEMINI_API_KEY:}
chat:
options:
model: gemini-pro
ollama:
base-url: ${OLLAMA_BASE_URL:http://localhost:11434}
chat:
options:
model: llama3
vectorstore:
pgvector:
jdbc-url: jdbc:postgresql://localhost:5432/vector_db
username: postgres
password: postgres# 查看当前模型
GET /api/ai/model/current
# 查看可用模型列表
GET /api/ai/model/available
# 切换到 OpenAI GPT-4
POST /api/ai/model/switch/openai?modelName=gpt-4
# 切换到 Anthropic Claude
POST /api/ai/model/switch/anthropic?modelName=claude-3-opus-20240229
# 切换到 Google Gemini
POST /api/ai/model/switch/gemini?modelName=gemini-pro
# 切换到 Ollama 本地模型
POST /api/ai/model/switch/ollama?modelName=llama3&baseUrl=http://localhost:11434
# 自定义模型配置
POST /api/ai/model/switch/custom
Content-Type: application/json
{
"provider": "openai",
"modelName": "gpt-4",
"temperature": 0.7,
"maxTokens": 2048,
"apiKey": "your-custom-api-key",
"baseUrl": "https://your-custom-endpoint.com"
}POST /api/ai/chat- 基础对话POST /api/ai/chat/system- 带系统提示的对话POST /api/ai/chat/attachment- 带附件的对话POST /api/ai/chat/attachment/system- 带附件和系统提示的对话POST /api/ai/chat/image- 带图片的对话POST /api/ai/chat/image/system- 带图片和系统提示的对话GET /api/ai/chat/supported-formats- 获取支持的文件格式
# 查看支持的文件格式
GET /api/ai/chat/supported-formats
# 上传附件并对话 (PDF/Word/Excel/TXT/MD)
POST /api/ai/chat/attachment
Content-Type: multipart/form-data
Form-Data:
message: "请总结这个文档的主要内容"
file: @document.pdf
# 带系统提示的附件对话
POST /api/ai/chat/attachment/system
Content-Type: multipart/form-data
Form-Data:
systemPrompt: "你是一位专业的数据分析师"
message: "请分析这个Excel表格中的数据"
file: @data.xlsx# 上传图片并对话 (JPG/PNG/GIF/BMP/WebP)
POST /api/ai/chat/image
Content-Type: multipart/form-data
Form-Data:
message: "请描述这张图片的内容"
file: @photo.jpg
# 带系统提示的图片对话
POST /api/ai/chat/image/system
Content-Type: multipart/form-data
Form-Data:
systemPrompt: "你是一位专业的图像识别专家"
message: "请识别这张图片中的物体"
file: @image.pngPOST /api/ai/rag/documents- 添加文档到向量库POST /api/ai/rag/query- RAG 智能问答
POST /api/analysis/ai/report- 生成 AI 分析报告POST /api/analysis/ai/ad-performance- 广告效果分析POST /api/analysis/ai/forecast- 销售预测
- Swagger UI:
http://localhost:8080/swagger-ui.html - OpenAPI JSON:
http://localhost:8080/api-docs
我们欢迎任何形式的贡献!无论是提交Issue、改进文档还是贡献代码。
本项目采用 Apache License 2.0 许可证 - 详见 LICENSE 文件
用数据驱动决策,让AI赋能未来 | Powered by Spring AI