Infinity 简介
Infinity是一个用于提供文本嵌入、重排序模型和CLIP服务的高性能REST API。它具有以下主要特点:
- 可以部署来自HuggingFace的任何嵌入、重排序、CLIP和sentence-transformer模型
- 基于PyTorch、Optimum(ONNX/TensorRT)和CTranslate2构建,支持NVIDIA CUDA、AMD ROCM、CPU、AWS INF2和Apple MPS等多种加速器
- 支持多模态和多模型混合部署
- 经过全面测试,确保嵌入结果的正确性
- 基于FastAPI构建,易于使用,API与OpenAI兼容
快速开始
通过pip安装
pip install infinity-emb[all]
infinity_emb v2 --model-id BAAI/bge-small-en-v1.5
使用Docker容器(推荐)
port=7997
model1=michaelfeil/bge-small-en-v1.5
model2=mixedbread-ai/mxbai-rerank-xsmall-v1
volume=$PWD/data
docker run -it --gpus all
-v $volume:/app/.cache
-p $port:$port
michaelf34/infinity:latest
v2
--model-id $model1
--model-id $model2
--port $port
Python API使用
import asyncio
from infinity_emb import AsyncEngineArray, EngineArgs, AsyncEmbeddingEngine
sentences = ["Embed this is sentence via Infinity.", "Paris is in France."]
array = AsyncEngineArray.from_args([
EngineArgs(model_name_or_path = "BAAI/bge-small-en-v1.5", engine="torch", embedding_dtype="float32", dtype="auto")
])
async def embed_text(engine: AsyncEmbeddingEngine):
async with engine:
embeddings, usage = await engine.embed(sentences=sentences)
asyncio.run(embed_text(array[0]))
主要功能
- 文本嵌入
- 重排序
- CLIP模型支持
- 文本分类
集成
Infinity已经与多个平台和工具集成,包括:
- Runpod serverless部署
- Truefoundry Cognita
- Langchain
- SAP Core AI 等
学习资源
社区支持
通过以上资源,你可以快速上手Infinity,充分利用其强大的文本嵌入和重排序功能。无论是用于研究还是生产环境,Infinity都是一个值得考虑的高性能工具。