Infinity 是一个高吞吐、低延迟的推理服务引擎,专注于文本嵌入、重排序模型、CLIP、CLAP 和 ColPali 等任务的部署。该项目基于 MIT 许可证开发,旨在为嵌入、重排序及相关 RAG 任务提供功能全面的推理服务器。
主要能力
- 部署 HuggingFace 模型:支持部署任何嵌入、重排序、CLIP 和句子转换器模型。
- 快速推理后端:构建于 PyTorch、optimum(ONNX/TensorRT)和 CTranslate2 之上,使用 FlashAttention 以充分利用 NVIDIA CUDA、AMD ROCM、CPU、AWS INF2 或 Apple MPS 加速器。Infinity 在工作线程中动态批处理和令牌化。
- 多模态和多模型:可混合匹配多个模型,由 Infinity 进行编排。
- 经过测试的实现:包含单元测试和端到端测试,确保嵌入正确性。
- 易于使用:基于 FastAPI 构建,提供 Infinity CLI v2,支持通过环境变量或参数启动。OpenAPI 对齐 OpenAI 的 API 规范。
支持的任务和模型
Infinity 支持多种任务,包括:
- 文本嵌入:如 mixedbread-ai/mxbai-embed-large-v1、BAAI/bge-base-en-v1.5 等。
- 重排序:如 mixedbread-ai/mxbai-rerank-xsmall-v1、BAAI/bge-reranker-base 等。
- 图像-文本模型:如 jinaai/jina-clip-v1、google/siglip-so400m-patch14-384 等,可用于图片库搜索。
- 音频-文本模型:如 LAION 的 CLAP 模型,可用于基于文本描述查找音乐。
- ColBERT 和 ColPali 模型:如 colbert-ir/colbertv2.0、vidore/colpali-v1.2-merged 等,支持晚期交互嵌入。
- 文本分类:如 ProsusAI/finbert、SamLowe/roberta-base-go_emotions 等。
使用方式
- 通过 CLI 启动:使用 pip 安装后,运行
infinity_emb v2 --model-id BAAI/bge-base-en-v1.5。也可使用预构建的 Docker 容器michaelf34/infinity,需挂载加速器。 - 多模型启动:CLI v2 支持同时启动多个模型,例如
v2 --model-id model/id1 --model-id model/id2 --batch-size 8 --batch-size 4,或通过环境变量如INFINITY_MODEL_ID="model/id1;model/id2;"和INFINITY_BATCH_SIZE="8;4;"。 - Python API:提供基于 asyncio 的 Python 接口,支持异步并发处理请求。
- Python 客户端:提供生成的客户端代码,可通过
pip install infinity_client安装,用于调用远程 Infinity 实例。 - REST API:启动后,Swagger UI 可在
{url}:{port}/docs访问,如 http://localhost:7997/docs。
适用场景
- 需要私有部署嵌入服务的场景,类似 OpenAI 文本嵌入的私有版本。
- 搜索、聚类、推荐系统等应用。
- 图像库搜索(通过图像或文本查找相关图片)。
- 音乐搜索(通过文本描述查找音乐)。
- 情感分析、情绪检测等分类任务。
限制
- 对于
--engine ctranslate2,仅支持 BERT 模型。 - 对于 ColPali/ColQwen 模型,不支持 LoRA 适配器,仅支持“合并”模型。
- 音频-文本模型的开源组织有限,且音频数据的采样率需与模型匹配。
- 重排序模型需为 BERT 风格的单类别分类模型。
- 具体性能、收费、价格、平台、效果等信息暂未提供。