# ry3.0 **Repository Path**: dravenlove/ry3.0 ## Basic Information - **Project Name**: ry3.0 - **Description**: 若依多功能 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-23 - **Last Updated**: 2026-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 若依智能文档管理系统 (RuoYi Intelligent Document Management System) 基于若依(RuoYi)框架开发的智能文档管理系统,集成Elasticsearch全文搜索、Milvus向量检索、智谱AI Embedding等AI能力,实现文档的智能存储、搜索与推荐。 ## 项目简介 本项目在若依快速开发平台基础上,扩展了文档管理核心能力: - **文档全生命周期管理**:支持文章分类、内容管理、文件上传、网页爬取 - **双引擎智能搜索**:Elasticsearch关键词搜索 + Milvus语义向量搜索 - **AI智能Embedding**:基于智谱AI实现文本向量化,支持语义相似度检索 - **分布式定时同步**:XXL-JOB保障MySQL/ES/Milvus多源数据一致性 - **中间件密码安全管理**:加密存储、每日限次查看的密码保险箱 - **可视化数据大盘**:Redis实时统计访问量、API调用趋势、系统运行时长 ## 技术架构 ### 核心技术栈 | 技术 | 版本 | 说明 | |------|------|------| | Java | 17 | 开发语言 | | Spring Boot | 4.0.3 | 基础框架 | | MyBatis | 4.0.1 | ORM框架 | | Druid | 1.2.28 | 数据库连接池 | | MySQL | 8.x | 关系型数据库 | | Redis | 6.x | 缓存/会话/统计 | | Elasticsearch | 8.x | 全文搜索引擎 | | Milvus | 2.x | 向量数据库 | | RabbitMQ | 3.x | 消息队列 | | XXL-JOB | 2.x | 分布式定时任务 | | MinIO | 最新版 | 对象存储 | | 智谱AI | embedding-3 | 文本向量化服务 | | Spring Security | 6.x | 安全框架 | | JWT | 0.9.1 | Token认证 | | Fastjson2 | 2.0.61 | JSON处理 | | Swagger/SpringDoc | 3.0.2 | API文档 | ### 系统架构图 ``` ┌─────────────────────────────────────────────────────────────┐ │ 前端层 (Vue3) │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ 网关/负载均衡层 │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ ruoyi-admin (Web服务入口) │ │ ├── 系统管理模块 (用户/角色/菜单/部门/字典) │ │ ├── 文档管理模块 (文章/分类/向量同步) │ │ ├── 监控模块 (在线用户/操作日志/登录日志/服务监控) │ │ ├── 中间件配置模块 (密码保险箱) │ │ ├── 数据大盘模块 (访问量/API统计/运行时长) │ │ └── 测试模块 (Embedding测试/Milvus测试) │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ ruoyi-framework (核心框架) │ │ ├── 安全配置 (Spring Security + JWT) │ │ ├── 数据源配置 (Druid多数据源) │ │ ├── 缓存配置 (Redis) │ │ ├── 消息队列配置 (RabbitMQ) │ │ ├── 搜索引擎配置 (Elasticsearch) │ │ ├── 向量库配置 (Milvus) │ │ ├── 对象存储配置 (MinIO) │ │ ├── 定时任务配置 (XXL-JOB) │ │ └── AOP切面 (日志/数据权限/限流/重复提交) │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ ruoyi-system (业务模块) │ │ ├── 系统服务 (用户/角色/菜单/部门等CRUD) │ │ ├── 文档服务 (文章CRUD/分类树/Excel导入导出) │ │ ├── 搜索服务 (ES全文检索) │ │ ├── 向量服务 (Milvus语义检索) │ │ ├── 爬虫服务 (Jsoup网页内容抓取) │ │ ├── 同步服务 (MySQL与ES数据一致性同步) │ │ └── 中间件配置服务 (密码加密/限次查看) │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ ruoyi-common (通用工具) │ │ ├── 核心工具 (Ajax结果/分页/树结构) │ │ ├── 安全工具 (密码/脱敏/Token) │ │ ├── 文件工具 (上传/下载/Excel/图片/Mime类型) │ │ ├── HTTP工具 (请求/UA解析/IP定位) │ │ └── 其他工具 (日期/字符串/反射/线程/UUID) │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ ruoyi-quartz (定时任务模块) │ │ └── 动态定时任务管理 (Cron表达式/执行日志) │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────────────────────────────────────────────────┐ │ ruoyi-generator (代码生成模块) │ │ └── 根据数据库表自动生成前后端代码 │ └─────────────────────────────────────────────────────────────┘ ``` ## 模块说明 | 模块 | 说明 | |------|------| | ruoyi-admin | Web服务入口,包含所有Controller和定时任务Job | | ruoyi-framework | 核心框架配置,Spring Security、数据源、中间件配置 | | ruoyi-system | 业务逻辑实现,Service层和Mapper层 | | ruoyi-common | 通用工具类、常量、注解、异常处理 | | ruoyi-quartz | 定时任务管理模块 | | ruoyi-generator | 代码生成器模块 | ## 核心功能 ### 1. 文档管理 - **文章CRUD**:支持标题、作者、摘要、内容、标签、封面的完整管理 - **分类管理**:树形分类结构,支持无限层级 - **文件上传**:支持PDF/Word/MD/TXT等格式,存储至MinIO对象存储 - **网页爬取**:基于Jsoup自动抓取网页内容,下载并替换图片至MinIO - **Excel导入导出**:基于Apache POI实现批量数据操作 ### 2. 智能搜索(双引擎) - **Elasticsearch全文搜索**:基于IK分词器的关键词匹配搜索,支持标题/内容/摘要多字段联合查询 - **Milvus向量语义搜索**:基于智谱AI Embedding-3(2048维)实现语义相似度检索 - **数据同步**:RabbitMQ消息队列驱动,文章变更后自动同步至ES和Milvus ### 3. 向量检索流程 ``` 文章新增/修改 → MySQL持久化 → RabbitMQ消息 → 消费者处理 │ ┌─────────────────────────┼─────────────────────────┐ ↓ ↓ ↓ Elasticsearch Milvus向量库 日志 (全文索引) (语义向量) (记录) │ │ └───────────┬─────────────┘ ↓ 智能搜索接口 /document/article/search /document/vector/search ``` ### 4. 文档向量化处理 - **文本分块**:500字/块,50字重叠,保证语义连贯性 - **Embedding生成**:调用智谱AI API获取2048维向量 - **Milvus存储**:自动创建Collection、构建索引、插入向量数据 - **向量搜索**:基于余弦相似度返回Top-K最相似结果 ### 5. 数据同步机制 - **增量同步**:XXL-JOB每5分钟检查MySQL与ES数据差异,自动修复 - **全量同步**:手动触发,将所有文章重新同步至ES和Milvus - **消息驱动**:文章CRUD操作发送RabbitMQ消息,异步消费同步 ### 6. 中间件密码管理 - **加密存储**:数据库中密码字段加密保存 - **限次查看**:每日最多查看5次密码,防止泄露 - **多中间件支持**:Redis、MySQL、ES、Milvus、RabbitMQ等统一配置 ### 7. 数据大盘 - **实时访问量**:基于Redis HyperLogLog统计今日访问次数 - **独立IP数**:基于Redis Set统计今日独立IP - **API调用统计**:Top10高频接口、总调用次数 - **小时趋势**:24小时访问量折线图数据 - **运行时长**:系统自启动以来的运行天数 ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.8+ - MySQL 8.0+ - Redis 6.0+ - Elasticsearch 8.x - Milvus 2.x - RabbitMQ 3.x - XXL-JOB 2.x - MinIO ### 安装步骤 1. **克隆项目** ```bash git clone https://github.com/your-repo/ruoyi-doc.git cd ruoyi-doc ``` 2. **创建数据库** ```bash # 创建数据库并执行SQL脚本 mysql -u root -p CREATE DATABASE ruoyi DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 执行 ry_20231130.sql 和 quartz.sql ``` 3. **修改配置文件** 编辑 `ruoyi-admin/src/main/resources/application.yml` 及相关profile配置: - `application-druid.yml`:数据库连接 - `application-elasticsearch.yml`:ES地址 - `application-rabbitmq.yml`:RabbitMQ连接 - `application-xxljob.yml`:XXL-JOB配置 - `application-minio.yml`:MinIO配置 - `application.yml`:Redis、Milvus、智谱AI API Key 4. **编译运行** ```bash # 编译 mvn clean package -DskipTests # 运行 java -jar ruoyi-admin/target/ruoyi-admin.jar # 或开发模式 mvn spring-boot:run -pl ruoyi-admin ``` 5. **访问系统** - 后端API:http://localhost:10086 - Swagger文档:http://localhost:10086/swagger-ui.html - 前端页面:需配合若依Vue前端项目 ### Docker部署(可选) ```bash # 构建镜像 docker build -t ruoyi-doc . # 运行容器 docker run -d -p 10086:10086 \ -e SPRING_PROFILES_ACTIVE=prod \ -v /data/ruoyi/uploadPath:/data/ruoyi/uploadPath \ ruoyi-doc ``` ## 项目结构 ``` ruoyi-doc/ ├── bin/ # 脚本文件 │ ├── clean.bat # 清理脚本 │ ├── package.bat # 打包脚本 │ └── run.bat # 运行脚本 ├── doc/ # 文档 │ └── 若依环境使用手册.docx ├── ruoyi-admin/ # Web服务入口 │ └── src/main/java/com/ruoyi/ │ ├── RuoYiApplication.java # 启动类 │ ├── web/controller/ # 控制器层 │ │ ├── common/ # 通用接口(验证码/文件上传) │ │ ├── dashboard/ # 数据大盘接口 │ │ ├── document/ # 文档管理接口 │ │ ├── monitor/ # 监控接口 │ │ ├── system/ # 系统管理接口 │ │ └── tool/ # 测试工具接口 │ ├── web/job/ # XXL-JOB定时任务 │ └── core/config/ # Swagger配置 ├── ruoyi-framework/ # 核心框架 │ └── src/main/java/com/ruoyi/framework/ │ ├── aspectj/ # AOP切面 │ ├── config/ # 各类配置类 │ └── security/ # 安全配置 ├── ruoyi-system/ # 业务模块 │ └── src/main/java/com/ruoyi/system/ │ ├── domain/ # 实体类 │ ├── mapper/ # MyBatis Mapper │ ├── service/ # 业务接口与实现 │ └── repository/ # ES Repository ├── ruoyi-common/ # 通用模块 │ └── src/main/java/com/ruoyi/common/ │ ├── annotation/ # 自定义注解 │ ├── core/ # 核心工具 │ ├── utils/ # 工具类 │ └── filter/ # 过滤器 ├── ruoyi-quartz/ # 定时任务模块 ├── ruoyi-generator/ # 代码生成模块 ├── pom.xml # 父POM ├── README.md # 项目说明 ├── MILVUS_SETUP.md # Milvus配置说明 └── LICENSE # MIT许可证 ``` ## API文档 启动项目后访问 Swagger UI: - http://localhost:10086/swagger-ui.html ### 主要接口分组 | 分组 | 路径前缀 | 说明 | |------|----------|------| | 文档管理 | `/document/article` | 文章CRUD、ES搜索、向量搜索 | | 分类管理 | `/document/category` | 分类树、CRUD | | 向量同步 | `/document/vector` | 手动同步、全量同步 | | 系统管理 | `/system/**` | 用户/角色/菜单/部门等 | | 监控模块 | `/monitor/**` | 在线用户/日志/服务状态 | | 数据大盘 | `/dashboard/**` | 访问量/API统计/趋势 | | 中间件配置 | `/system/middleware` | 密码管理/配置CRUD | | 测试接口 | `/test/**` | Embedding测试/Milvus测试 | ## 配置说明 ### Milvus向量库配置 详见 [MILVUS_SETUP.md](MILVUS_SETUP.md) ```yaml milvus: host: 119.91.140.44 port: 19530 collection: doc_article_vectors ``` ### 智谱AI Embedding配置 ```yaml zhipu: api-key: your-api-key api-url: https://open.bigmodel.cn/api/paas/v4/embeddings model: embedding-3 ``` ### 文档分块配置 ```yaml document: chunk-size: 500 # 每块字数 chunk-overlap: 50 # 重叠字数 ``` ## 定时任务 | 任务名称 | Cron | 说明 | |----------|------|------| | articleDataSyncJob | 0 */5 * * * ? | 每5分钟检查MySQL与ES数据一致性 | | articleFullSyncJob | 手动触发 | 全量同步所有文章到ES和Milvus | ## 安全特性 - **JWT Token认证**:基于jjwt实现无状态登录 - **Spring Security**:RBAC权限控制,方法级权限注解 - **数据权限**:基于部门的数据隔离 - **XSS过滤**:请求参数自动转义 - **SQL注入防护**:MyBatis参数化查询 - **重复提交防护**:@RepeatSubmit注解 - **接口限流**:@RateLimiter注解 - **密码加密**:BCrypt加密存储 - **密码查看限次**:中间件密码每日限次查看 ## 开发规范 - 代码遵循阿里巴巴Java开发规范 - RESTful API设计规范 - 统一返回格式:AjaxResult / TableDataInfo - 统一异常处理:GlobalExceptionHandler - 日志规范:操作日志自动记录@Log注解 ## 常见问题 ### Q1: Milvus向量维度不匹配错误 **错误信息**: ``` Incorrect dimension for field 'vector': the no.0 vector's dimension: 2048 is not equal to field's dimension: 1536 ``` **解决方案**: 调用重建接口: ```bash curl -X POST http://localhost:10086/test/milvus/rebuild ``` ### Q2: 向量库没有数据 1. 检查智谱AI API是否正常 2. 检查Milvus服务是否运行 3. 检查Collection维度是否匹配 4. 检查RabbitMQ消息是否正常消费 ### Q3: ES搜索无结果 1. 检查Elasticsearch服务是否运行 2. 检查索引是否存在 3. 执行全量同步任务重建索引 ## 更新日志 ### v3.9.2 (2026-05-21) - 新增文档管理模块(文章/分类) - 集成Elasticsearch全文搜索 - 集成Milvus向量数据库 - 集成智谱AI Embedding服务 - 新增网页爬虫功能 - 新增中间件密码管理 - 新增数据大盘统计 - 新增XXL-JOB分布式定时同步 - 集成MinIO对象存储 - 集成RabbitMQ消息队列 ## 开源协议 本项目基于 [MIT License](LICENSE) 开源。 若依(RuoYi) 原版版权归属 [RuoYi](http://www.ruoyi.vip) 所有。 ## 联系方式 - 若依官网:http://www.ruoyi.vip - 文档地址:http://doc.ruoyi.vip - 演示地址:http://vue.ruoyi.vip --- > 如果本项目对您有帮助,请给个 Star ⭐️ 支持一下!