跳转到主要内容

简介

LAION 5b 数据集包含 58.5 亿个图像-文本嵌入向量及 相关的图像元数据。这些嵌入向量由 Open AI CLIP 模型 ViT-L/14 生成。每个嵌入向量的 维度均为 768 该数据集可用于对大规模真实世界向量搜索应用的设计、容量规划和性能进行建模。该数据集既可用于文本到图像搜索,也可用于 图像到图像搜索。

数据集详情

完整数据集以 npyParquet 文件混合的形式提供,可在 the-eye.eu 获取。 ClickHouse 在一个 S3 bucket 中提供了包含 1 亿个向量的子集。 该 S3 bucket 包含 10 个 Parquet 文件,每个 Parquet 文件都有 1000 万行。 我们建议用户先参考文档进行容量评估,以估算该数据集所需的存储和内存。

步骤

1

创建表

创建 laion_5b_100m 表,用于存储嵌入向量及其相关属性:
id 只是一个递增的整数。附加属性可在谓词中使用,以帮助理解 如文档所述,与后过滤/前过滤结合使用的向量相似性搜索
2

加载数据

要从所有 Parquet 文件中加载数据集,请执行以下 SQL 语句:
将 1 亿行数据加载到表中需要几分钟。或者,也可以运行单独的 SQL 语句,以加载指定数量的文件/行。
3

执行暴力向量相似性搜索

KNN (k 近邻) 搜索或暴力搜索,通过计算数据集中每个向量与目标嵌入向量之间的距离,并对距离排序来获取最近邻。我们可以使用数据集中的某个向量作为搜索向量。例如:
Query
Response
记录查询延迟,以便与使用向量索引的 ANN 查询延迟进行对比。 在 1 亿行数据的情况下,上述未使用向量索引的查询可能需要数秒乃至数分钟才能完成。
4

构建向量相似度索引

运行以下 SQL,在 laion_5b_100m 表的 vector 列上创建并构建向量相似度索引:
有关索引创建和搜索的参数及性能注意事项,请参见文档。 上述语句中,HNSW 超参数 Mef_construction 分别使用了 64 和 512。 你需要根据所选参数对应的索引构建时间和搜索结果质量进行评估, 从而仔细选择这些参数的最佳取值。对于完整的 1 亿条数据集,构建并保存索引甚至可能需要数小时,具体取决于可用的 CPU 核心数量和存储带宽。
5

执行 ANN 搜索

向量相似度索引构建完成后,向量搜索查询会自动使用该索引:
Query
首次将向量索引加载到内存时,可能需要几秒到几分钟。
6

为搜索查询生成嵌入向量

LAION 5b 数据集的嵌入向量是使用 OpenAI CLIPViT-L/14 模型生成的。下面提供了一个 Python 示例脚本,演示如何通过编程方式使用 CLIP API 生成 嵌入向量。随后,搜索嵌入向量 会作为参数传递给 SELECT 查询中的 cosineDistance() 函数。如需安装 clip 包,请参阅 OpenAI GitHub 仓库
上述搜索结果如下:
最后修改于 2026年7月1日