# my-python-project **Repository Path**: shidehong/my-python-project ## Basic Information - **Project Name**: my-python-project - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-07 - **Last Updated**: 2026-04-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EduRAG 智能问答系统 - 启动说明文档 ## 项目简介 EduRAG 是一个集成 MySQL + Milvus 向量数据库 + BERT 分类器 + 大语言模型(DeepSeek-V3)的智能教育问答系统,支持流式输出和多轮对话历史。 --- ## 目录结构 ``` rag1/ ├── my-python-project/ # 本项目 │ ├── d_modular_rag/ │ │ ├── app.py # FastAPI 主入口 │ │ ├── new_main.py # 集成系统入口 │ │ ├── config.ini # 全局配置文件 │ │ ├── base/ # 配置 & 日志模块 │ │ ├── mysql_qa/ # MySQL + Redis + BM25 检索 │ │ ├── rag_qa/ # RAG 核心模块 │ │ │ ├── core/ # 向量检索、分类器、RAG 系统 │ │ │ ├── edu_document_loaders/ # 文档加载器 │ │ │ └── edu_text_spliter/ # 文本分割器 │ │ ├── static/ # 前端静态文件 │ │ └── logs/ # 日志目录 │ ├── create_db.py # MySQL 数据库初始化脚本 │ └── README.md # 本文档 │ └── my-python-project-1/ └── models/ # 本地模型文件 ├── bge-m3/ # BGE-M3 向量嵌入模型 ├── bge-reranker-large/ # BGE-Reranker 重排序模型 ├── bert-base-chinese/ # BERT 中文基础模型 └── bert_query_classifier/ # 查询分类模型 ``` --- ## 环境要求 | 组件 | 版本/说明 | |------|---------| | Python | 3.11 | | MySQL | 8.0+,账号 root,密码 sdh123569 | | Redis | 6.0+(可选,缓存加速) | | Milvus | 2.x,运行在 localhost:19530 | | 操作系统 | Windows 11 | --- ## 启动前准备 ### 1. 安装依赖包 ```bash cd c:\Users\14019\Desktop\rag1\my-python-project pip install -r d_modular_rag/requirments.txt ``` ### 2. 初始化 MySQL 数据库 首次运行需要创建数据库: ```bash cd c:\Users\14019\Desktop\rag1\my-python-project python create_db.py ``` 输出 `数据库 subjects_kg 创建成功` 即为成功。 > **说明:** 如需同时创建业务数据表 `jpkb`,请在 MySQL 中执行对应的建表 SQL。 ### 3. 启动 Milvus 向量数据库 Milvus 需通过 Docker 启动(需安装 Docker Desktop): ```bash # 拉取并启动 Milvus(standalone 模式) docker run -d --name milvus-standalone \ -p 19530:19530 -p 9091:9091 \ milvusdb/milvus:v2.5.4 milvus run standalone ``` 验证 Milvus 是否运行: ```bash python -c "from pymilvus import MilvusClient; c = MilvusClient(uri='http://localhost:19530'); print('Milvus OK')" ``` ### 4. 启动 Redis(可选) Redis 用于缓存加速,未启动时系统会自动降级跳过缓存: ```bash # Windows 下启动 Redis redis-server ``` --- ## 配置文件说明 配置文件路径:`d_modular_rag/config.ini` ```ini # MySQL 配置 [mysql] host = localhost user = root password = sdh123569 # 修改为你的 MySQL 密码 database = subjects_kg # Redis 配置 [redis] host = localhost port = 6379 password = 1234 # 修改为你的 Redis 密码(无密码则留空) db = 0 # Milvus 向量数据库配置 [milvus] host = localhost port = 19530 database_name = itcast collection_name = edurag_final # 大语言模型配置(SiliconFlow API) [llm] model = deepseek-ai/DeepSeek-V3 dashscope_api_key = sk-xxxx # 填入你的 API Key dashscope_base_url = https://api.siliconflow.cn/v1 # 检索参数 [retrieval] parent_chunk_size = 1200 child_chunk_size = 300 chunk_overlap = 50 retrieval_k = 5 candidate_m = 2 # 日志 [logger] log_file = logs/app.log # 应用 [app] valid_sources = ["ai", "java", "test", "ops", "bigdata"] customer_service_phone = 12345678 ``` --- ## 启动项目 在项目根目录下运行: ```bash cd c:\Users\14019\Desktop\rag1\my-python-project python -m uvicorn d_modular_rag.app:app --host 0.0.0.0 --port 8001 ``` **带热重载(开发模式):** ```bash python -m uvicorn d_modular_rag.app:app --host 0.0.0.0 --port 8001 --reload ``` --- ## 验证启动 启动后在浏览器或终端中访问: ```bash # 健康检查 python -c "import urllib.request; r = urllib.request.urlopen('http://localhost:8001/health'); print(r.read().decode())" # 返回:{"status":"healthy"} 即为成功 ``` **前端页面:** http://localhost:8001 **API 文档:** http://localhost:8001/docs --- ## API 接口说明 | 接口 | 方法 | 说明 | |------|------|------| | `/` | GET | 前端首页 | | `/health` | GET | 健康检查 | | `/api/create_session` | POST | 创建新会话 | | `/api/query` | POST | 非流式问答 | | `/api/stream` | WebSocket | 流式问答(推荐) | | `/api/history/{session_id}` | GET | 获取对话历史 | | `/api/history/{session_id}` | DELETE | 清除对话历史 | | `/api/sources` | GET | 获取学科列表 | ### 示例请求 **非流式问答:** ```json POST /api/query { "query": "AI学科的课程大纲是什么?", "source_filter": "ai", "session_id": "xxx-xxx-xxx" } ``` **WebSocket 流式问答:** ```json { "query": "Java的学习路线是什么?", "source_filter": "java", "session_id": "xxx-xxx-xxx" } ``` --- ## 常见问题 ### Q: MySQL 连接失败 **A:** 检查 `config.ini` 中的 `password` 是否正确,确认 MySQL 服务已启动。 ### Q: `Table 'subjects_kg.jpkb' doesn't exist` **A:** 这是业务数据表缺失,不影响系统核心 RAG 功能。需手动建表并导入数据后 BM25 初始化才能正常。 ### Q: Redis 连接失败 **A:** Redis 是可选组件,连接失败时系统会自动降级,不影响问答功能。 ### Q: Milvus 连接失败 **A:** 确认 Milvus 服务已启动,或使用 Docker 启动 Milvus。 ### Q: 模型加载失败 **A:** 确认本地模型文件存放在 `C:\Users\14019\Desktop\rag1\my-python-project-1\models\` 目录下,包含: - `bge-m3/` - `bge-reranker-large/` - `bert-base-chinese/` - `bert_query_classifier/` ### Q: 端口被占用 (`[Errno 10048]`) **A:** 使用以下命令释放端口: ```bash netstat -ano | findstr :8001 taskkill /PID <进程ID> /F ``` --- ## 日志查看 日志文件路径:`d_modular_rag/logs/app.log` ```bash # 实时查看日志(PowerShell) Get-Content d_modular_rag/logs/app.log -Wait ``` --- ## 启动流程总结 ``` 1. pip install -r d_modular_rag/requirments.txt # 安装依赖 2. python create_db.py # 初始化数据库 3. 启动 Milvus(Docker) # 向量数据库 4. 启动 Redis(可选) # 缓存服务 5. python -m uvicorn d_modular_rag.app:app --host 0.0.0.0 --port 8001 # 启动项目 6. 访问 http://localhost:8001 # 打开前端 ```