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