# 智能文档检索系统 **Repository Path**: lhdxhl/frontend ## Basic Information - **Project Name**: 智能文档检索系统 - **Description**: 基于 LlamaIndex 和 DeepSeek 的智能文档检索系统 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-13 - **Last Updated**: 2026-01-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RAG 系统 - LlamaIndex + DeepSeek + PostgreSQL 基于 LlamaIndex、DeepSeek 和 PostgreSQL 构建的智能文档检索系统。 ## 功能特性 - 📄 **文档上传**: 支持 PDF、DOCX、TXT 格式文档上传 - 🔍 **智能检索**: 基于向量相似度的文档检索 - 💡 **AI 问答**: 使用 DeepSeek 模型生成智能回答 - 📊 **来源追溯**: 显示回答的参考文档来源 - 🎨 **美观界面**: 现代化的 Web 前端界面 - 🗄️ **向量存储**: 使用 PostgreSQL 存储向量数据 ## 技术栈 ### 后端 - **Python 3.8+** - **FastAPI**: Web 框架 - **LlamaIndex**: RAG 框架 - **PostgreSQL**: 向量数据库 - **psycopg2**: PostgreSQL 适配器 - **DeepSeek API**: LLM 和 Embedding 模型 ### 前端 - **Flask**: Python Web 框架 - **HTML5 + CSS3 + JavaScript** - 响应式设计 - 拖拽上传 - 实时通知 ## 系统要求 - Python 3.8 或更高版本 - PostgreSQL 12 或更高版本(支持 pgvector 扩展) - DeepSeek API Key - 8GB+ RAM(推荐) - 现代浏览器(Chrome、Firefox、Edge 等) ## 安装步骤 ### 1. 克隆或下载项目 ```bash cd e:/langchain/rag ``` ### 2. 安装 PostgreSQL 并启用 pgvector 扩展 #### Windows: 下载并安装 PostgreSQL: https://www.postgresql.org/download/windows/ 安装 pgvector 扩展: ```sql -- 在 psql 命令行中执行 CREATE EXTENSION IF NOT EXISTS vector; ``` #### Linux/Mac: ```bash # Ubuntu/Debian sudo apt-get install postgresql postgresql-contrib # 安装 pgvector git clone --branch v0.5.0 https://github.com/pgvector/pgvector.git cd pgvector make make install ``` ### 3. 创建数据库 ```bash # 使用 psql 创建数据库 psql -U postgres CREATE DATABASE rag_db; \c rag_db CREATE EXTENSION IF NOT EXISTS vector; \q ``` ### 4. 配置环境变量 复制 `.env.example` 文件并重命名为 `.env`: ```bash cp .env.example .env ``` 编辑 `.env` 文件,填入你的配置: ```env # Database Configuration DATABASE_HOST=localhost DATABASE_PORT=5432 DATABASE_NAME=rag_db DATABASE_USER=postgres DATABASE_PASSWORD=your_password # DeepSeek API DEEPSEEK_API_KEY=your_deepseek_api_key_here DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 DEEPSEEK_MODEL=deepseek-chat # Application Settings APP_HOST=0.0.0.0 APP_PORT=8000 CORS_ORIGINS=http://localhost:3000,http://127.0.0.1:3000 # File Upload Settings MAX_FILE_SIZE=10485760 UPLOAD_DIR=./uploads ``` **获取 DeepSeek API Key**: 访问 https://platform.deepseek.com/ 注册并获取 API Key ### 5. 安装 Python 依赖 ```bash pip install -r requirements.txt ``` ### 6. 初始化数据库 ```bash python init_db.py ``` 这将创建必要的数据库表。 ### 7. 启动后端服务 ```bash python backend.py ``` 后端服务将在 `http://localhost:8000` 启动。 ### 8. 启动前端 **最简单的方法:使用启动脚本**(Windows 用户) 直接双击运行 `start.bat` 文件,系统会自动: 1. 启动后端服务 2. 启动 Flask 前端服务 3. 在浏览器中打开界面 **手动启动(所有平台):** 启动 Flask 前端服务器: ```bash python frontend_server.py ``` 然后在浏览器中访问 `http://localhost:3000` Flask 前端服务器会提供: - 主页面: http://localhost:3000 - 自动处理所有静态文件(CSS, JS) - 自动处理路由和错误 ## 使用指南 ### 上传文档 1. 点击上传区域或拖拽文件到上传区域 2. 支持 PDF、DOCX、TXT 格式 3. 文件将被自动处理并添加到向量数据库 ### 查询文档 1. 在查询输入框中输入问题 2. 选择检索数量(3、5 或 10) 3. 点击"提交查询"按钮 4. 系统将返回基于文档的智能回答和相关来源 ### 管理文档 - 查看所有已上传的文档 - 删除不需要的文档 ## API 端点 ### 后端 API 文档 启动服务后访问: `http://localhost:8000/docs` 主要端点: - `POST /upload` - 上传文档 - `POST /query` - 查询文档 - `GET /documents` - 获取文档列表 - `DELETE /documents/{id}` - 删除文档 - `GET /` - API 信息 ## 项目结构 ``` rag/ ├── backend.py # FastAPI 后端主文件 ├── frontend_server.py # Flask 前端服务器 ├── init_db.py # 数据库初始化脚本 ├── requirements.txt # Python 依赖 ├── .env.example # 环境变量示例 ├── README.md # 项目文档 ├── QUICKSTART.md # 快速开始指南 ├── TROUBLESHOOTING.md # 故障排除指南 ├── start.bat # Windows 一键启动脚本 ├── frontend/ # 前端文件 │ ├── index.html # 主页面 │ ├── styles.css # 样式文件 │ └── app.js # JavaScript 逻辑 └── uploads/ # 上传文件存储目录(自动创建) ``` ## 常见问题 ### 1. 数据库连接失败 检查: - PostgreSQL 服务是否运行 - `.env` 文件中的数据库配置是否正确 - pgvector 扩展是否已安装 ### 2. DeepSeek API 调用失败 检查: - API Key 是否正确 - 网络连接是否正常 - API 余额是否充足 ### 3. 文档上传失败 检查: - 文件格式是否支持(PDF、DOCX、TXT) - 文件大小是否超过限制(默认 10MB) - uploads 目录是否有写入权限 ### 4. 查询无结果 检查: - 是否已上传文档 - 文档是否成功处理 - 查询问题是否与文档内容相关 ## 性能优化建议 1. **向量维度**: 使用更小的嵌入模型可以加快检索速度 2. **数据库索引**: 确保已创建适当的索引 3. **缓存**: 对频繁查询的结果进行缓存 4. **分块策略**: 调整文档分块大小以获得更好的检索效果 ## 安全建议 1. 不要将 `.env` 文件提交到版本控制 2. 使用环境变量管理敏感信息 3. 在生产环境中使用 HTTPS 4. 实施用户认证和授权 5. 限制文件上传大小和类型 6. 定期备份数据库 ## 扩展功能 可以考虑添加: - 用户认证系统 - 文档版本控制 - 批量上传 - 多语言支持 - 高级搜索过滤 - 导出功能 - 统计分析 - 文档预览 ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request! ## 联系方式 如有问题或建议,请通过 Issue 联系。