# springai **Repository Path**: dlp/springai ## Basic Information - **Project Name**: springai - **Description**: springai1.1.2+openai,阿里百炼,ollama,RGA内存向量,记忆对话的示例代码 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-30 - **Last Updated**: 2026-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring RAG 基于 Spring AI 1.1.2 的 RAG 应用,支持阿里百炼/通义千问、OpenAI 兼容 API、Ollama 多端 AI 接入,使用 Redis 向量存储实现知识库管理与带记忆对话。 ## 技术栈 - Java 17 - Spring Boot 3.5.5 - Spring AI 1.1.2 - Maven - Redis 6.2+(需 RedisSearch 模块) ## 功能特性 - **多模型支持**:阿里百炼(通义千问)、OpenAI 兼容 API、Ollama 本地模型 - **RAG 知识库**:文档上传、向量化存储、相似性检索 - **对话记忆**:基于 sessionId 的上下文记忆 - **流式响应**:SSE 流式输出 - **向量存储**:Redis Vector Store (RedisSearch) - **MCP 服务**:日志查询、指标查询 MCP 工具 - **Function Calling**:航班预订数据查询示例 ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.8+ - Redis 6.2+(需启用 RedisSearch 模块) ### 配置 修改 `yhk-core-service/src/main/resources/application.yml`: ```yaml spring: data: redis: host: your-redis-host port: 6379 password: your-password # 按需配置 ai: openai: base-url: https://dashscope.aliyuncs.com/compatible-mode api-key: your-api-key ``` ### 构建运行 ```bash # 构建 mvn clean package # 运行 mvn spring-boot:run ``` 服务启动后访问 http://localhost:8080 ## API 接口 ### 对话接口 | 接口 | 方法 | 说明 | |------|------|------| | `/ai/chat` | GET | 同步问答 | | `/ai/generateStreamAsString` | GET | 流式对话(带 RAG + 记忆) | | 参数 | `message` | 问题内容 | | 参数 | `sessionId` | 会话 ID(用于记忆) | ### Ollama 接口 | 接口 | 方法 | 说明 | |------|------|------| | `/ollama/chat` | GET | Ollama 对话 | | `/ollama/chatStream` | GET | Ollama 流式对话 | | `/ollama/embedding` | GET | Ollama 向量化 | | 参数 | `message` | 消息内容 | ### 知识库接口 | 接口 | 方法 | 说明 | |------|------|------| | `/knowledge/file/upload` | POST | 上传文档到知识库 | | `/knowledge/test` | GET | 初始化测试数据 | | `/knowledge/page` | GET | 分页查询知识库文档 | ### 向量管理接口 | 接口 | 方法 | 说明 | |------|------|------| | `/redis/vector/add` | GET | 添加向量文档 | | `/redis/vector/search` | GET | 相似性搜索 | | `/redis/vector/update/{id}` | GET | 更新文档 | | `/redis/vector/del/{id}` | GET | 删除文档 | ### Swagger 文档 访问 http://localhost:8080/swagger-ui.html ### 预订数据接口 | 接口 | 方法 | 说明 | |------|------|------| | `/booking/list` | GET | 获取航班预订列表 | ## 项目结构 ``` spring-rag/ ├── yhk-core-service/ # 核心服务模块 │ └── src/main/java/com/yhk/yhk/springai/ │ ├── controller/ # REST 接口 │ ├── service/ # 业务逻辑 │ ├── entity/ # 实体类 │ ├── pojo/ # 请求/响应对象 │ ├── data/ # 数据模型 │ ├── config/ # 配置类 │ └── utils/ # 工具类 └── yhk-mcp-server/ # MCP 服务模块 ├── yhk-mcp-log-service/ # 日志查询服务 └── yhk-mcp-metrics-service/ # 指标查询服务 ``` ## 开发指南 ### 单测命令 ```bash # 运行单个测试类 mvn test -Dtest=MyTestClass # 运行单个测试方法 mvn test -Dtest=MyTestClass#myTestMethod ``` ### 代码规范 - 缩进:4 空格 - 行长:≤120 字符 - 导入顺序:java.* → org.* → com.yhk.* ### 注意事项 1. Redis 需 ≥6.2.19 且启用 RedisSearch 模块 2. API Key 以 `sk-` 开头(阿里百炼要求) 3. 文件上传:单文件 ≤100MB,请求 ≤200MB 4. 向量维度需与嵌入模型匹配(text-embedding-v2=1536)