# rag_system **Repository Path**: joyamon/rag_system ## Basic Information - **Project Name**: rag_system - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-16 - **Last Updated**: 2026-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RAG 智能问答系统 基于 LangChain + FastAPI 的本地化 RAG 智能问答系统,支持多格式文档加载、语义检索、流式问答、多对话管理。 ## 功能特性 - 📄 **多格式支持**:PDF、Word(.docx)、PPT(.pptx)、网页(URL)、Markdown、纯文本 - 🔍 **语义检索**:基于 FAISS 向量相似度的精准文档检索,支持相似度阈值过滤 - 💬 **流式问答**:SSE 流式输出实时呈现回答,支持多供应商 LLM(DashScope / DeepSeek / OpenAI) - 🔄 **增量更新**:支持追加新文档,无需全量重建索引 - 💾 **对话持久化**:浏览器 localStorage 保存对话历史,支持新开 / 切换 / 删除对话 - ⚙️ **在线配置**:系统状态页支持在线修改 LLM 配置(模型、API Key、参数等) - 🎨 **SPA 前端**:纯 HTML/CSS/JS 三页面单页应用,响应式设计 ## 项目结构 ``` rag_system/ ├── config.yaml # 配置文件 ├── requirements.txt # Python 依赖 ├── run.py # 主启动脚本 ├── docs/ # 文档存放目录(自动加载) ├── data/ │ ├── uploads/ # 上传文件临时存储 │ └── vectorstore/ # FAISS 向量索引 ├── frontend/ # SPA 前端页面 │ ├── index.html # 主页面 │ ├── css/ │ │ └── style.css # 样式 │ └── js/ │ ├── api.js # API 客户端 │ ├── chat.js # 对话页逻辑 │ ├── documents.js # 文档管理 / 系统状态页逻辑 │ └── app.js # 主应用逻辑 ├── src/ │ ├── __init__.py │ ├── api.py # FastAPI REST API (12 个端点) │ ├── config.py # YAML 配置管理 │ ├── document_loader.py # 多格式文档加载 │ ├── text_splitter.py # 文本分块 │ ├── embedding.py # 嵌入模型(DashScope API) │ ├── vectorstore.py # FAISS 向量存储管理 │ └── rag_chain.py # RAG 问答链(流式/非流式) ``` ## 快速启动 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 配置文件 编辑 `config.yaml`,设置 LLM 和嵌入模型参数: ```yaml llm: provider: dashscope # 供应商: dashscope / deepseek / openai model_name: qwen3.7-max-2026-06-08 api_base: https://dashscope.aliyuncs.com/compatible-mode/v1 api_key: your-api-key-here temperature: 0.7 max_tokens: 2048 embeddings: model_name: qwen3.7-text-embedding api_base: https://dashscope.aliyuncs.com/compatible-mode/v1 api_key: your-api-key-here ``` 也可在系统运行后,通过前端 **系统状态** 页面在线修改 LLM 配置。 ### 3. 放置文档 将 PDF、Word、PPT、Markdown、TXT 文件放入 `docs/` 目录。 ### 4. 启动系统 ```bash python run.py ``` 默认监听 `http://localhost:8000`,可通过 `--port` 参数指定端口: ```bash python run.py --port 8001 ``` ### 5. 访问 打开浏览器访问 `http://localhost:8000` 即可使用。 ## 使用说明 1. **文档管理**:进入「文档管理」页面,可上传文件、添加网页 URL、重新加载文档,系统自动构建向量索引 2. **智能问答**:在「对话」页面输入问题,系统基于已加载文档检索相关内容并生成回答(流式输出) 3. **对话管理**:左侧列表面板支持新建 / 切换 / 删除对话,消息自动保存在浏览器中 4. **在线配置**:在「系统状态」页面可在线修改 LLM 供应商、模型、API Key 等参数,即时生效 ## 支持的文档格式 | 格式 | 扩展名 | 依赖库 | |------|--------|--------| | PDF | .pdf | PyPDF2 | | Word | .docx | python-docx | | PowerPoint | .pptx | python-pptx | | 网页 | URL | requests / BeautifulSoup4 | | Markdown | .md | - | | 纯文本 | .txt | - | ## API 端点 | 方法 | 路径 | 说明 | |------|------|------| | GET | /api/health | 健康检查 | | GET | /api/status | 系统状态(向量库、文档数等) | | GET | /api/config | 获取当前配置 | | PUT | /api/config | 更新 LLM 配置 | | POST | /api/query | 问答(非流式) | | POST | /api/query/stream | 问答(SSE 流式) | | POST | /api/documents/reload | 重新加载 docs/ 目录文档 | | POST | /api/documents/upload | 上传文件 | | POST | /api/documents/url | 添加网页 URL | | GET | /api/documents | 文档列表 | ## 技术栈 - **RAG 框架**:LangChain v0.3+ - **向量数据库**:FAISS-CPU - **Web 框架**:FastAPI + uvicorn - **前端**:纯 HTML/CSS/JS SPA(无框架依赖) - **LLM 支持**:DashScope(通义千问)/ DeepSeek / OpenAI(通过 langchain-openai 兼容接口) - **文档解析**:PyPDF2、python-docx、python-pptx、BeautifulSoup4