はじめに
Open AI CLIP モデル ViT-L/14 を使用して生成されました。各
埋め込みベクトルの次元は 768 です。
このデータセットは、大規模な
実運用のベクトル検索アプリケーションにおける設計、サイジング、性能面の検討に利用できます。また、テキストから画像への検索と
画像から画像への検索の両方に使用できます。
データセットの詳細
S3 バケットで公開しています。
このサブセットは 1 つの Parquet ファイルに保存されています。
このデータセットに必要なストレージ容量とメモリ要件を見積もるため、まず ドキュメント を参照してサイジングを行うことを推奨します。
手順
1
テーブルを作成する
埋め込みとそれに関連する属性を格納する
laion_5b_10mテーブルを作成します。id は単純な連番の整数です。追加の属性は述語で使用でき、ドキュメントで説明されている、後段フィルタリング/事前フィルタリングを組み合わせたベクトル類似度検索を理解するのに役立ちます。2
データを読み込む
データセットを読み込むには、次の SQL ステートメントを実行します。1,000 万行をテーブルに読み込むには、数分かかります。
3
総当たり方式でベクトル類似度検索を実行する
KNN (k近傍探索) または総当たり検索では、データセット内の各ベクトルと検索対象の埋め込みベクトルとの距離を計算し、距離順に並べることで最近傍を取得します。検索ベクトルには、データセット内のベクトルの1つを使用できます。例:ANN (ベクトル索引を使用) のクエリレイテンシと比較できるよう、クエリレイテンシを記録してください。
1,000万行の場合、ベクトル索引を使用しない上記のクエリは完了までに数秒から数分かかることがあります。
Query
4
ベクトル類似度索引を構築する
以下の SQL を実行して、索引の作成と検索に関するパラメータおよびパフォーマンス上の考慮事項については、ドキュメントを参照してください。
上記のステートメントでは、HNSW ハイパーパラメータ
laion_5b_10m テーブルの vector カラムにベクトル類似度索引を定義し、構築します。M と ef_construction にそれぞれ 64 と 512 を使用しています。
索引のビルド時間と検索結果の品質を評価し、これらのパラメータに最適な値を慎重に選択する必要があります。1,000 万行のサブセットでは、利用可能な CPU コア数とストレージ帯域幅によっては、索引のビルドと保存にかなりの時間がかかる場合があります。5
ANN 検索を実行する
ベクトル類似度索引が構築されると、ベクトル検索クエリで自動的にこの索引が使用されます。ベクトル索引を初めてメモリに読み込む際は、数秒から数分かかる場合があります。
Query
6
検索クエリの埋め込みを生成する
LAION 5b データセットの埋め込みベクトルは、OpenAI CLIP モデル ViT-L/14 を使用して生成されています。以下の Python スクリプトの例では、CLIP API を使用してプログラムから埋め込みベクトルを生成する方法を示します。生成した検索用埋め込みベクトルは、SELECT クエリ内の cosineDistance() 関数に引数として渡します。clip パッケージのインストール方法については、OpenAI の GitHub リポジトリを参照してください。