# Bio RAG Server 一个基于FastAPI的生物医学检索增强生成(RAG)服务,支持PubMed文献检索、Web搜索和向量数据库查询,提供智能问答和文档检索功能。 ## 🚀 功能特性 - **多源数据检索**: 支持PubMed、Web搜索、个人向量数据库等多种数据源 - **智能问答**: 基于大语言模型的RAG问答,支持流式响应 - **查询重写**: 智能查询拆分和重写,提高检索精度 - **主备切换**: 支持LLM服务的主备配置,自动故障转移 - **流式响应**: 实时流式聊天响应,提升用户体验 - **国际化支持**: 支持中英文切换,包含87个国际化消息,涵盖8种消息类型 - **日志追踪**: 完整的请求追踪和日志记录 - **CORS支持**: 跨域请求支持,便于前端集成 ## 🏗️ 系统架构 ``` bio_rag_server/ ├── bio_agent/ # AI代理相关 ├── bio_requests/ # 请求模型定义 ├── config/ # 配置文件 ├── dto/ # 数据传输对象 ├── routers/ # API路由 ├── search_service/ # 搜索服务 ├── service/ # 核心业务服务 ├── utils/ # 工具类 └── test/ # 测试文件 ``` ## 📋 环境要求 - Python 3.8+ - OpenAI API 或兼容的LLM服务 ## 🛠️ 安装部署 ### 1. 克隆项目 ```bash git clone cd bio_rag_server-1 ``` ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` ### 3. 配置环境 复制并修改配置文件 `config/app_config.yaml`: ```yaml llm: model: gpt-4o api_key: your-openai-api-key base_url: https://api.openai.com/v1 max_tokens: 1024 temperature: 0.7 qa-llm: main: model: deepseek-r1 api_key: your-main-api-key base_url: https://your-main-endpoint/v1 max_tokens: 1024 temperature: 0.7 backup: model: qwen-plus-latest api_key: your-backup-api-key base_url: https://your-backup-endpoint/v1 max_tokens: 1024 temperature: 0.7 ``` ### 4. 启动服务 ```bash python main.py ``` 或使用Docker: ```bash docker build -t bio-rag-server . docker run -p 9487:9487 bio-rag-server ``` 服务将在 `http://localhost:9487` 启动。 ## 📚 API 文档 ### 1. 文档检索 API **端点**: `POST /retrieve` **请求体**: ```json { "query": "cancer treatment", "top_k": 5, "search_type": "keyword", "is_rewrite": true, "data_source": ["pubmed"], "user_id": "user123", "pubmed_topk": 30 } ``` **响应**: ```json [ { "title": "Cancer Treatment Advances", "abstract": "Recent advances in cancer treatment...", "url": "https://pubmed.ncbi.nlm.nih.gov/...", "score": 0.95 } ] ``` ### 2. 流式聊天 API **端点**: `POST /stream-chat` **请求体**: ```json { "query": "What are the latest treatments for breast cancer?", "is_web": true, "is_pubmed": true, "language": "en" // 可选:响应语言 (zh/en) } ``` **响应**: Server-Sent Events (SSE) 流式响应 ### 3. 国际化支持 所有API接口都支持国际化,通过 `language` 参数指定响应语言: - `zh` (默认): 中文响应 - `en`: 英文响应 **响应格式示例**: ```json { "success": true, "data": [...], "message": "搜索成功", // 或 "Search successful" "language": "zh" } ``` **错误响应格式**: ```json { "success": false, "error": { "code": 500, "message": "搜索失败", // 或 "Search failed" "language": "zh", "details": "具体错误信息" } } ``` ## 🔧 配置说明 ### 数据源配置 - **pubmed**: PubMed文献数据库 - **web**: Web搜索 ### LLM配置 支持主备配置,当主配置失败时自动切换到备用配置: ```yaml qa-llm: main: model: deepseek-r1 api_key: main-api-key base_url: main-endpoint backup: model: qwen-plus-latest api_key: backup-api-key base_url: backup-endpoint ``` ## 🧪 测试 ### 基本功能测试 运行测试用例: ```bash cd test python client.py ``` ### 国际化功能测试 ```bash # 基本国际化功能测试 python test/test_i18n.py # Label国际化功能测试 python test/test_label_i18n.py # 新的消息文件结构测试 python test/test_i18n_messages.py # 运行客户端测试示例 python test/client_test.py ``` ### 使用示例 ```python import requests # 中文检索 response_zh = requests.post("http://localhost:9487/retrieve", json={ "query": "人工智能", "language": "zh" }) # 英文检索 response_en = requests.post("http://localhost:9487/retrieve", json={ "query": "artificial intelligence", "language": "en" }) ``` ## 📊 监控和日志 - 日志文件位置: `logs/bio_rag_YYYY-MM-DD.log` - 请求追踪: 每个请求都有唯一的correlation_id - 性能监控: 自动记录请求处理时间 ## 🔒 安全特性 - API密钥配置化管理 - 请求日志记录 - CORS配置 - 错误处理和安全异常 ## 🤝 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🆘 支持 如有问题或建议,请: 1. 查看 [Issues](../../issues) 页面 2. 创建新的 Issue 3. 联系项目维护者 ## 🗺️ 路线图 - [ ] 支持更多数据源 - [ ] 增加用户认证和权限管理 - [ ] 优化向量搜索性能 - [ ] 添加更多LLM模型支持 - [ ] 实现缓存机制 - [ ] 增加API限流功能 --- **注意**: 请确保在使用前正确配置所有必要的API密钥和服务端点。