LAION 5B 数据集
简介
LAION 5b 数据集包含 58.5 亿个图文嵌入及
其关联的图像元数据。嵌入向量是使用 Open AI CLIP 模型 ViT-L/14 生成的,
每个嵌入向量的维度为 768。
该数据集可用于对真实世界的大规模向量搜索应用的设计、容量规划和性能特征进行建模。 该数据集既可用于文本到图像检索,也可用于图像到图像检索。
数据集详情
完整数据集以 npy 和 Parquet 文件混合形式提供,托管在 the-eye.eu。
ClickHouse 在一个 S3 存储桶中提供了包含 1 亿个向量的子集。
该 S3 存储桶包含 10 个 Parquet 文件,每个 Parquet 文件包含 1000 万行。
我们建议用户首先进行一次容量评估,并参考文档来估算该数据集的存储和内存需求。
步骤
运行暴力向量相似性搜索
KNN(k-最近邻)搜索或暴力搜索需要计算数据集中每个向量到搜索嵌入向量的距离,然后对距离进行排序以获得最近邻。我们可以使用数据集本身中的某个向量作为搜索向量。例如:
Note down the query latency so that we can compare it with the query latency of ANN (using vector index). 在 1 亿行数据的情况下,上述未使用向量索引的查询可能需要几秒到几分钟才能完成。
构建向量相似度索引
运行以下 SQL 语句,在 laion_5b_100m 表的 vector 列上定义并构建向量相似度索引:
索引创建和搜索的参数及性能考量详见文档。
The statement above uses values of 64 and 512 respectively for the HNSW hyperparameters M and ef_construction.
You need to carefully select optimal values for these parameters by evaluating index build time and search results quality
corresponding to selected values.
对于完整的 1 亿条数据集,构建和保存索引可能需要数小时,具体取决于可用 CPU 核心数和存储带宽。
为搜索查询生成嵌入向量
LAION 5b 数据集的嵌入向量使用 OpenAI CLIP 模型 ViT-L/14 生成。
下面提供了一个 Python 脚本示例,演示如何使用 CLIP API 以编程方式生成嵌入向量。然后将搜索嵌入向量作为参数传递给 SELECT 查询中的 cosineDistance() 函数。
要安装 clip 包,请参考 OpenAI GitHub 仓库。
上述搜索结果如下所示:
