Spaces:
Sleeping
Sleeping
A newer version of the Streamlit SDK is available:
1.49.1
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. 克隆项目
git clone <repository-url>
cd bio_rag_server-1
2. 安装依赖
pip install -r requirements.txt
3. 配置环境
复制并修改配置文件 config/app_config.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. 启动服务
python main.py
或使用Docker:
docker build -t bio-rag-server .
docker run -p 9487:9487 bio-rag-server
服务将在 http://localhost:9487
启动。
📚 API 文档
1. 文档检索 API
端点: POST /retrieve
请求体:
{
"query": "cancer treatment",
"top_k": 5,
"search_type": "keyword",
"is_rewrite": true,
"data_source": ["pubmed"],
"user_id": "user123",
"pubmed_topk": 30
}
响应:
[
{
"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
请求体:
{
"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
: 英文响应
响应格式示例:
{
"success": true,
"data": [...],
"message": "搜索成功", // 或 "Search successful"
"language": "zh"
}
错误响应格式:
{
"success": false,
"error": {
"code": 500,
"message": "搜索失败", // 或 "Search failed"
"language": "zh",
"details": "具体错误信息"
}
}
🔧 配置说明
数据源配置
- pubmed: PubMed文献数据库
- web: Web搜索
LLM配置
支持主备配置,当主配置失败时自动切换到备用配置:
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
🧪 测试
基本功能测试
运行测试用例:
cd test
python client.py
国际化功能测试
# 基本国际化功能测试
python test/test_i18n.py
# Label国际化功能测试
python test/test_label_i18n.py
# 新的消息文件结构测试
python test/test_i18n_messages.py
# 运行客户端测试示例
python test/client_test.py
使用示例
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配置
- 错误处理和安全异常
🤝 贡献指南
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
🆘 支持
如有问题或建议,请:
- 查看 Issues 页面
- 创建新的 Issue
- 联系项目维护者
🗺️ 路线图
- 支持更多数据源
- 增加用户认证和权限管理
- 优化向量搜索性能
- 添加更多LLM模型支持
- 实现缓存机制
- 增加API限流功能
注意: 请确保在使用前正确配置所有必要的API密钥和服务端点。