mmeb/README.md
2025-08-20 10:01:03 +00:00

171 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 多模态检索系统 (Multimodal Retrieval System)
基于 OpenSearch-AI/Ops-MM-embedding-v1-7B 模型的多模态检索系统,支持四种检索模式:文搜图、文搜文、图搜图、图搜文。
## 功能特性
- **文搜文 (Text-to-Text)**: 使用文本查询搜索相似文本
- **文搜图 (Text-to-Image)**: 使用文本查询搜索相关图像
- **图搜图 (Image-to-Image)**: 使用图像查询搜索相似图像
- **图搜文 (Image-to-Text)**: 使用图像查询搜索相关文本
## 环境要求
- Python 3.8+
- CUDA 支持的 GPU (推荐也可使用CPU)
- 至少 8GB 内存
## 安装依赖
```bash
pip install -r requirements.txt
```
## 快速开始
### 1. 检查GPU环境
```python
from multimodal_retrieval import check_gpu_info
check_gpu_info()
```
### 2. 初始化系统
```python
from multimodal_retrieval import MultimodalRetrieval
# 初始化检索系统
retrieval_system = MultimodalRetrieval()
```
### 3. 构建索引
```python
# 构建文本索引
texts = ["一只可爱的小猫", "美丽的山景", "现代化城市"]
retrieval_system.build_text_index(texts)
# 构建图像索引
image_paths = ["./images/cat.jpg", "./images/mountain.jpg", "./images/city.jpg"]
retrieval_system.build_image_index(image_paths)
```
### 4. 执行检索
```python
# 文搜文
results = retrieval_system.search_text_by_text("猫咪", top_k=5)
# 文搜图
results = retrieval_system.search_images_by_text("动物", top_k=5)
# 图搜图
results = retrieval_system.search_images_by_image("./query_image.jpg", top_k=5)
# 图搜文
results = retrieval_system.search_text_by_image("./query_image.jpg", top_k=5)
```
## 运行演示
```bash
python demo.py
```
演示脚本会自动:
1. 检查GPU环境信息
2. 初始化多模态检索系统
3. 演示四种检索模式
4. 显示检索结果和相似度分数
## 文件结构
```
mmeb/
├── multimodal_retrieval.py # 主要检索系统类
├── demo.py # 演示脚本
├── requirements.txt # 依赖包列表
├── README.md # 项目说明
└── images/ # 图像数据目录 (需要自行创建)
```
## API 参考
### MultimodalRetrieval 类
#### 初始化参数
- `model_name`: 模型名称,默认 "OpenSearch-AI/Ops-MM-embedding-v1-7B"
- `device`: 设备类型,默认自动选择 ("cuda" 或 "cpu")
#### 主要方法
##### `build_text_index(texts, save_path=None)`
构建文本索引
- `texts`: 文本列表
- `save_path`: 索引保存路径 (可选)
##### `build_image_index(image_paths, save_path=None)`
构建图像索引
- `image_paths`: 图像路径列表
- `save_path`: 索引保存路径 (可选)
##### `search_text_by_text(query, top_k=5)`
文搜文检索
- `query`: 查询文本
- `top_k`: 返回结果数量
- 返回: `[(文本, 相似度分数), ...]`
##### `search_images_by_text(query, top_k=5)`
文搜图检索
- `query`: 查询文本
- `top_k`: 返回结果数量
- 返回: `[(图像路径, 相似度分数), ...]`
##### `search_images_by_image(query_image, top_k=5)`
图搜图检索
- `query_image`: 查询图像路径或PIL图像
- `top_k`: 返回结果数量
- 返回: `[(图像路径, 相似度分数), ...]`
##### `search_text_by_image(query_image, top_k=5)`
图搜文检索
- `query_image`: 查询图像路径或PIL图像
- `top_k`: 返回结果数量
- 返回: `[(文本, 相似度分数), ...]`
## 注意事项
1. **首次运行**: 首次运行时会自动下载模型,需要网络连接
2. **内存需求**: 7B参数模型需要较大内存建议使用GPU
3. **图像格式**: 支持常见图像格式 (jpg, png, bmp, gif等)
4. **批处理**: 系统自动进行批处理以提高效率
5. **索引保存**: 可以保存和加载索引以避免重复构建
## 性能优化建议
- 使用GPU加速推理
- 合理设置批处理大小
- 保存索引文件避免重复构建
- 对大量数据使用分批处理
## 故障排除
### 常见问题
1. **CUDA内存不足**: 减小批处理大小或使用CPU
2. **模型下载失败**: 检查网络连接或使用镜像源
3. **图像加载错误**: 检查图像文件路径和格式
### 日志信息
系统会输出详细的日志信息,包括:
- GPU环境检测结果
- 模型加载进度
- 索引构建状态
- 检索执行情况
## 许可证
本项目遵循 MIT 许可证。