LAION 5B データセット
はじめに
LAION 5b データセット には、58 億 5,000 万の画像-テキスト埋め込みと
それに関連する画像メタデータが含まれています。これらの埋め込みは、OpenAI CLIP モデル ViT-L/14 を使用して生成されました。
各埋め込みベクトルの次元数は 768 です。
このデータセットは、大規模な実世界のベクトル検索アプリケーションにおける設計、サイジング、およびパフォーマンス面を検証するために利用できます。テキストから画像への検索と、 画像から画像への検索の両方に利用できます。
データセットの詳細
完全なデータセットは、npy および Parquet ファイルの組み合わせとして the-eye.eu で利用できます。
ClickHouse は、1 億個のベクトルからなるサブセットを S3 バケットで提供しています。
この S3 バケットには 10 個の Parquet ファイルが含まれており、各 Parquet ファイルには 1,000 万行が格納されています。
このデータセットのストレージおよびメモリ要件を見積もるために、まず ドキュメント を参照してサイジングを行うことを推奨します。
手順
データのロード
すべてのParquetファイルからデータセットをロードするには、次のSQLステートメントを実行します:
テーブルへの1億行のロードには数分かかります。
または、個別のSQLステートメントを実行して、特定の数のファイルや行をロードすることもできます。
ブルートフォースベクトル類似検索を実行する
KNN(k最近傍探索)またはブルートフォース探索では、データセット内の各ベクトルと検索埋め込みベクトルとの距離を計算し、距離を順序付けして最近傍を取得します。データセット自体のベクトルの1つを検索ベクトルとして使用できます。例:
クエリのレイテンシを記録し、ANN(ベクトルインデックス使用時)のクエリレイテンシと比較できるようにしてください。 1億行のデータの場合、ベクトルインデックスを使用しない上記のクエリは、完了までに数秒から数分かかる可能性があります。
ベクトル類似性インデックスを構築する
以下のSQLを実行して、laion_5b_100mテーブルのvector列にベクトル類似度インデックスを定義および構築します:
インデックスの作成と検索に関するパラメータおよびパフォーマンスの考慮事項については、ドキュメントを参照してください。
上記のステートメントでは、HNSWハイパーパラメータMとef_constructionにそれぞれ64と512の値を使用しています。
これらのパラメータの最適な値を選択する際は、選択した値に対応するインデックス構築時間と検索結果の品質を評価し、慎重に決定する必要があります。
完全な1億件のデータセットに対するインデックスの構築と保存には、利用可能なCPUコア数とストレージ帯域幅によって、数時間を要する場合があります。
ANN検索を実行する
ベクトル類似性インデックスが構築されると、ベクトル検索クエリは自動的にインデックスを使用します:
ベクトルインデックスの初回メモリロード時には、数秒から数分程度かかる場合があります。
検索クエリの埋め込みを生成する
LAION 5bデータセットの埋め込みベクトルは、OpenAI CLIPモデルViT-L/14を使用して生成されています。
以下は、CLIP APIを使用してプログラムで埋め込みベクトルを生成する方法を示すPythonスクリプトの例です。検索用埋め込みベクトルは、SELECTクエリ内のcosineDistance()関数に引数として渡されます。
clipパッケージをインストールするには、OpenAI GitHubリポジトリを参照してください。
上記の検索結果を以下に示します:
