ベクター埋め込みを他の MongoDB データと一緒に保存できます。これらの埋め込みは、データ内の意味のある関係を捉え、セマンティック検索を実行し、RAG を実装することを可能にします。
はじめる
次のチュートリアルでは、ベクトル埋め込みの作成方法とベクトル検索を使用したクエリの実行方法が学べます。具体的には、次の手順を実行します。
Define a function that uses an embedding model to generate vector embeddings.
使用するモデル(独自またはオープンソース)を選択します。最先端の埋め込みには、Voyage AI を使用します。
データから埋め込みを作成し、MongoDB に保存します。
新しいデータから埋め込みを作成するか、 MongoDBコレクションに既に存在する既存のデータから埋め込みを作成するかを選択します。
検索語句から埋め込みを作成し、ベクトル検索クエリを実行します。
実稼働アプリケーションでは通常、ベクトル埋め込みを生成するためのスクリプトを記述します。 このページのサンプルコードから開始し、 のユースケースに合わせてカスタマイズできます。
注意
MongoDB ベクトル検索自動埋め込みサービスは、コレクション内のテキスト データのセマンティック検索を有効にする 1 つの方法です。自動埋め込みを使用すると、vector embeddingsを自分で生成、保存、またはマネージドする必要はありません。代わりに、 MongoDB ベクトル検索 が vector embeddings を自動的に生成および管理します。詳細については、自動埋め込みの概要 を参照してください。
Considerations
ベクトル埋め込みを作成するときは、次の要素を考慮します。
埋め込みの作成方法の選択
ベクトル埋め込みを作成するには、埋め込みモデルを使用する必要があります。埋め込みモデルは、データの数値表現の生成に使用されるアルゴリズムです。埋め込みモデルにアクセスするには、次のいずれかの方法を選択します。
方式 | 説明 |
|---|---|
オープンソース モデルをロードする | 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:
C++ Driver v4.1.0 or later
C#/.NET Driver v3.2.0 or later
Go Driver v2.1.0 or later
PyMongo Driver v4.10 or later
Node.js Driver v6.11 or later
Java Driver v5.3.1 or later
Ruby Driver with
bsongem v5.1 or later
バックグラウンド
浮動小数点ベクトルは、たとえほとんどのベクトルが同じ型で構成されていたとしても、配列内の各要素が独立した型を持つため、一般的に圧縮が困難です。このため、埋め込みモデルの出力である浮動小数点ベクトルを、サブタイプ float32 の binData ベクトルに変換することで、より効率的な直列化方式となります。binData ベクトルは、ベクトル全体に対して 1 つの型識別子のみを保持するため、ストレージのオーバーヘッドを削減できます。
埋め込みの検証
埋め込みが正しく最適である状態を確保するために、以下の戦略を検討してください。
次のステップ
MongoDB ベクトル検索を使用して埋め込みを作成し、埋め込みをクエリする方法を学習したら、検索拡張生成 (RAG)(RAG)を実装して生成系AIアプリケーションのビルドを開始します。
また、リソース消費をさらに削減し、クエリ速度を向上させるために、32 ビットのfloat vector embeddingsをより少ないビットに定量化することもできます。詳細については、「About Quantization」を参照してください。