Docs Menu
Docs Home
/
Atlas
/

ベクトル埋め込みの作成方法

ベクトル埋め込みを他のMongoDBデータと一緒に保存できます。これらの埋め込みにより、データ内の意味のある関係がキャプチャされ、セマンティック検索を実行し、RAG を実装できるようになります。

次のチュートリアルを使用して、ベクトル埋め込みを作成し、ベクトル検索を使用してそれらをクエリする方法を学習します。具体的には、次のアクションを実行します。

  1. 埋め込みモデルを使用してベクトル埋め込みを生成する関数を定義します。

    プロプロパティ モデルまたはオープンソース モデルのどちらを使用するかを選択します。最新の埋め込みには、 投票AIを使用します。

  2. データから埋め込みを作成し、 MongoDBに保存します。

    新しいデータから埋め込みを作成するか、 MongoDBコレクションに既に存在する既存のデータから埋め込みを作成するかを選択します。

  3. 検索語句から埋め込みを作成し、ベクトル検索クエリを実行します。

実稼働アプリケーションでは通常、ベクトル埋め込みを生成するためのスクリプトを記述します。 このページのサンプルコードから開始し、 のユースケースに合わせてカスタマイズできます。

Atlas の サンプル データ セット からの映画データを含むコレクションを使用します。

このセクションでは、定義した関数を使用してデータからベクトル埋め込みを作成し、これらの埋め込みをMongoDBコレクションに保存します。

このセクションでは、コレクション内のベクター埋め込みにインデックスを付け、サンプルのベクター検索クエリの実行に使用する埋め込みを作成します。

ベクトル検索では、クエリから埋め込みが埋め込みに最も近い距離にあるドキュメントが返されます。これは、意味が似ていることを示しています。

ベクトル埋め込みを作成するときは、次の要素を考慮します。

ベクトル埋め込みを作成するには、 埋め込みモデル を使用する必要があります。埋め込みモデルは、データの数値表現を生成するために使用するアルゴリズムです。埋め込みモデルにアクセスするには、次のいずれかの方法を選択します。

方式
説明

オープンソース モデルをロードする

プロパティ埋め込みモデルの APIキーがない場合は、アプリケーションからローカルにオープンソース埋め込みモデルを読み込みます。

独自モデルの使用

ほとんどのAIプロバイダーは、ベクトル埋め込みを作成するために使用できる独自の埋め込みモデル用のAPIを提供しています。最新の埋め込みには、 投票AIを使用します。

統合の活用

MongoDB ベクトル検索 をオープンソースのフレームワークとAIサービスと統合して、オープンソースとプロファイリングの両方の埋め込みモデルにすばやく接続し、 MongoDB ベクトル検索のベクトル埋め込みを生成できます。

詳細については、「MongoDBとAIテクノロジーの統合」を参照してください。

選択した埋め込みモデルはクエリ結果に影響し、 MongoDB ベクトル検索インデックスで指定する次元数を決定します。各モデルには、データとユースケースに応じて異なる利点があります。マルチモーダルやドメイン固有の埋め込みモデルを含む最新の埋め込みには、 投票AI を使用します。

MongoDB ベクトル検索の埋め込みモデルを選択するときは、次のメトリクスを考慮してください。

  • 埋め込み次元: ベクトル埋め込みの長さ。

    埋め込みが小さいほどストレージ効率が良く、埋め込みが大きいほどデータ内の微細な関係を捉えることができます。選択するモデルは、効率と複雑さのバランスをとる必要があります。

  • 最大トークン数: 単一の埋め込みで圧縮できるトークンの数。

  • モデルサイズ: モデルのサイズ(ギガバイト単位)。

    大きなモデルはパフォーマンスが向上しますが、 MongoDB ベクトル検索 を本番環境に増やすとより多くの計算リソースが必要になります。

  • 検索平均: 検索システムのパフォーマンスを測定するスコア。

    スコアが高いほど、検索された結果のリストの関連するドキュメントをより高く評価することで、モデルがより優れていることを示します。このスコアは、RAG アプリケーションのモデルを選択するときに重要です。

多数の浮動小数ベクトルがあり、 でストレージとWiredTiger のフットプリント(ディスクやメモリ使用量など)を削減したい場合は、埋め込みをmongod binDataベクトルに変換して圧縮します。

BinData は、バイナリ データを保存するBSONデータ型です。ベクトル埋め込みのデフォルトの型は、32 ビット浮動小数点数(float32)の配列です。バイナリ データは、デフォルトの配列形式よりもストレージ効率が高いため、ディスク容量が 3 倍に少なくなります。

binData ベクトルを保存すると、ドキュメントをワーキングセットに読み込むために必要なリソースが少なくなるため、クエリのパフォーマンスが向上します。これにより、20 件を超えるドキュメントを返すベクトルクエリのクエリ速度が大幅に向上します。float32 埋め込みを圧縮する場合は、float32 またはbinData ベクトルのいずれかを使用してクエリを実行できます。

このページのチュートリアルには、float32 ベクトルをbinData ベクトルに変換するために使用できる関数の例が含まれています。

BSON BinData ベクトルは、以下のドライバーでサポートされています。

浮動小数点ベクトルは、たとえほとんどのベクトルが同じ型で構成されていたとしても、配列内の各要素が独立した型を持つため、一般的に圧縮が困難です。このため、埋め込みモデルの出力である浮動小数点ベクトルを、サブタイプ float32binData ベクトルに変換することで、より効率的な直列化方式となります。binData ベクトルは、ベクトル全体に対して 1 つの型識別子のみを保持するため、ストレージのオーバーヘッドを削減できます。

埋め込みが正しく最適である状態を確保するために、以下の戦略を検討してください。

MongoDB ベクトル検索を使用して埋め込みを作成し、埋め込みをクエリする方法を学習したら、検索拡張生成 (RAG)(RAG)を実装して生成系AIアプリケーションのビルドを開始します。

32 ビットの浮動小数点ベクトル埋め込みをより少ないビット数に量子化することで、リソース消費をさらに削減し、クエリ速度を向上させることも可能です。詳しくは、「ベクトル量子化」をご覧ください。

戻る

互換性と制約

ルール バッジを取得する

「MongoDB を使用した RAG」を無料でマスターしましょう!

詳細

項目一覧