# rag_enterprise_knowledge_base **Repository Path**: wel1221/rag_enterprise_knowledge_base ## Basic Information - **Project Name**: rag_enterprise_knowledge_base - **Description**: RAG企业知识库,包含 NestJS 后端、Vue 3 前端、Milvus 混合检索、文档版本更新、权限隔离、Rerank、来源引用和拒答以及支持多轮对话 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-07 - **Last Updated**: 2026-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: RAG, Milvus, 混合检索, rerank, Nestjs ## README # 企业知识库平台 (Enterprise Knowledge Base) 本项目是一个基于 **RAG (Retrieval-Augmented Generation)** 架构的企业级知识库问答系统。系统支持文档上传、向量化存储、多租户管理以及基于大语言模型 (LLM) 的智能问答。 ## 技术栈 ### 后端 (Server) * **核心框架**: [NestJS](https://nestjs.com/) (Node.js + TypeScript) * **数据库**: [MongoDB](https://www.mongodb.com/) (使用 Mongoose ODM 存储元数据与结构化信息) * **向量数据库**: [Milvus](https://milvus.io/) (用于高效的语义向量检索) * **认证与安全**: [Passport](http://www.passportjs.org/) + JWT (JSON Web Token) * **AI 集成**: 通用的 AI 服务接口 (支持 OpenAI 兼容 API) ### 前端 (Web) * **核心框架**: [Vue 3](https://vuejs.org/) * **构建工具**: [Vite](https://vitejs.dev/) * **状态管理**: [Pinia](https://pinia.vuejs.org/) * **网络请求**: Axios (封装了拦截器与 Token 刷新机制) * **样式**: 原生 CSS (支持 CSS Modules) ## 核心功能 1. **智能问答**: 基于向量检索的 RAG 流程,结合历史上下文提供准确的答案。 2. **文档处理**: 支持 Markdown 格式文档的自动解析与语义分块 (Chunking)。 3. **权限管理**: 支持多租户 (Tenant)、部门 (Department) 隔离,区分管理员与普通用户。 4. **流式响应**: 支持 SSE (Server-Sent Events) 流式输出 AI 回答,提供流畅的用户体验。 5. **会话管理**: 保留历史对话记录,支持多轮对话上下文理解。 ## 项目架构 ``` rag_enterprise_knowledge_base/ ├── server/ # 后端服务 (NestJS) │ ├── src/ │ │ ├── ai/ # AI 服务封装,处理 LLM 调用与提示词构建 │ │ ├── auth/ # 认证模块 (JWT策略、登录守卫、策略守卫) │ │ ├── cache/ # 缓存模块,用于存储查询结果或中间状态 │ │ ├── conversation/ # 会话管理,存储对话历史消息 │ │ ├── departments/ # 部门管理模块 │ │ ├── documents/ # 文档上传、解析与分块逻辑 │ │ ├── knowledge/ # 核心业务:RAG Pipeline (检索 -> 生成) │ │ ├── milvus/ # 向量数据库交互服务 │ │ ├── tenants/ # 租户管理模块 │ │ └── users/ # 用户管理模块 │ └── ... ├── web/ # 前端应用 (Vue 3) │ ├── src/ │ │ ├── api/ # API 接口定义 (auth, users, knowledge, etc.) │ │ ├── components/ # 公共组件 (ChatPanel, MessageBubble, Sidebar) │ │ ├── composables/ # 组合式函数 (useChat, useStream 用于处理 SSE) │ │ ├── stores/ # Pinia 状态管理 (auth, chat, document) │ │ ├── views/ # 页面视图 (Login, Register, MainLayout) │ │ └── router/ # 路由配置 │ └── ... └── README.md ``` ## 核心模块详解 ### 1. RAG 文档入库流程 (`DocumentModule`) 用户上传 Markdown 文档后,服务端会: 1. 解析 Markdown 结构 (`markdown-chunker.ts`)。 2. 将长文本拆分为指定大小的块 (Chunks),并保持语义连贯。 3. 调用 `AiService` 将文本转换为向量 (Embedding)。 4. 将向量写入 `Milvus`,将元数据写入 `MongoDB`。 ### 2. 知识问答 Pipeline (`KnowledgeModule`) 1. **检索**: 接收用户问题,在 Milvus 中检索与问题最相似的文档块。 2. **重写 (可选)**: 结合会话历史 (History),若问题依赖上下文,则改写问题。 3. **生成**: 将检索到的内容作为上下文 (Context) 拼接提示词 (Prompt),发送给 LLM。 4. **返回**: 流式返回 AI 生成的回答,并记录来源 (`BoundSource`) 供前端溯源展示。 ### 3. 权限控制 系统通过 `AuthModule` 和 `Guard` (守卫) 实现访问控制: * `JwtAuthGuard`: 保护需要登录的 API。 * `AdminGuard`: 限制仅管理员访问的操作。 * `SuperAdminGuard`: 超级管理员权限,用于系统级配置。 ## 快速开始 ### 1. 环境准备 确保已安装以下服务: * Node.js (v18+) * MongoDB * Milvus (独立实例或 Docker 部署) * OpenAI API Key (或其他 LLM API Key) ### 2. 后端部署 ```bash cd server # 安装依赖 pnpm install # 配置环境变量 (复制 .env.development 并修改) # 主要配置: MONGODB_URI, MILVUS_URI, JWT_SECRET, OPENAI_API_KEY # 启动服务 pnpm run start:dev ``` ### 3. 前端部署 ```bash cd web # 安装依赖 pnpm install # 启动开发服务器 pnpm run dev ``` ## 许可证 本项目遵循开源协议,具体信息请参阅 [LICENSE](LICENSE) 文件。