.NET + AI 用のベクトル データベース

ベクトル データベースは、ベクターの埋め込みを格納および管理するように設計されています。 埋め込みとは、セマンティックな意味を保持する非数値データの数値表現です。 単語、ドキュメント、画像、オーディオ、その他の種類のデータはすべてベクトル化できます。 埋め込みを使用すると、AI モデルが入力の意味を理解するのに役立ちます。これにより、テキストの要約、コンテキストに関連するデータの検索、テキストの説明からの画像の作成などの比較と変換を実行できます。

たとえば、ベクトル データベースを使用して次のことができます。

  • コンテンツ、テーマ、センチメント、スタイルに基づいて、類似の画像、ドキュメント、曲を識別します。
  • 特性、特徴、およびユーザー グループに基づいて類似製品を識別します。
  • ユーザー設定に基づいてコンテンツ、製品、またはサービスを推奨します。
  • 複雑な要件を満たすために、多くの選択肢の中から最適なオプションを特定します。
  • 主要なパターンまたは通常のパターンとは異なるデータの異常または不正なアクティビティを特定します。

ベクトル データベースは、プロパティ フィールドの完全一致ではなく、データ特性に基づいて類似の項目を検索するベクトル検索機能を提供します。 ベクトル検索は、Azure OpenAI 埋め込みモデルなどの AI 埋め込みモデルを使用して作成したデータのベクトル表現を分析することによって機能します。 検索プロセスでは、データ ベクトルとクエリ ベクトル間の距離が測定されます。 クエリ ベクトルに最も近いデータ ベクトルは、意味的に最も似ていると判明したものです。

Azure Cosmos DB for MongoDB 仮想コアなどの一部のサービスでは、データのネイティブなベクトル検索機能が提供されます。 その他のデータベースでも、Azure AI 検索などのサービスを使用して格納されているデータにインデックスを付けることで、ベクトル検索を強化できます。このサービスは、データをスキャンしてインデックスを作成し、ベクトル検索機能を提供します。

.NET と OpenAI を使用したベクトル検索ワークフロー

ベクトル データベースとその検索機能は、Azure OpenAI を使用した RAG パターン ワークフローで特に役立ちます。 このパターンを使用すると、データに関するセマンティック的に豊富な知識を持つ AI モデルを拡張または強化できます。 ベクトル データベースを使用する一般的な AI ワークフローには、次の手順が含まれる場合があります。

  1. OpenAI 埋め込みモデルを使用して、データの埋め込みを作成します。
  2. ベクトル データベースまたは検索サービスに埋め込みを格納し、インデックスを付けます。
  3. ユーザー プロンプトをアプリケーションから埋め込みに変換します。
  4. データをベクトル検索し、ユーザー プロンプトの埋め込みとデータベースの埋め込みを比較します。
  5. GPT-35 や GPT-4 などの言語モデルを使用して、ベクトル検索結果からユーザー フレンドリな入力候補をアセンブリします。

このフローの実践的な例については、「.NET アプリでベクトル検索を使用した RAG で Azure OpenAI を実装する」チュートリアルを参照してください。

RAG パターンのその他の利点は次のとおりです。

  • AI モデルからのユーザー プロンプトに対するコンテキストに関連した正確な応答を生成します。
  • LLM トークンの制限を克服する - 大変な作業は、データベースのベクトル検索によって行われます。
  • 更新されたデータに対して頻繁に微調整を行い、コストを削減します。

使用可能なベクトル データベース ソリューション

AI アプリケーションでは、多くの場合、データ ベクター データベースとサービスを使用して関連性を向上させ、カスタマイズされた機能を提供します。 これらのサービスの多くは .NET 用のネイティブ SDK を提供し、一部のサービスはカスタム コードを通して接続できる REST サービスを提供しています。 セマンティック カーネルには拡張可能なコンポーネント モデルが用意されているため、各 SDK を学習しなくても、さまざまなベクター ストアを使用できます。

セマンティック カーネルには、次のベクター データベースとサービス用のコネクタがあります。

ベクトル サービス セマンティック カーネル コネクタ .NET SDK
Azure AI Search Microsoft.SemanticKernel.Connectors.AzureAISearch Azure.Search.Documents
NoSQL 用 Azure Cosmos DB Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL Microsoft.Azure.Cosmos
Azure Cosmos DB for MongoDB Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB MongoDb.Driver
Azure PostgreSQL Server Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Azure SQL データベース Microsoft.SemanticKernel.Connectors.SqlServer Microsoft.Data.SqlClient
Chroma Microsoft.SemanticKernel.Connectors.Chroma NA
DuckDB Microsoft.SemanticKernel.Connectors.DuckDB DuckDB.NET.Data.Full
Milvus Microsoft.SemanticKernel.Connectors.Milvus Milvus.Client
MongoDB Atlas Vector Search Microsoft.SemanticKernel.Connectors.MongoDB MongoDb.Driver
Pinecone Microsoft.SemanticKernel.Connectors.Pinecone REST API
Postgres Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Qdrant Microsoft.SemanticKernel.Connectors.Qdrant Qdrant.Client
Redis Microsoft.SemanticKernel.Connectors.Redis StackExchange.Redis
Weaviate Microsoft.SemanticKernel.Connectors.Weaviate REST API

.NET SDK と API のサポートについて確認するには、それぞれのサービスのドキュメントを参照してください。