# LJ-RAG **Repository Path**: yangchangling/lj-rag ## Basic Information - **Project Name**: LJ-RAG - **Description**: 面向中大型企业的内部知识库智能问答系统,支持员工对企业制度、产品文档、培训材料、项目资料等非结构化文档的自然语言查询,精准返回相关内容并生成合规答案,降低信息检索成本,提升内部知识流转效率。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-04-03 - **Last Updated**: 2026-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业级RAG系统 ## 项目简介 企业级RAG(Retrieval-Augmented Generation)系统是一个基于知识库的智能问答平台,结合了检索增强生成技术,为企业提供精准、高效的知识管理和智能问答服务。 ### 核心功能 - **知识库管理**:文档上传、自动分块、向量索引 - **智能问答**:多轮对话、流式响应、引用溯源 - **系统配置**:分块策略、检索参数、模型配置 - **检索监控**:核心指标、趋势分析、Bad Case管理 - **多租户架构**:支持企业级多租户隔离 ## 系统架构 ### 技术栈 | 类别 | 技术 | 版本 | 用途 | |------|------|------|------| | **前端** | Vue 3 | 3.4.21 | 前端框架 | | | TypeScript | 5.4.0 | 类型系统 | | | Element Plus | 2.7.0 | UI组件库 | | | Vite | 5.2.8 | 构建工具 | | **后端** | Spring Boot | 3.0+ | 微服务框架 | | | MyBatis-Plus | 3.5+ | ORM框架 | | | MySQL | 8.0 | 关系型数据库 | | | Redis | 7.0 | 缓存 | | | MinIO | RELEASE.2023-03-20 | 对象存储 | | | Milvus | v2.3.3 | 向量数据库 | | | Nacos | v2.2.0 | 服务注册发现 | | | etcd | v3.5.5 | 分布式键值存储 | ### 系统架构图 ``` ┌─────────────────────────────────────────────────────────────┐ │ 前端应用 │ │ Vue 3 + TypeScript + Element Plus │ └───────────────────┬────────────────────────────────────────┘ │ ┌───────────────────▼────────────────────────────────────────┐ │ API网关 (Gateway) │ │ 端口: 8080, 负责请求路由和认证 │ └───────────────────┬────────────────────────────────────────┘ │ ┌───────────────────┴────────────────────────────────────────┐ │ 微服务集群 │ ├───────────────┬───────────────┬───────────────┬─────────────┤ │ 租户服务 │ 文档服务 │ 聊天服务 │ 配置服务 │ │ (8081) │ (8082) │ (8084) │ (8085) │ ├───────────────┴───────────────┴───────────────┴─────────────┤ │ 嵌入服务 │ 检索服务 │ 监控服务 │ LLM服务 │ │ (8086) │ (8087) │ (8088) │ (8089) │ └───────────────────┬────────────────────────────────────────┘ │ ┌───────────────────▼────────────────────────────────────────┐ │ 基础设施层 │ ├───────────────┬───────────────┬───────────────┬─────────────┤ │ MySQL │ Redis │ MinIO │ Milvus │ │ (3307) │ (6379) │ (9000) │ (19530) │ ├───────────────┴───────────────┴───────────────┴─────────────┤ │ Nacos │ etcd │ │ (8848) │ (2379) │ └─────────────────────────────────────────────────────────────┘ ``` ## 核心模块 ### 1. 前端应用 (`lj-rag-frontend`) **技术特点**: - Vue 3 Composition API + TypeScript - Element Plus UI组件库 - Pinia状态管理 - Axios网络请求 - Vite构建工具 **核心功能**: - 知识库管理界面 - 智能问答对话界面 - 系统配置管理 - 检索监控面板 - 租户认证登录 ### 2. 网关服务 (`lj-rag-gateway`) **功能**: - 请求路由:将请求转发到对应微服务 - 认证拦截:JWT Token验证 - 跨域处理:CORS配置 - 限流保护:Rate Limit **路由配置**: - `/api/v1/auth/**` → 租户服务 - `/api/v1/tenant/**` → 租户服务 - `/api/v1/chat/**` → 聊天服务 ### 3. 租户服务 (`lj-rag-tenant`) **功能**: - 用户认证:登录、注册、登出 - 租户管理:租户信息管理 - 权限控制:基于角色的权限管理 - Token管理:JWT生成与验证 **API接口**: - `POST /api/v1/auth/login` - 用户登录 - `POST /api/v1/auth/logout` - 用户登出 - `GET /api/v1/auth/info` - 获取用户信息 - `POST /api/v1/auth/refresh` - 刷新Token ### 4. 文档服务 (`lj-rag-document`) **功能**: - 文档上传:支持PDF、Word、Markdown等格式 - 文档分块:多种分块策略 - 向量索引:文档向量化与索引 - 文档管理:查询、更新、删除 **API接口**: - `POST /api/v1/document/upload` - 上传文档 - `GET /api/v1/document/list` - 获取文档列表 - `GET /api/v1/document/{docId}` - 获取文档详情 - `DELETE /api/v1/document/{docId}` - 删除文档 - `POST /api/v1/document/{docId}/rechunk` - 重新分块 - `POST /api/v1/document/{docId}/reindex` - 重新索引 ### 5. 聊天服务 (`lj-rag-chat`) **功能**: - 会话管理:创建、查询、删除会话 - 消息处理:发送消息、获取消息历史 - 智能问答:基于RAG的回答生成 - 流式响应:实时返回回答 - Bad Case管理:标记和处理错误案例 **API接口**: - `POST /api/v1/chat/session` - 创建会话 - `GET /api/v1/chat/sessions` - 获取会话列表 - `DELETE /api/v1/chat/session/{sessionId}` - 删除会话 - `POST /api/v1/chat/ask` - 发送消息 - `GET /api/v1/chat/session/{sessionId}/messages` - 获取会话消息 - `POST /api/v1/chat/ask/stream` - 流式发送消息 ### 6. 配置服务 (`lj-rag-config`) **功能**: - 系统配置管理:分块策略、检索参数等 - 配置历史:配置变更记录 - 配置验证:配置有效性检查 **API接口**: - `GET /api/v1/config` - 获取系统配置 - `PUT /api/v1/config` - 更新系统配置 - `GET /api/v1/config/history` - 获取配置历史 ### 7. 嵌入服务 (`lj-rag-embedding`) **功能**: - 文本向量化:将文本转换为向量 - 向量相似度计算:计算向量间相似度 - 模型管理:嵌入模型配置 **API接口**: - `POST /api/v1/embedding/text` - 文本向量化 - `POST /api/v1/embedding/similarity` - 计算相似度 ### 8. 检索服务 (`lj-rag-retrieval`) **功能**: - 向量检索:基于Milvus的向量搜索 - 混合检索:向量+关键词检索 - 重排序:检索结果重排序 - 上下文构建:为LLM构建上下文 **API接口**: - `POST /api/v1/retrieval/search` - 检索相关文档 - `POST /api/v1/retrieval/hybrid` - 混合检索 - `POST /api/v1/retrieval/rerank` - 重排序结果 ### 9. 监控服务 (`lj-rag-monitor`) **功能**: - 核心指标监控:QPS、响应时间、准确率等 - 趋势分析:指标变化趋势 - Bad Case管理:错误案例分析 - 评估报告:系统性能评估 **API接口**: - `GET /api/v1/monitor/metrics` - 获取核心指标 - `GET /api/v1/monitor/trend` - 获取指标趋势 - `GET /api/v1/monitor/bad-cases` - 获取Bad Case列表 - `POST /api/v1/monitor/evaluation` - 创建评估任务 ### 10. LLM服务 (`lj-rag-llm`) **功能**: - 模型调用:调用大语言模型 - 提示词管理:系统提示词配置 - 响应处理:处理模型响应 **API接口**: - `POST /api/v1/llm/completion` - 模型调用 - `POST /api/v1/llm/chat` - 聊天补全 ## 部署指南 ### 1. 基础设施部署 使用Docker Compose部署所有基础设施服务: ```bash # 启动基础设施服务 docker-compose up -d # 查看服务状态 docker-compose ps ``` **服务访问地址**: - MySQL: `localhost:3307` - Redis: `localhost:6379` - MinIO: `http://localhost:9001` - Nacos: `http://localhost:8848` - Milvus: `localhost:19530` ### 2. 后端服务部署 **构建后端服务**: ```bash # 进入后端目录 cd lj-rag-backend # 构建所有服务 mvn clean package -DskipTests # 启动网关服务 mvn spring-boot:run -pl lj-rag-gateway # 启动租户服务 mvn spring-boot:run -pl lj-rag-tenant # 启动文档服务 mvn spring-boot:run -pl lj-rag-document # 启动聊天服务 mvn spring-boot:run -pl lj-rag-chat # 启动配置服务 mvn spring-boot:run -pl lj-rag-config # 启动嵌入服务 mvn spring-boot:run -pl lj-rag-embedding # 启动检索服务 mvn spring-boot:run -pl lj-rag-retrieval # 启动监控服务 mvn spring-boot:run -pl lj-rag-monitor # 启动LLM服务 mvn spring-boot:run -pl lj-rag-llm ``` ### 3. 前端应用部署 **构建前端应用**: ```bash # 进入前端目录 cd lj-rag-frontend # 安装依赖 npm install # 开发环境启动 npm run dev # 生产环境构建 npm run build # 预览生产构建 npm run preview ``` **访问地址**: - 开发环境:`http://localhost:3000` - 生产环境:根据部署配置 ## 系统配置 ### 1. 环境变量配置 **前端环境变量** (`lj-rag-frontend/.env.development`): ```env VITE_API_BASE_URL=/api VITE_APP_TITLE=企业级RAG系统 ``` **后端环境变量**: - 各服务的 `application.yml` 文件中配置 ### 2. 数据库配置 **MySQL初始化**: - 系统启动时自动执行 `schema.sql` 创建表结构 - 租户服务自动初始化默认用户数据 **默认用户**: - 用户名:`admin` - 密码:`123456` ### 3. 存储配置 **MinIO配置**: - 桶名称:`lj-rag` - 访问密钥:`minioadmin` - secret密钥:`minioadmin` **Milvus配置**: - 集合前缀:`lj_rag_` - 向量维度:根据嵌入模型配置 ## 核心业务流程 ### 1. 文档上传与处理流程 ``` ┌─────────────────────────────────────────────────────────────┐ │ 文档上传流程 │ ├─────────────────────────────────────────────────────────────┤ │ 1. 前端上传文件 │ │ 2. 文档服务接收文件 │ │ 3. 存储到MinIO │ │ 4. 调用分块服务进行文档分块 │ │ 5. 调用嵌入服务生成向量 │ │ 6. 存储向量到Milvus │ │ 7. 更新文档状态为已索引 │ │ 8. 返回处理结果给前端 │ └─────────────────────────────────────────────────────────────┘ ``` ### 2. 智能问答流程 ``` ┌─────────────────────────────────────────────────────────────┐ │ 智能问答流程 │ ├─────────────────────────────────────────────────────────────┤ │ 1. 用户输入问题 │ │ 2. 聊天服务接收请求 │ │ 3. 调用检索服务搜索相关文档 │ │ 4. 构建上下文并调用LLM生成回答 │ │ 5. 流式返回回答给前端 │ │ 6. 存储会话和消息记录 │ │ 7. 前端显示回答和引用来源 │ └─────────────────────────────────────────────────────────────┘ ``` ### 3. 认证流程 ``` ┌─────────────────────────────────────────────────────────────┐ │ 认证流程 │ ├─────────────────────────────────────────────────────────────┤ │ 1. 用户输入账号密码 │ │ 2. 租户服务验证凭证 │ │ 3. 生成JWT Token │ │ 4. 前端存储Token │ │ 5. 后续请求携带Token │ │ 6. 网关验证Token有效性 │ │ 7. Token过期自动刷新 │ └─────────────────────────────────────────────────────────────┘ ``` ## 监控与维护 ### 1. 系统监控 - **Prometheus监控**:通过Spring Boot Actuator暴露指标 - **日志管理**:各服务日志输出到对应目录 - **健康检查**:各服务提供健康检查端点 ### 2. 常见问题排查 | 问题 | 可能原因 | 解决方案 | |------|----------|----------| | 文档上传失败 | MinIO连接失败 | 检查MinIO服务状态 | | 智能问答无响应 | Milvus连接失败 | 检查Milvus服务状态 | | 登录失败 | 数据库连接失败 | 检查MySQL服务状态 | | 检索结果不准确 | 向量索引未更新 | 重新索引文档 | ### 3. 性能优化 - **缓存策略**:使用Redis缓存热点数据 - **批量处理**:批量上传和索引文档 - **异步处理**:文档分块和索引异步执行 - **负载均衡**:多实例部署服务 ## 安全措施 ### 1. 认证与授权 - JWT Token认证 - 基于角色的权限控制 - 密码加密存储 - Token过期与刷新机制 ### 2. 数据安全 - HTTPS传输 - 敏感信息加密 - 数据访问控制 - 审计日志 ### 3. 系统安全 - 输入验证 - XSS防护 - CSRF防护 - 限流保护 ## 开发指南 ### 1. 代码规范 - **前端**:ESLint + Prettier - **后端**:Spring Code Style - **提交规范**:Conventional Commits ### 2. 测试策略 - **单元测试**:Jest (前端) / JUnit (后端) - **集成测试**:Cypress (前端) / TestNG (后端) - **API测试**:Postman / Swagger ### 3. 部署流程 - **开发环境**:本地Docker Compose - **测试环境**:测试服务器 - **生产环境**:Kubernetes集群 ## 版本历史 | 版本 | 日期 | 主要变更 | |------|------|----------| | v1.0.0 | 2026-04-04 | 初始版本 | ## 贡献指南 1. Fork本仓库 2. 创建特性分支 3. 提交代码 4. 运行测试 5. 提交Pull Request ## 许可证 MIT License ## 系统原型预览 为了方便查看系统界面和功能,我们提供了完整的HTML原型文件。您可以通过以下方式预览: ### 原型文件下载 - **原型文件**:[RAG原型.html](RAG原型.html) - **本地路径**:`c:\Users\Administrator\Downloads\RAG原型.html` ### 预览说明 1. **直接打开**:在浏览器中直接打开HTML文件 2. **测试账号**:admin / 123456 3. **功能完整**:包含所有核心功能的交互演示 4. **离线可用**:无需后端服务支持,可完全离线使用 ### 原型功能 - ✅ 登录认证界面 - ✅ 控制台首页(系统概览、核心指标) - ✅ 知识库管理(文档上传、分块配置) - ✅ 智能问答(多轮对话、引用溯源) - ✅ 系统配置(分块策略、检索参数) - ✅ 检索监控(指标趋势、操作记录) ## 联系方式 - **项目维护者**:前端架构团队 - **技术支持**:技术支持邮箱 - **文档地址**:项目Wiki --- *最后更新:2026-04-12*