# 智能助手 Lumina AI **Repository Path**: lh_wuyan/ai-rag-sys ## Basic Information - **Project Name**: 智能助手 Lumina AI - **Description**: 智能助手 Lumina AI,是一个基于RAG(检索增强生成)技术的AI对话系统,具有完整的知识库管理、多模型支持和护眼友好的现代化界面。系统支持OpenAI、Anthropic Claude和本地Ollama模型,包含对话、知识库、历史记录和设置四大核心模块,提供文件上传、语义搜索、对话历史管理等功能,是一个功能全面、界面友好、注重用户体验的智能对话平台。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2025-12-01 - **Last Updated**: 2026-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI-RAG-SYS - 智能助手 Lumina AI 智能助手 Lumina AI,是一个基于RAG(检索增强生成)技术的AI对话系统,具有完整的知识库管理、多模型支持和护眼友好的现代化界面。系统支持OpenAI、Anthropic Claude和本地Ollama模型,包含对话、知识库、历史记录和设置四大核心模块,提供文件上传、语义搜索、对话历史管理等功能,是一个功能全面、界面友好、注重用户体验的智能对话平台。 ![AI Assistant System](https://img.shields.io/badge/Version-1.0.0-blue) ![Python](https://img.shields.io/badge/Python-3.10%2B-green) ![Vue](https://img.shields.io/badge/Vue-3.3%2B-brightgreen) ![License](https://img.shields.io/badge/License-MIT-yellow) > 📸 **界面预览**: 下方有完整的系统界面截图展示 ## 🚀 核心特性 ### 🤖 多模型智能对话 - **OpenAI GPT系列**: GPT-3.5, GPT-4, GPT-4 Turbo(待完全匹配) - **Anthropic Claude系列**: Claude-3系列模型(待完全匹配) - **本地Ollama**: 支持本地部署的Llama、Mistral等开源模型 ### 📚 智能知识库系统 - **文档向量化**: 支持PDF、Word、Excel、PPT、TXT等多种格式 - **语义检索**: 基于FAISS/ChromaDB的向量相似度搜索 - **增量更新**: 支持知识库的实时更新和增量索引 - **多语言支持**: 中英文混合文档处理 ### 🎙️ 实时音频交互(待完全匹配) - **语音识别**: 实时语音转文字,支持多种语言 - **文字转语音**: AI语音合成,自然流畅 - **流式处理**: 实时音频流处理,低延迟响应 - **噪音抑制**: 智能音频降噪处理 ### 🖼️ 视觉内容理解 - **图片解析**: 支持图片内容描述、文字识别(OCR) - **文档扫描**: 自动识别文档中的表格、图表 - **多格式支持**: JPG、PNG、PDF扫描件等 ### 📄 智能文件处理 - **格式支持**: PDF、DOCX、XLSX、PPTX、TXT、Markdown - **批量处理**: 支持文件夹批量上传和处理 - **内容提取**: 智能提取文档结构、表格数据 - **格式转换**: 文档格式自动转换 ## 🛠️ 技术架构 ### 前端技术栈 - **框架**: Vue 3 + TypeScript + Composition API - **UI组件**: Element Plus + SCSS - **状态管理**: Pinia - **路由**: Vue Router 4 - **HTTP客户端**: Axios - **构建工具**: Vite 4 - **代码质量**: ESLint + TypeScript ### 后端技术栈 - **框架**: Flask 3 + Python 3.10+ - **数据库**: MariaDB 10.11 + SQLAlchemy - **缓存**: Redis 7 + Redis-py - **向量数据库**: FAISS + ChromaDB - **任务队列**: Celery + Redis - **认证授权**: JWT + Flask-JWT-Extended - **文件处理**: PyPDF2, python-docx, openpyxl, python-pptx - **OCR引擎**: PaddleOCR + PyMuPDF - **音频处理**: SpeechRecognition + pydub ### 部署架构 - **容器化**: Docker + Docker Compose - **数据库**: MariaDB + Redis - **反向代理**: Nginx (可选) - **监控**: Prometheus + Grafana (可选) ## 🖼️ 界面预览 ### 登录页面 简洁现代的登录界面,提供用户认证和系统访问入口 ![登录页面](docs/登录页.png) ### 主对话界面 智能对话核心功能,支持多模型切换、实时交互和上下文管理 ![对话页面](docs/对话页面.png) ### 知识库管理 文档上传、向量化存储、语义搜索和知识库维护功能 ![知识库页](docs/知识库页.png) ### 系统设置 模型配置、API密钥管理、系统参数设置和用户偏好配置 ![设置页面](docs/设置页面.png) ## 📦 快速开始 ### 环境要求 - **Python**: 3.10 或更高版本 - **Node.js**: 18 或更高版本 - **MariaDB**: 10.3 或更高版本 - **Redis**: 6.0 或更高版本 - **Docker**: 20.10+ (可选,用于容器化部署) - **内存**: 至少 8GB RAM - **磁盘空间**: 至少 10GB 可用空间 ### 方法一:使用Docker快速部署(推荐) 1. **克隆项目** ```bash git clone https://gitee.com/lh_wuyan/ai-rag-sys cd ai-rag-sys ``` 2. **配置环境变量** ```bash cp .env.example .env # 编辑 .env 文件,配置你的API密钥 ``` 3. **启动所有服务** ```bash docker-compose up -d ``` 4. **访问应用** - 前端界面: http://localhost:3000 - 后端API: http://localhost:5000 ### 方法二:手动安装 #### 1. 后端安装 ```bash # 创建Python虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows # 安装后端依赖 cd backend pip install -r requirements.txt # 初始化数据库 python init_db.py # 启动后端服务 python run.py ``` #### 2. 前端安装 ```bash # 安装Node.js依赖 cd frontend npm install # 开发模式运行 npm run dev # 生产构建 npm run build ``` #### 3. 数据库初始化 ```sql -- 创建数据库 CREATE DATABASE ai_assistant_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建用户 CREATE USER 'ai_assistant'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON ai_assistant_db.* TO 'ai_assistant'@'localhost'; FLUSH PRIVILEGES; ``` #### 4. 启动Redis ```bash # Linux/Mac redis-server # Windows (使用WSL或Docker) docker run -d -p 6379:6379 redis:alpine ``` ## ⚙️ 详细配置 ### 环境变量配置 (.env) ```bash # ===== 数据库配置 ===== MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=ai_assistant MYSQL_PASSWORD=your_password MYSQL_DB=ai_assistant_db # ===== Redis配置 ===== REDIS_HOST=localhost REDIS_PORT=6379 REDIS_DB=0 REDIS_PASSWORD= # ===== JWT认证配置 ===== SECRET_KEY=your-secret-key-here-change-in-production JWT_SECRET_KEY=your-jwt-secret-key-change-in-production JWT_ACCESS_TOKEN_EXPIRES=86400 # 24小时 JWT_REFRESH_TOKEN_EXPIRES=2592000 # 30天 # ===== AI模型配置 ===== OPENAI_API_KEY=sk-your-openai-api-key ANTHROPIC_API_KEY=your-anthropic-api-key OLLAMA_BASE_URL=http://localhost:11434 # ===== 应用配置 ===== DEBUG=False # 生产环境设为False PORT=5000 UPLOAD_FOLDER=./uploads MAX_CONTENT_LENGTH=100 * 1024 * 1024 # 100MB CORS_ORIGINS=http://localhost:3000,http://localhost:8080 # ===== 知识库配置 ===== KNOWLEDGE_BASE_PATH=./knowledge_base VECTOR_DB_TYPE=faiss # faiss 或 chroma EMBEDDING_MODEL=text-embedding-ada-002 CHUNK_SIZE=1000 CHUNK_OVERLAP=200 # ===== 音频配置 ===== AUDIO_SAMPLE_RATE=16000 AUDIO_CHANNELS=1 AUDIO_FORMAT=wav MAX_AUDIO_DURATION=300 # 5分钟 ``` ### 后端配置文件 (backend/config/development.yaml) ```yaml app: name: AI Assistant System version: 1.0.0 debug: true database: host: localhost port: 3306 username: ai_assistant password: your_password database: ai_assistant_db pool_size: 10 max_overflow: 20 redis: host: localhost port: 6379 db: 0 password: "" ai_models: openai: enabled: true api_key: ${OPENAI_API_KEY} default_model: gpt-3.5-turbo available_models: - gpt-3.5-turbo - gpt-4 - gpt-4-turbo-preview anthropic: enabled: true api_key: ${ANTHROPIC_API_KEY} default_model: claude-3-sonnet-20240229 available_models: - claude-3-opus-20240229 - claude-3-sonnet-20240229 - claude-3-haiku-20240307 ollama: enabled: true base_url: http://localhost:11434 default_model: llama2 available_models: - llama2 - mistral - codellama knowledge_base: storage_path: ./knowledge_base vector_db_type: faiss embedding_model: text-embedding-ada-002 chunk_size: 1000 chunk_overlap: 200 max_file_size: 50MB audio: enabled: true sample_rate: 16000 channels: 1 format: wav max_duration: 300 security: jwt_secret: ${JWT_SECRET_KEY} bcrypt_rounds: 12 rate_limit: 100/分钟 cors_origins: - http://localhost:3000 - http://localhost:8080 ``` ## 📁 项目结构详解 ``` AI-RAG-SYS/ ├── frontend/ # Vue 3前端应用 │ ├── src/ │ │ ├── components/ # 可复用组件 │ │ │ ├── ChatHeader.vue # 聊天头部组件 │ │ │ ├── ChatSidebar.vue # 聊天侧边栏 │ │ │ ├── InputArea.vue # 输入区域 │ │ │ ├── MessagesArea.vue # 消息区域 │ │ │ ├── MarkdownRenderer.vue # Markdown渲染器 │ │ │ └── MessageActions.vue # 消息操作组件 │ │ ├── views/ # 页面视图 │ │ │ ├── ChatView.vue # 主聊天界面 │ │ │ ├── KnowledgeView.vue # 知识库管理 │ │ │ ├── HistoryView.vue # 历史记录 │ │ │ ├── SettingsView.vue # 系统设置 │ │ │ └── LoginView.vue # 登录页面 │ │ ├── stores/ # Pinia状态管理 │ │ │ └── userStore.ts # 用户状态管理 │ │ ├── utils/ # 工具函数 │ │ │ ├── api.ts # API请求封装 │ │ │ └── constants.ts # 常量定义 │ │ ├── types/ # TypeScript类型定义 │ │ │ └── index.ts # 类型导出 │ │ ├── config/ # 配置文件 │ │ │ └── env.ts # 环境配置 │ │ ├── assets/ # 静态资源 │ │ ├── App.vue # 根组件 │ │ └── main.ts # 应用入口 │ ├── public/ # 公共资源 │ ├── package.json # 前端依赖配置 │ ├── vite.config.ts # Vite配置 │ └── tsconfig.json # TypeScript配置 │ ├── backend/ # Flask后端应用 │ ├── app/ │ │ ├── __init__.py # 应用初始化 │ │ ├── models/ # 数据模型 │ │ │ ├── user.py # 用户模型 │ │ │ ├── conversation.py # 对话模型 │ │ │ ├── document.py # 文档模型 │ │ │ ├── api_key.py # API密钥模型 │ │ │ └── settings.py # 设置模型 │ │ ├── routes/ # API路由 │ │ │ ├── auth.py # 认证路由 │ │ │ ├── chat.py # 聊天路由 │ │ │ ├── knowledge.py # 知识库路由 │ │ │ ├── audio.py # 音频路由 │ │ │ ├── files.py # 文件路由 │ │ │ ├── images.py # 图片路由 │ │ │ ├── models.py # 模型路由 │ │ │ ├── settings.py # 设置路由 │ │ │ └── web_search.py # 网页搜索路由 │ │ ├── services/ # 业务服务 │ │ │ ├── ai_service.py # AI模型服务 │ │ │ ├── knowledge_service.py # 知识库服务 │ │ │ ├── audio_service.py # 音频服务 │ │ │ ├── file_service.py # 文件服务 │ │ │ ├── vector_service.py # 向量服务 │ │ │ ├── ollama_service.py # Ollama服务 │ │ │ ├── web_search_service.py # 网页搜索服务 │ │ │ └── cache_service.py # 缓存服务 │ │ ├── middleware/ # 中间件 │ │ │ └── performance_middleware.py # 性能监控中间件 │ │ └── exceptions.py # 自定义异常 │ ├── config/ # 配置文件 │ │ ├── __init__.py # 配置初始化 │ │ └── development.yaml # 开发环境配置 │ ├── uploads/ # 文件上传目录 │ ├── knowledge_base/ # 知识库存储目录 │ ├── requirements.txt # Python依赖 │ ├── run.py # 应用启动脚本 │ ├── init_db.py # 数据库初始化脚本 │ └── Dockerfile # Docker镜像配置 │ ├── docker-compose.yml # Docker Compose配置 ├── .env.example # 环境变量示例 ├── .gitignore # Git忽略文件 └── README.md # 项目说明文档 ``` ## 🔧 API接口文档 ### 认证相关 - `POST /api/auth/register` - 用户注册 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/refresh` - 刷新Token - `POST /api/auth/logout` - 用户登出 - `GET /api/auth/profile` - 获取用户信息 ### 聊天相关 - `POST /api/chat/completion` - 发送聊天消息 - `GET /api/chat/conversations` - 获取对话列表 - `GET /api/chat/conversations/:id` - 获取对话详情 - `DELETE /api/chat/conversations/:id` - 删除对话 - `POST /api/chat/stream` - 流式聊天(WebSocket) ### 知识库相关 - `POST /api/knowledge/upload` - 上传文档到知识库 - `GET /api/knowledge/documents` - 获取文档列表 - `GET /api/knowledge/documents/:id` - 获取文档详情 - `DELETE /api/knowledge/documents/:id` - 删除文档 - `POST /api/knowledge/search` - 知识库搜索 - `POST /api/knowledge/sync` - 同步知识库 ### 文件处理相关 - `POST /api/files/upload` - 上传文件 - `POST /api/files/parse` - 解析文件内容 - `POST /api/files/ocr` - OCR文字识别 - `GET /api/files/:id` - 获取文件信息 - `DELETE /api/files/:id` - 删除文件 ### 音频处理相关 - `POST /api/audio/transcribe` - 语音转文字 - `POST /api/audio/synthesize` - 文字转语音 - `POST /api/audio/stream` - 实时音频流 ### 系统设置相关 - `GET /api/settings` - 获取系统设置 - `PUT /api/settings` - 更新系统设置 - `GET /api/models` - 获取可用模型列表 - `POST /api/models/test` - 测试模型连接 ## 🐳 Docker部署 ### 1. Docker Compose配置 ```yaml version: '3.8' services: frontend: build: ./frontend ports: - "3000:3000" environment: - VITE_API_BASE_URL=http://backend:5000 depends_on: - backend backend: build: ./backend ports: - "5000:5000" environment: - MYSQL_HOST=mariadb - MYSQL_PORT=3306 - REDIS_HOST=redis volumes: - ./uploads:/app/uploads - ./knowledge_base:/app/knowledge_base depends_on: - mariadb - redis mariadb: image: mariadb:10.11 environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: ai_assistant_db MYSQL_USER: ai_assistant MYSQL_PASSWORD: password volumes: - mariadb_data:/var/lib/mysql ports: - "3306:3306" redis: image: redis:7-alpine volumes: - redis_data:/data ports: - "6379:6379" volumes: mariadb_data: redis_data: ``` ## 🔍 监控和日志 ### 1. 应用监控 ```python # 性能监控中间件 @app.before_request def before_request(): g.start_time = time.time() @app.after_request def after_request(response): if hasattr(g, 'start_time'): duration = time.time() - g.start_time logger.info(f"Request took {duration:.3f}s") return response ``` ### 2. 日志配置 ```python import logging from logging.handlers import RotatingFileHandler # 配置日志 handler = RotatingFileHandler( 'app.log', maxBytes=10000000, # 10MB backupCount=5 ) handler.setLevel(logging.INFO) formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) handler.setFormatter(formatter) app.logger.addHandler(handler) ``` ## 🤝 贡献指南 ### 开发流程 1. Fork 项目仓库 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ### 代码规范 - 遵循 PEP 8 (Python) 和 Airbnb (JavaScript) 代码规范 - 使用 TypeScript 类型注解 - 添加适当的注释和文档 - 编写单元测试 ### 提交信息规范 ``` feat: 添加新功能 fix: 修复bug docs: 文档更新 style: 代码格式调整 refactor: 代码重构 test: 测试相关 chore: 构建过程或辅助工具的变动 ``` ## 📞 支持与反馈 - **问题反馈**: [GitHub Issues](https://gitee.com/lh_wuyan/ai-rag-sys/issues) - **功能建议**: [GitHub Discussions](https://gitee.com/lh_wuyan/ai-rag-sys/discussions) - **文档更新**: [Wiki](https://gitee.com/lh_wuyan/ai-rag-sys/wiki) ## 📄 许可证 本项目采用 Apache-2.0 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🙏 致谢 感谢以下开源项目的贡献: - [OpenAI](https://openai.com/) - GPT系列模型 - [Anthropic](https://www.anthropic.com/) - Claude系列模型 - [Ollama](https://ollama.ai/) - 本地大模型运行 - [Vue.js](https://vuejs.org/) - 前端框架 - [Flask](https://flask.palletsprojects.com/) - Python Web框架 - [FAISS](https://github.com/facebookresearch/faiss) - 向量相似度搜索 --- **AI-RAG-SYS** - 让AI更智能,让工作更高效 🚀