# Jane **Repository Path**: curitis/jane ## Basic Information - **Project Name**: Jane - **Description**: # Jane AI - 智能对话与简历分析系统 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2025-08-26 - **Last Updated**: 2025-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Jane AI - 智能对话与简历分析系统 ## 项目简介 Jane AI 是一个基于 Spring Boot 3.5.3 和 Spring AI 1.0.0 构建的智能对话系统,集成了多种AI模型(DeepSeek、OpenAI、阿里云通义千问)和向量数据库(Pinecone),提供智能对话、RAG(检索增强生成)、PDF简历分析和排名等功能。 ## 联系方式 如有问题或建议,请通过以下方式联系:- wx: yxxwhy111111111 ### 前端文件在我主页的另一个仓库中 https://gitee.com/Ee111wang210210/jane_-ai ## 核心功能 ### 🤖 智能对话 - 支持多种AI模型:DeepSeek、OpenAI、阿里云通义千问 - 基于Redis的对话历史记忆功能 - 流式响应,实时返回AI回复 - 支持RAG(检索增强生成)功能 ### 📄 PDF简历分析 - 上传PDF简历文件 - AI智能分析简历内容并评分 - 简历排行榜功能 - 支持简历内容向量化存储 ### 👤 用户管理 - 用户注册/登录 - JWT令牌认证 - 密码加密存储(BCrypt) - 用户权限控制 ### 🔒 高并发保障 - Redis分布式锁防止重复操作 - 请求幂等性控制 - Caffeine本地缓存优化 - 布隆过滤器防刷 ## 技术架构 ### 后端技术栈 - **框架**: Spring Boot 3.5.3 - **AI集成**: Spring AI 1.0.0 - **数据库**: PostgreSQL + MyBatis Plus - **缓存**: Redis + Caffeine - **向量数据库**: Pinecone - **认证**: JWT - **日志**: Log4j2 - **工具**: Hutool、Lombok、FastJSON ### AI模型支持 - **DeepSeek**: deepseek-chat - **阿里云通义千问**: qwen-turbo - **OpenAI**: 兼容模式 - **向量嵌入**: text-embedding-v3 (1024维) ## 环境要求 - Java 17+ - Maven 3.6+ - PostgreSQL 12+ - Redis 6.0+ - 网络访问(用于AI模型API调用) ## 快速开始 ### 1. 环境准备 #### 数据库配置 1. 安装PostgreSQL并创建数据库: ```sql CREATE DATABASE Jane_ai; ``` 2. 执行SQL脚本: ```bash psql -U your_username -d Jane_ai -f sql/Jane_ai.sql ``` #### Redis配置 确保Redis服务正常运行,默认配置: - 主机: - 端口: 6379 - 数据库: 0 ### 2. 配置文件 修改 `src/main/resources/application.yml` 中的配置: ```yaml # 数据库配置 spring: datasource: url: jdbc:postgresql://your_host:5432/Jane_ai?currentSchema=jane_ai username: your_username password: your_password # Redis配置 data: redis: host: your_redis_host port: 6379 password: your_redis_password # AI模型配置 ai: deepseek: api-key: your_deepseek_api_key openai: api-key: your_openai_api_key vectorstore: pinecone: api-key: your_pinecone_api_key index-name: jane project-id: your_project_id environment: your_environment ``` ### 3. 启动应用 ```bash # 编译项目 mvn clean compile # 启动应用 mvn spring-boot:run ``` 应用将在 `http://localhost:8081` 启动 ## API使用指南 ### 用户认证 #### 用户注册 ```http POST /jane/register Content-Type: application/json { "username": "your_username", "password": "your_password" } ``` #### 用户登录 ```http POST /jane/login Content-Type: application/json { "username": "your_username", "password": "your_password" } ``` 返回JWT令牌,后续请求需要在Header中携带: ```http Authorization: Bearer your_jwt_token ``` ### 智能对话 #### 基础对话 ```http GET /api/chat?prompt=你好,请介绍一下自己 ``` #### RAG增强对话(推荐) ```http POST /jane/chat?prompt=根据我的简历,给出求职建议&chatId=unique_chat_id Authorization: Bearer your_jwt_token ``` 参数说明: - `prompt`: 用户输入的问题 - `chatId`: 唯一会话ID,用于维护对话上下文 ### PDF简历分析 #### 上传简历 ```http POST /jane/pdf/upload Content-Type: multipart/form-data Authorization: Bearer your_jwt_token userId: your_user_id chatId: your_chat_id file: [PDF文件] ``` #### 查看简历排行榜 ```http GET /jane/pdf/ranking ``` ### 对话历史 #### 获取对话历史 ```http GET /jane/chat/history?chatId=your_chat_id Authorization: Bearer your_jwt_token ``` ## 核心特性详解 ### RAG(检索增强生成) 系统集成了Pinecone向量数据库,支持: 1. **文档向量化**: 将PDF简历内容转换为1024维向量 2. **语义检索**: 根据用户问题检索相关文档片段 3. **增强回答**: 结合检索到的信息生成更准确的回答 ### 对话记忆功能 - 基于Redis存储对话历史 - 支持多轮对话上下文维护 - 自动生成对话标题 - 支持对话历史查询 ### 安全与性能 #### 防刷机制 - **幂等控制**: 防止重复提交(5秒内相同请求) - **布隆过滤器**: 防止恶意注册/登录 - **分布式锁**: 防止并发冲突 - **限流控制**: PDF上传5分钟内只能操作一次 #### 缓存优化 - **Caffeine本地缓存**: 热点数据缓存 - **Redis分布式缓存**: 跨节点数据共享 - **多级缓存**: 提升响应速度 ## 监控与日志 ### 日志配置 - 使用Log4j2进行日志管理 - 日志文件位置: `logs/` - 支持按日期滚动和压缩 ### 应用监控 - 支持Spring Boot Actuator - 可集成Prometheus + Grafana - 提供健康检查端点 ### 生产环境配置 1. **数据库连接池优化** 2. **Redis集群配置** 3. **AI API密钥安全管理** 4. **负载均衡配置** 5. **SSL证书配置** ## 常见问题 ### Q: AI模型响应慢怎么办? A: 1. 检查网络连接 2. 确认API密钥有效 3. 考虑使用本地模型(如Ollama) 4. 启用缓存机制 ### Q: PDF上传失败? A: 1. 检查文件大小限制 2. 确认PDF格式正确 3. 查看服务器日志 4. 验证用户权限 ### Q: 对话历史丢失? A: 1. 检查Redis连接 2. 确认chatId唯一性 3. 验证JWT令牌有效性 ### Q: 向量检索不准确? A: 1. 检查Pinecone配置 2. 确认文档已正确向量化 3. 调整检索参数 4. 优化文档分块策略 ## 开发指南 ### 项目结构 ``` src/main/java/com/common/jane_ai/ ├── controller/ # 控制器层 ├── service/ # 业务逻辑层 ├── mapper/ # 数据访问层 ├── config/ # 配置类 ├── common/ # 通用工具 ├── advisor/ # AI增强器 ├── filter/ # 过滤器 └── exception/ # 异常处理 ``` ### 扩展开发 1. **添加新的AI模型**:在config包中添加新的ChatClient配置 2. **自定义Advisor**:实现RequestResponseAdvisor接口 3. **扩展缓存策略**:在caffine包中添加新的缓存配置 4. **添加新的业务功能**:遵循MVC架构模式 ## 许可证 本项目采用Apache-2.0许可证,详见LICENSE文件。 **Jane AI - 让AI更智能,让对话更有价值!** 🚀