LAION 5B データセット
Introduction
LAION 5bデータセットには、58.5億の画像-テキスト埋め込みと関連する画像メタデータが含まれています。埋め込みは、 Open AI CLIP モデル ViT-L/14 を使用して生成されました。各埋め込みベクトルの次元は 768 です。
このデータセットは、大規模な現実世界のベクトル検索アプリケーションの設計、サイズ、パフォーマンスの側面をモデル化するために使用できます。このデータセットは、テキストから画像の検索および画像から画像の検索の両方に使用できます。
Dataset details
完全なデータセットは、the-eye.eu で npy と Parquet ファイルの混合として利用可能です。
ClickHouseは、100百万のベクトルのサブセットを S3 バケットに提供しました。
S3 バケットには10個の Parquet ファイルが含まれており、各 Parquet ファイルには1000万行が含まれています。
ユーザーはまず、ドキュメントを参照して、このデータセットのストレージおよびメモリ要件を見積もるためのサイズ計算を実行することをお勧めします。
Steps
Load data
すべての Parquet ファイルからデータセットをロードするには、次のSQL文を実行します:
テーブルに100百万行をロードするには数分かかります。
あるいは、特定の数のファイル/行をロードするために個々のSQL文を実行することもできます。
Run a brute-force vector similarity search
KNN (k - 最近傍探索) またはブルートフォース検索は、データセット内の各ベクトルと検索埋め込みベクトルとの距離を計算し、距離を順序付けて最近傍を取得することを含みます。データセット自体からベクトルの1つを検索ベクトルとして使用できます。例えば:
クエリの待機時間を記録しておきますので、ANN(ベクトルインデックスを使用)のクエリの待機時間と比較できます。100百万行のデータでは、上記のクエリはベクトルインデックスなしで完了するのに数秒/分かかる可能性があります。
Build a vector similarity index
次のSQLを実行して、laion_5b_100m テーブルの vector カラムにベクトル類似性インデックスを定義し、構築します:
インデックスの作成および検索に関するパラメーターとパフォーマンスの考慮事項は、ドキュメントに記載されています。上記の文は、HNSWハイパーパラメーター M と ef_construction にそれぞれ64と512の値を使用しています。ユーザーは、選択された値に対応してインデックスの構築時間と検索結果の品質を評価することによって、これらのパラメーターの最適な値を慎重に選択する必要があります。
インデックスの構築および保存には、使用可能なCPUコアの数とストレージ帯域幅に応じて、フルの100百万データセットで数時間かかる場合があります。
Perform ANN search
ベクトル類似性インデックスが構築されると、ベクトル検索クエリは自動的にインデックスを使用します:
初回のベクトルインデックスのメモリへのロードには数秒または数分かかる場合があります。
Generate embeddings for search query
LAION 5b データセットの埋め込みベクトルは、OpenAI CLIP モデル ViT-L/14 を使用して生成されました。
次のPythonスクリプトは、CLIP APIsを使用してプログラムmaticallyに埋め込みベクトルを生成する方法を示す例として提供されています。検索埋め込みベクトルは、その後、SELECT クエリ内の cosineDistance() 関数に引数として渡されます。
clip パッケージをインストールするには、OpenAI GitHubリポジトリを参照してください。
上記の検索の結果は以下の通りです:
