# book-borrow-system **Repository Path**: qiqd/book-borrow-system ## Basic Information - **Project Name**: book-borrow-system - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-26 - **Last Updated**: 2025-11-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图书借阅系统 - Book Borrowing System 基于Spring Boot开发的图书借阅系统,集成了Spring AI和Qwen-Max大语言模型,提供AI自然语言查询、智能位置引导和RAG增强查询等高级功能。 ## 功能特性 ### 基础功能 - 图书信息管理 - 用户借阅管理 - 图书分类管理 - 借阅记录查询 ### AI增强功能 - **AI自然语言查询**:基于Spring AI框架集成大语言模型(LLM),实现用户通过自然语言提问,后端将用户问题解析为结构化语义,结合Elasticsearch进行精准检索,返回结构化数据并由AI生成自然语言摘要,提升交互体验。 - **智能位置引导**:AI查询结果中自动包含书籍所在馆藏位置并支持模糊提问,系统结合图书分类与物理位置数据进行推理响应。 - **RAG增强查询**:集成第三方图书API作为外部知识源,结合RAG机制,在本地无结果时动态补充书籍信息,实现"全域书籍可问答"。 ## 技术栈 - **后端框架**:Spring Boot 2.7.6 - **ORM框架**:MyBatis-Plus 3.5.8 - **数据库**:MySQL 8.x - **缓存**:Redis - **搜索引擎**:Elasticsearch - **AI框架**:Spring AI 0.8.0 - **大语言模型**:Qwen-Max(阿里云通义千问) - **文档接口**:Knife4j OpenAPI - **工具库**:Hutool ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.6+ - MySQL 8.x - Redis - Elasticsearch 7.x+ - Qwen-Max API密钥 ### 配置说明 1. 修改`src/main/resources/application.yml`文件中的数据库配置: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/book-borrowing-system?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true driver-class-name: com.mysql.cj.jdbc.Driver username: root password: your_database_password ``` 2. 配置Qwen-Max API密钥: ```yaml spring: ai: qwen: api-key: your_qwen_api_key base-url: https://api.qianwen.aliyun.com/v1 model: qwen-max ``` 3. 配置Elasticsearch: ```yaml spring: ai: vectorstore: elasticsearch: index-name: book_vector_index query-type: knn knn-num-candidates: 10 knn-score-threshold: 0.5 ``` ### 构建与运行 1. 克隆项目: ```bash git clone https://github.com/your-username/book-borrowing-system.git cd book-borrowing-system ``` 2. 构建项目: ```bash mvn clean package ``` 3. 运行项目: ```bash java -jar target/book-borrowring-system-0.0.1-SNAPSHOT.jar ``` ## API文档 启动项目后,可以访问以下地址查看API文档: - Knife4j API文档:`http://localhost:8086/doc.html` ## AI功能API ### 1. 自然语言查询 - **URL**: `/api/ai/query` - **Method**: POST - **请求体**: ```json { "query": "查询《三体》这本书的信息" } ``` - **响应**: ```json { "success": true, "message": "查询成功", "data": "《三体》是刘慈欣创作的科幻小说,由重庆出版社出版,位于A区三楼科幻类书架,书架号为A3-2-10。该书目前可借阅。" } ``` ### 2. 智能位置引导 - **URL**: `/api/ai/location-guide?bookName=三体&location=A区三楼&bookshelf=A3-2-10` - **Method**: GET - **响应**: ```json { "success": true, "message": "生成成功", "data": "您正在寻找《三体》这本书,该书位于A区三楼科幻类区域,书架号为A3-2-10。您可以从图书馆正门进入,左转乘坐电梯到达三楼,然后按照指示牌找到A区,在A3区域的第二个书架的第10格即可找到这本书。" } ``` ### 3. RAG增强查询 - **URL**: `/api/ai/rag-query` - **Method**: POST - **请求体**: ```json { "question": "《百年孤独》的作者是谁?" } ``` - **响应**: ```json { "success": true, "message": "查询成功", "data": "《百年孤独》的作者是加西亚·马尔克斯,他是哥伦比亚著名作家,拉丁美洲魔幻现实主义文学的代表人物。" } ``` ### 4. 添加书籍到向量存储 - **URL**: `/api/ai/vector-store/add` - **Method**: POST - **请求体**: ```json { "title": "三体", "author": "刘慈欣", "publisher": "重庆出版社", "publishDate": "2008-01", "isbn": "9787536692930", "introduction": "《三体》是刘慈欣创作的长篇科幻小说,是《三体》系列的第一部。", "location": "A区三楼", "bookshelf": "A3-2-10", "available": true } ``` - **响应**: ```json { "success": true, "message": "添加成功", "data": null } ``` ## 项目结构 ``` src/main/java/com/borrow/ ├── BookBorrowingSystemApplication.java # 应用程序入口 ├── config/ # 配置类 │ ├── SpringAiConfig.java # Spring AI配置 │ └── PromptTemplateConfig.java # 提示词模板配置 ├── controller/ # 控制器 │ ├── AIController.java # AI功能控制器 │ └── ... # 其他控制器 ├── service/ # 服务接口 │ ├── AiSearchService.java # AI搜索服务接口 │ └── ... # 其他服务接口 ├── service/impl/ # 服务实现 │ ├── AiSearchServiceImpl.java # AI搜索服务实现 │ └── ... # 其他服务实现 ├── mapper/ # Mapper接口 ├── pojo/ # 实体类 │ ├── AISearchRequest.java # AI搜索请求类 │ ├── AISearchResponse.java # AI搜索响应类 │ └── ... # 其他实体类 ├── utils/ # 工具类 │ ├── AISearchUtils.java # AI搜索工具类 │ └── ... # 其他工具类 └── ... ``` ## 注意事项 1. 使用前需要配置有效的Qwen-Max API密钥 2. 确保Elasticsearch服务正常运行 3. 首次使用时,建议先通过`/api/ai/vector-store/add`接口添加一些书籍数据到向量存储中 4. 外部API调用可能受限于网络和API提供商的限制 ## 许可证 本项目采用[MIT许可证](LICENSE) ## 联系方式 如有任何问题或建议,请联系: - Email: 3246789624@qq.com - 项目维护者: 柒玖