SuperAPI AI 工具集

infinity

Infinity 是一个高吞吐、低延迟的推理服务引擎,用于部署文本嵌入、重排序、CLIP、CLAP 和 ColPali 等模型。该项目基于 MIT 许可证开发,提供 REST API 和 Python API,支持从 HuggingFace 部署多种模型,并针对 NVIDIA CUDA、AMD ROCM、CPU、AWS INF2 和 Apple MPS 等硬件加速器进行了优化。

访问官网

工具介绍

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 风格的单类别分类模型。
  • 具体性能、收费、价格、平台、效果等信息暂未提供。