SuperAPI AI 工具集

clip-retrieval

clip-retrieval 是一个开源工具集,用于计算 CLIP 嵌入并构建基于 CLIP 的检索系统。它提供从嵌入计算、索引构建、过滤到后端服务和前端界面的完整流程,支持文本搜图、图搜图、按嵌入查询等语义搜索功能。使用 3080 显卡可在 20 小时内处理 1 亿条文本+图像嵌入,推理速度约 1500 样本/秒。项目包含 clip client、clip inference、clip index、clip filter、clip back、clip front 和 clip end2end 等组件,可通过 pip 安装,适用于构建大规模多模态语义搜索系统。

访问官网

工具介绍

clip-retrieval 是一个用于轻松计算 CLIP 嵌入并基于这些嵌入构建检索系统的开源项目。它旨在让用户能够快速搭建语义搜索系统,支持文本和图像的多模态检索。

用途

clip-retrieval 的核心用途是构建基于 CLIP 嵌入的语义搜索系统。它可以将图像和文本转换为 CLIP 嵌入向量,然后建立高效的索引,从而实现以文搜图、以图搜图、按嵌入查询等功能。该项目特别适合需要处理大规模图像-文本数据集的场景,例如为机器学习准备数据、构建多模态检索应用等。

主要能力

  • 嵌入计算:clip inference 组件可以快速计算图像和文本的 CLIP 嵌入,在 3080 显卡上速度可达 1500 样本/秒。支持多种 CLIP 模型,包括 open_clip 和 Hugging Face 模型,也支持多语言 CLIP(MCLIP)。
  • 索引构建:clip index 使用 autofaiss 从嵌入中构建高效的 FAISS 索引,可扩展到数亿样本。
  • 数据过滤:clip filter 允许使用 CLIP 索引按查询过滤数据,例如提取与“cat”最匹配的 100 张图片。
  • 后端服务:clip back 提供一个简单的 Flask 服务来托管索引,支持内存映射、HDF5/Arrow 缓存、安全模型、暴力检测、美学评分等选项。
  • 前端界面:clip front 是一个简单的 UI,用于查询后端,可在 clip-retrieval ui 查看。
  • 端到端流程:clip end2end 运行 img2dataset、推理、索引、后端和前端,简化整个流程。
  • 远程查询:ClipClient 允许通过 Python 远程查询 clip-retrieval 后端,支持指定索引名称、美学分数、多语言、模态、返回数量、去重、安全模型等参数。
  • 分布式推理:支持多节点、多 GPU 的分布式推理,也支持 SLURM 集群。
  • 存储支持:支持从 HDFS 和 S3 加载/写入 webdataset 格式的数据。
  • DeepSparse 支持:可通过 DeepSparse 在 CPU 上进行快速稀疏模型推理。

使用方式

安装:pip install clip-retrieval

计算嵌入

使用 clip-retrieval inference --input_dataset image_folder --output_folder embeddings_folder 命令,输入可以是包含图片的文件夹(可附带同名文本文件),输出包含图像嵌入、文本嵌入和元数据的 numpy 文件及 parquet 文件。

构建索引

使用 clip-retrieval index --embeddings_folder embeddings_folder --index_folder index_folder 命令,可配置内存使用、子文件夹、元数据复制、线程数等参数。输出包含图像索引、文本索引和元数据文件夹。

过滤数据

使用 clip-retrieval filter --query "cat" --output_folder "cat/" --indice_folder "indice_folder" 命令,可复制最佳匹配的图片到输出文件夹。

启动后端

使用 clip-retrieval back --indice_folder indice_folder 命令,可配置 JIT、CLIP 模型、多语言选项、返回列、内存映射、HDF5/Arrow 缓存、安全模型、暴力检测、美学嵌入等。

端到端

使用 clip-retrieval end2end 命令,可自动运行 img2dataset、推理、索引、后端和前端。

远程查询

通过 ClipClient 初始化时指定 backend_url、indice_name 等参数,然后调用查询方法。

分布式推理

参考 docs/distributed_clip_inference.md 教程。

HDFS/S3 支持

通过 --input_dataset "pipe:hdfs dfs -cat ..." 或 --input_dataset "pipe:aws s3 cp ..." 等方式加载,输出可指定 hdfs:// 或 s3:// 路径。

适用场景

  • 构建大规模图像-文本语义搜索系统。
  • 为机器学习数据集预处理和增强,例如为图像生成文本锚点。
  • 在数百万级数据集中进行快速相似性搜索。
  • 多语言图像检索。
  • 需要安全过滤(NSFW、暴力)的检索应用。
  • 学术研究或工业级多模态检索原型开发。

限制

  • 项目文档未明确说明具体的收费模式、价格或商业授权信息,暂未提供。
  • 性能数据基于特定硬件(3080 显卡),实际性能可能因硬件配置而异。
  • 大规模索引需要足够的内存和存储资源,索引内存使用可配置但会影响召回率。
  • 部分高级功能(如安全模型、暴力检测)需要额外安装依赖。
  • 项目未提供关于平台兼容性的详细说明,暂未提供。