Spaces:
Sleeping
Sleeping
# 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 <repository-url> | |
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密钥和服务端点。 |