# RAG知识库系统 **Repository Path**: cczeros/rag-knowledge-base-system ## Basic Information - **Project Name**: RAG知识库系统 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-03 - **Last Updated**: 2026-06-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🧠 RAG 知识库系统 基于 RAG(检索增强生成)架构的智能知识库问答系统。 ## 技术栈 | 层级 | 技术 | 说明 | |------|------|------| | **LLM** | OpenAI GPT / 兼容API | 大语言模型问答生成 | | **RAG 框架** | LangChain | LCEL 链式调用、Chain、Memory | | **Embedding** | BGE (sentence-transformers) | 本地运行,无需 API | | **向量数据库** | Milvus Lite | 轻量版,无需 Docker | | **重排序** | BGE-Reranker | 提升检索精度 | | **文本处理** | LangChain TextSplitter | 智能文本分块 | | **Web 框架** | Flask | RESTful API + Web 界面 | | **文档解析** | PyPDF2, python-docx | 多格式文档支持 | ## 项目结构 ``` rag-kb-system/ ├── app/ │ ├── __init__.py │ ├── app.py # Flask 应用工厂 │ ├── config.py # 全局配置 │ ├── routes.py # API 路由 │ ├── templates/ │ │ └── index.html # Web 界面 │ └── services/ │ ├── __init__.py │ ├── document_loader.py # 文档加载与分块 │ ├── embedding_service.py # Embedding 向量化 │ ├── vector_store.py # Milvus 向量存储 │ ├── reranker.py # BGE 重排序 │ ├── rag_service.py # RAG 检索服务 │ └── llm_service.py # LangChain LLM 服务 ├── data/ │ ├── documents/ # 上传的文档 │ └── vectordb/ # Milvus 向量数据 ├── scripts/ │ └── create_sample_docs.py # 创建示例文档 ├── .env # 环境配置 ├── requirements.txt # Python 依赖 ├── start.bat # Windows 启动脚本 ├── start.sh # Linux/Mac 启动脚本 └── README.md ``` ## 快速开始 ### 1. 环境要求 - Python 3.10+ - Windows / macOS / Linux ### 2. 配置 API Key 编辑 `.env` 文件,设置你的 OpenAI API Key: ```env OPENAI_API_KEY=sk-your-actual-api-key OPENAI_BASE_URL=https://api.openai.com/v1 ``` > 💡 **没有 API Key 也能运行!** 系统内置了演示模式,检索和分块功能完全可用,只是回答部分会显示模拟结果。 ### 3. 启动系统 **Windows:** ``` 双击 start.bat ``` **或命令行启动:** ```bash # 创建虚拟环境 python -m venv venv # 激活虚拟环境 # Windows: venv\Scripts\activate # Linux/Mac: source venv/bin/activate # 安装依赖 pip install -r requirements.txt # 启动服务 python -m app.app ``` ### 4. 访问系统 打开浏览器访问: **http://localhost:5000** ### 5. 创建示例文档 ```bash python scripts/create_sample_docs.py ``` 然后在 Web 界面点击"批量导入已有文档"按钮。 ## API 接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/` | Web 界面 | | POST | `/api/documents/upload` | 上传文档 | | GET | `/api/documents/list` | 文档列表 | | DELETE | `/api/documents/delete/` | 删除文档 | | POST | `/api/documents/import-all` | 批量导入 | | POST | `/api/search` | 语义检索 | | POST | `/api/ask` | RAG 问答 | | POST | `/api/chat` | 多轮对话 | | POST | `/api/chat/clear` | 清除记忆 | | GET | `/api/stats` | 系统统计 | | GET | `/api/health` | 健康检查 | ### API 调用示例 ```bash # RAG 问答 curl -X POST http://localhost:5000/api/ask \ -H "Content-Type: application/json" \ -d '{"question": "什么是RAG?", "top_k": 5, "use_rerank": true}' # 语义检索 curl -X POST http://localhost:5000/api/search \ -H "Content-Type: application/json" \ -d '{"query": "LangChain核心组件"}' ``` ## RAG 工作流程 ``` 用户提问 ↓ 1. Query Embedding → 将问题转为向量 ↓ 2. Vector Search → 在 Milvus 中检索相似文档 ↓ 3. BGE-Reranker → 对检索结果重排序 ↓ 4. Context Build → 构建上下文 Prompt ↓ 5. LLM Generate → 调用大模型生成回答 ↓ 返回答案 + 参考来源 ``` ## 核心特性 - ✅ **本地 Embedding**: 使用 BGE 模型本地向量化,无需 API 调用 - ✅ **智能分块**: LangChain RecursiveCharacterTextSplitter 递归分块 - ✅ **语义检索**: Milvus 向量数据库 + 余弦相似度 - ✅ **重排序**: BGE-Reranker 提升检索精度 - ✅ **LCEL 链式调用**: LangChain Expression Language - ✅ **对话记忆**: ConversationSummaryBufferMemory - ✅ **多格式文档**: TXT, MD, PDF, DOCX - ✅ **演示模式**: 无 API Key 也能体验完整检索流程