# rag_knowledge_base **Repository Path**: linzm1007/rag_knowledge_base ## Basic Information - **Project Name**: rag_knowledge_base - **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-03-17 - **Last Updated**: 2026-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业内部知识库 RAG 系统 基于 LangChain + vLLM 实现的智能问答系统,专为公司内部开发项目相关的 Wiki 文档知识库设计。 ## 技术栈 - **后端**: FastAPI + LangChain - **向量数据库**: Chroma - **LLM**: vLLM (Qwen3-0.6B) - **嵌入模型**: BAAI/bge-base-zh-v1.5 ## 环境要求 - Python 3.11+ - CUDA 12.8+ (如使用 GPU) - vLLM 模型服务 (已单独部署) - 嵌入模型: BAAI/bge-base-zh-v1.5 (本地部署) ## 模型部署 ### 1. LLM 模型部署 (Qwen3-0.6B) 使用 vLLM 部署: ```bash # 激活环境 conda activate vllm_0120_py312 # 启动 vLLM 服务 vllm serve /mnt/l/models/Qwen3-0.6B \ --port 8000 \ --max-model-len 40960 \ --gpu-memory-utilization 0.9 \ --served-model-name qwen \ --api-key EMPTY ``` ### 2. 嵌入模型部署 (bge-base-zh-v1.5) 本项目采用**本地加载方式**,不需要单独部署服务。模型在首次启动时自动加载到内存。 #### 方式一:使用本地模型(推荐) 模型已下载到:`/mnt/l/models/bge-base-zh-v1.5` 在 `.env` 中配置: ```bash EMBEDDING_MODEL=/mnt/l/models/bge-base-zh-v1.5 EMBEDDING_DEVICE=cpu # 或 cuda ``` #### 方式二:下载新模型 如需下载新模型: ```bash # 方法1: 使用 huggingface-cli (需要网络) huggingface-cli download BAAI/bge-base-zh-v1.5 --local-dir /path/to/models/bge-base-zh-v1.5 # 方法2: 使用 Git (需要网络) git lfs install git clone https://huggingface.co/BAAI/bge-base-zh-v1.5 /path/to/models/bge-base-zh-v1.5 # 方法3: 设置镜像下载 (国内加速) export HF_ENDPOINT=https://hf-mirror.com huggingface-cli download BAAI/bge-base-zh-v1.5 --local-dir /path/to/models/bge-base-zh-v1.5 ``` #### GPU 加速(如需要) 如使用 GPU 加速嵌入计算,修改配置: ```bash EMBEDDING_MODEL=/mnt/l/models/bge-base-zh-v1.5 EMBEDDING_DEVICE=cuda ``` ## 快速开始 ### 1. 激活环境 ```bash # 激活已配置好的 conda 环境 conda activate vllm_0120_py312 ``` ### 2. 配置环境变量 复制并修改 `.env` 文件: ```bash # vLLM 配置 VLLM_API_BASE=http://localhost:8000/v1 VLLM_MODEL=qwen VLLM_API_KEY=EMPTY # 嵌入模型配置 (本地模型路径) EMBEDDING_MODEL=/mnt/l/models/bge-base-zh-v1.5 EMBEDDING_DEVICE=cpu # Chroma 配置 CHROMA_PERSIST_DIRECTORY=./data/chroma_db # 知识库路径 KNOWLEDGE_PATH=./knowledge # 服务配置 API_HOST=0.0.0.0 API_PORT=8001 ``` ### 3. 启动服务 ```bash cd /mnt/d/workspace/agent/rag_knowledge_base # 设置 Python 路径 export PYTHONPATH=/mnt/d/workspace/agent/rag_knowledge_base:$PYTHONPATH # 启动 Web 服务 python -m uvicorn app.main:app --host 0.0.0.0 --port 8001 ``` ### 4. 访问 浏览器打开: http://localhost:8001 ## 添加知识文档 ### 支持格式 - Markdown (.md) - 文本 (.txt) - PDF (.pdf) ### 操作步骤 1. 将文档放入 `knowledge/` 目录 2. 删除旧向量数据库(如需重建): ```bash rm -rf ./data/chroma_db ``` 3. 重启服务,会自动重新构建向量库 ## 项目结构 ``` rag_knowledge_base/ ├── app/ │ ├── main.py # FastAPI 主程序 + 前端页面 │ ├── api/routes.py # API 路由 │ ├── core/config.py # 配置管理 │ └── rag/ │ ├── chain.py # RAG 问答链 │ └── vectorstore.py # 向量存储 ├── knowledge/ # 知识库文档目录 ├── static/css/ # 静态样式 ├── data/chroma_db/ # 向量数据库存储 ├── .env # 环境配置 ├── requirements.txt # Python 依赖 └── README.md # 项目说明 ``` ## API 接口 ### 问答接口 ```bash POST /api/query # 请求 curl -X POST http://localhost:8001/api/query \ -H "Content-Type: application/json" \ -d '{"question":"如何启动项目?"}' # 响应 { "answer": "回答内容...", "sources": [ {"content": "文档片段...", "source": "./knowledge/xxx.md"} ] } ``` ### 健康检查 ```bash GET /api/health # 返回: {"status":"ok"} ``` ## 常见问题 ### Q: 嵌入模型下载失败? A: 使用本地模型路径,如 `/mnt/l/models/bge-base-zh-v1.5` ### Q: 向量库如何更新? A: 添加新文档后,删除 `data/chroma_db` 目录,重启服务自动重建 ### Q: 如何修改模型? A: 修改 `.env` 中的 `VLLM_MODEL` 和 `VLLM_API_BASE` ## 启动脚本 (可选) 创建 `start.sh` 方便启动: ```bash #!/bin/bash cd "$(dirname "$0")" source /root/miniconda3/bin/activate vllm_0120_py312 export PYTHONPATH="$(pwd):$PYTHONPATH" python -m uvicorn app.main:app --host 0.0.0.0 --port 8001 ``` ```bash chmod +x start.sh ./start.sh ```