AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

ベクトル埋め込みを手動で作成する方法

ベクター埋め込みを他の MongoDB データと一緒に保存できます。これらの埋め込みは、データ内の意味のある関係を捉え、セマンティック検索を実行し、RAG を実装することを可能にします。

次のチュートリアルでは、ベクトル埋め込みの作成方法とベクトル検索を使用したクエリの実行方法が学べます。具体的には、次の手順を実行します。

  1. Define a function that uses an embedding model to generate vector embeddings.

    使用するモデル(独自またはオープンソース)を選択します。最先端の埋め込みには、Voyage AI を使用します。

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

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

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

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

注意

MongoDB ベクトル検索自動埋め込みサービスは、コレクション内のテキスト データのセマンティック検索を有効にする 1 つの方法です。自動埋め込みを使用すると、vector embeddingsを自分で生成、保存、またはマネージドする必要はありません。代わりに、 MongoDB ベクトル検索 が vector embeddings を自動的に生成および管理します。詳細については、自動埋め込みの概要 を参照してください。

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

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

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

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

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

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

方式
説明

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

If you don't have an API key for a proprietary embedding model, load an open-source embedding model locally from your application.

独自モデルの使用

ほとんどの AI プロバイダーは、API を独自の埋め込みモデルに提供しており、それを使用してベクトル埋め込みを作成できます。最先端の埋め込みを使用するには、 Voyage AI をご利用ください。

統合の活用

You can integrate MongoDB Vector Search with open-source frameworks and AI services to quickly connect to both open-source and proprietary embedding models and generate vector embeddings for MongoDB Vector Search.

To learn more, see MongoDB AI Integrations and Partners.

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

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

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

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

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

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

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

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

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

If you have a large number of float vectors and want to reduce the storage and WiredTiger footprint (such as disk and memory usage) in mongod, compress your embeddings by converting them to binData vectors.

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

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

The tutorial on this page includes an example function that you can use to convert your float32 vectors to binData vectors.

BSON BinData vectors are supported by the following drivers:

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

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

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

また、リソース消費をさらに削減し、クエリ速度を向上させるために、32 ビットのfloat vector embeddingsをより少ないビットに定量化することもできます。詳細については、「About Quantization」を参照してください。