# RAG 原型 **Repository Path**: myhfw003/rag-prototype ## Basic Information - **Project Name**: RAG 原型 - **Description**: RAG原型:一个专注于研究和实现检索增强生成(RAG)技术的开源项目,支持高效的数据检索与内容生成,适用于问答系统、文本摘要等多个领域。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2025-06-24 - **Last Updated**: 2025-08-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RAG + AI 智能问答系统 ## 项目背景 本项目是一个基于 RAG(Retrieval Augmented Generation,检索增强生成)技术的智能问答系统原型,旨在为学生学习和研究 RAG + AI 技术提供参考。 ### 什么是 RAG? RAG(检索增强生成)是一种结合了信息检索和文本生成的AI技术。它通过以下步骤工作: 1. **文档处理**:将用户上传的文档分割成小块(chunks) 2. **向量化**:使用嵌入模型将文档块转换为向量表示 3. **存储**:将向量存储在向量数据库中 4. **检索**:当用户提问时,将问题向量化并检索相关文档块 5. **生成**:将检索到的相关内容作为上下文,结合用户问题生成准确回答 ### 技术优势 - **准确性**:基于用户提供的具体文档内容回答问题,避免AI幻觉 - **时效性**:可以处理最新的文档内容,不受模型训练时间限制 - **可控性**:回答基于明确的文档来源,可追溯和验证 - **专业性**:针对特定领域文档提供专业知识问答 ## 功能特性 ### 📁 文档上传 - 支持多种文档格式:TXT、MD、DOC、DOCX、PDF - 拖拽上传和点击选择两种方式 - 自动文档分块处理 - 向量化存储,支持语义检索 ### 💬 智能问答 - 基于上传文档内容的精准问答 - 实时流式回复,提升用户体验 - 上下文理解,支持多轮对话 - 回答质量高,减少AI幻觉现象 ### 🎨 用户界面 - 现代化响应式设计 - 简洁直观的操作流程 - 实时上传进度和状态反馈 - PC端优化的交互体验 - 运行效果如下: ![20250804112740-2025-08-04-11-27-43](https://oss.9ihub.com/test/20250804112740-2025-08-04-11-27-43.png) ![20250804112803-2025-08-04-11-28-05](https://oss.9ihub.com/test/20250804112803-2025-08-04-11-28-05.png) ![20250804112819-2025-08-04-11-28-21](https://oss.9ihub.com/test/20250804112819-2025-08-04-11-28-21.png) ## 技术架构 ### 后端技术栈 - **框架**:ASP.NET Core 8.0 - **数据库**:PostgreSQL + Entity Framework Core - **AI服务**:讯飞星火大模型 - **向量处理**:讯飞嵌入服务 - **架构模式**:Clean Architecture(分层架构) ### 前端技术栈 - **框架**:Vue.js 3 - **构建工具**:Vite - **路由**:Vue Router - **样式**:原生CSS(响应式设计) - **HTTP客户端**:Fetch API ### 系统架构图 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Vue.js 前端 │───▶│ ASP.NET Core │───▶│ PostgreSQL │ │ │ │ 后端API │ │ 数据库 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ ▼ ┌─────────────────┐ │ 讯飞AI服务 │ │ (嵌入+大语言模型) │ └─────────────────┘ ``` ## 快速开始 ### 环境要求 - **后端**: - .NET 8.0 SDK - PostgreSQL 数据库 - 讯飞开放平台账号(获取API密钥) - **前端**: - Node.js 18+ - npm 或 pnpm ### 配置讯飞API 1. 注册讯飞开放平台账号:https://www.xfyun.cn/ 2. 创建应用,获取以下信息: - AppId - ApiKey - ApiSecret 3. 在后端配置文件中填入相关信息 ### 启动后端 1. **克隆项目** ```bash git clone cd rag-prototype ``` 2. **配置数据库连接** 编辑 `RAGApp.Api/appsettings.json`: ```json { "ConnectionStrings": { "DefaultConnection": "Host=localhost;Database=ragapp;Username=your_username;Password=your_password" }, "XunfeiConfig": { "AppId": "your_app_id", "ApiKey": "your_api_key", "ApiSecret": "your_api_secret" } } ``` 3. **安装依赖并运行迁移** ```bash cd RAGApp.Api dotnet restore dotnet ef database update ``` 4. **启动后端服务** ```bash dotnet run ``` 后端将在 `http://localhost:5206` 启动 ### 启动前端 1. **进入前端目录** ```bash cd ragApp ``` 2. **安装依赖** ```bash npm install # 或使用 pnpm pnpm install ``` 3. **启动开发服务器** ```bash npm run dev # 或使用 pnpm pnpm dev ``` 前端将在 `http://localhost:5173` 启动 ## 使用指南 ### 1. 上传文档 - 访问文档上传页面 - 输入文档标题(必填) - 输入文档来源(可选) - 选择或拖拽文件上传 - 等待系统处理完成 ### 2. 开始问答 - 点击"去聊天"或直接访问AI问答页面 - 输入与上传文档相关的问题 - 获得基于文档内容的智能回答 ## 项目结构 ``` rag-prototype/ ├── RAGApp.Api/ # 后端API项目 │ ├── Controllers/ # 控制器 │ ├── Services/ # 业务服务 │ ├── Models/ # 数据模型 │ ├── Data/ # 数据访问层 │ └── Configurations/ # 配置文件 ├── ragApp/ # 前端Vue项目 │ ├── src/ │ │ ├── views/ # 页面组件 │ │ ├── components/ # 通用组件 │ │ ├── router/ # 路由配置 │ │ └── assets/ # 静态资源 │ └── public/ # 公共文件 └── README.md # 项目说明 ``` ## 开发说明 ### 后端API接口 - `POST /api/document` - 上传文档 - `GET /api/document` - 获取文档列表 - `DELETE /api/document/{id}` - 删除文档 - `POST /api/chat` - 发送问答请求 ### 数据流程 1. **文档上传**:文件 → 文本提取 → 分块 → 向量化 → 存储 2. **问答查询**:问题 → 向量化 → 相似度检索 → 上下文组装 → AI生成回答 ## 学习资源 - [RAG技术原理详解](https://example.com) - [讯飞开放平台文档](https://www.xfyun.cn/doc/) - [ASP.NET Core 官方文档](https://docs.microsoft.com/aspnet/core/) - [Vue.js 官方文档](https://vuejs.org/) ## 贡献指南 欢迎提交Issue和Pull Request来改进项目。 ## 许可证 本项目仅供学习和研究使用。 --- > 💡 **提示**:这是一个用于学习RAG技术的原型项目,适合学生和开发者了解RAG系统的基本实现原理。