次の方法で共有


.NET Aspire Milvus データベース統合

含まれるもの:ホスティング統合Client 統合

Milvus は、大規模なベクター データを効率的に格納、インデックス作成、検索するオープンソース ベクター データベース システムです。 これは、機械学習、人工知能、データ サイエンス アプリケーションでよく使用されます。

ベクター データは、数値または座標の配列である数学的ベクトルとして情報をエンコードします。 機械学習と AI システムでは、多くの場合、ベクターを使用して、画像、テキスト、オーディオ、ビデオなどの非構造化オブジェクトを表します。 ベクトル内の各次元は、オブジェクトの特定の特性を記述します。 それらを比較することで、システムはオブジェクトのクラスターを分類、検索、および識別できます。

この記事では、.NET AspireMilvus データベース統合を使用する方法について説明します。 .NET Aspire Milvus データベース統合を使用すると、既存の Milvus データベースに接続したり、milvusdb/milvus コンテナー イメージをして新しいインスタンスを作成したりできます。

ホスティング統合

Milvus データベース ホスティング統合では、server が MilvusServerResource 型として、データベースが MilvusDatabaseResource 型としてモデル化されます。 これらの型と API にアクセスするには、アプリ ホスト プロジェクトに 📦AspireホスティングMilvus NuGet パッケージを追加します。

dotnet add package Aspire.Hosting.Milvus

詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。

Milvus server とデータベース リソースを追加する

アプリ ホスト プロジェクトで、AddMilvus を呼び出して、Milvus リソース ビルダーを追加して返します。 返却されたリソースビルダーに対して呼び出しを連結して AddDatabaseを行い、Milvus データベースリソースを追加します。

var builder = DistributedApplication.CreateBuilder(args);

var milvus = builder.AddMilvus("milvus")
                    .WithLifetime(ContainerLifetime.Persistent);

var milvusdb = milvus.AddDatabase("milvusdb");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(milvusdb)
       .WaitFor(milvusdb);

// After adding all resources, run the app...

手記

Milvus コンテナーの起動に時間がかかる可能性があるため、不要な再起動を避けるために、永続的な の有効期間を使用することをお勧めします。 詳細については、「コンテナー リソースの有効期間 」を参照してください。

.NET .NET Aspire 前の例で示したように、milvusdb/milvus イメージでコンテナー イメージをアプリ ホストに追加すると、ローカル コンピューターに新しい Milvus インスタンスが作成されます。 データベースの追加には、Milvus リソース ビルダー (milvus 変数) への参照が使用されます。 データベースには milvusdb という名前が付けられ、ExampleProjectに追加されます。

WithReference メソッドは、milvusdbという名前の ExampleProject で接続を構成します。

ヒント

既存の Milvusserverに接続する場合は、代わりに AddConnectionString 呼び出します。 詳細については、「既存のリソースを参照する」を参照してください。

Milvus リソースの資格情報の処理と他のパラメーターの受け渡し

Milvus リソースには、usernameroot であり、パスワード Milvusの既定の資格情報が含まれています。 Milvus では、環境変数 COMMON_SECURITY_DEFAULTROOTPASSWORDを使用して、構成ベースの既定のパスワードをサポートしています。 コンテナーの既定のパスワードを変更するには、apiKey ホスティング API を呼び出すときに AddMilvus パラメーターを渡します。

var apiKey = builder.AddParameter("apiKey", secret: true);

var milvus = builder.AddMilvus("milvus", apiKey);

var myService = builder.AddProject<Projects.ExampleProject>()
                       .WithReference(milvus);

上記のコードは、AddMilvus API に渡すパラメーターを取得し、COMMON_SECURITY_DEFAULTROOTPASSWORD コンテナーの Milvus 環境変数に内部的にパラメーターを割り当てます。 apiKey パラメーターは、通常、ユーザー シークレットとして指定されます。

{
  "Parameters": {
    "apiKey": "Non-default-P@ssw0rd"
  }
}

詳細については、「外部パラメーターを参照してください。

データ ボリュームを持つ Milvus リソースを追加する

Milvus サービス リソースにデータ ボリュームを追加するには、Milvus リソースで WithDataVolume メソッドを呼び出します。

var builder = DistributedApplication.CreateBuilder(args);

var milvus = builder.AddMilvus("milvus")
                    .WithDataVolume();

var milvusdb = milvus.AddDatabase("milvusdb");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(milvusdb)
       .WaitFor(milvusdb);

// After adding all resources, run the app...

データ ボリュームは、Milvus データをコンテナーのライフサイクル外に保持するために使用されます。 データ ボリュームは、SQL Server コンテナー内の /var/lib/milvus パスにマウントされ、name パラメーターが指定されていない場合、名前はランダムに生成されます。 データボリュームおよびそれがマウントに対してバインド よりも好まれる理由についての詳細は、「 ドキュメント: ボリューム」をご覧ください。

データ バインド マウントを使用して Milvus リソースを追加する

Milvus リソースにデータ バインド マウントを追加するには、WithDataBindMount メソッドを呼び出します。

var builder = DistributedApplication.CreateBuilder(args);

var milvus = builder.AddMilvus("milvus")
                    .WithDataBindMount(source: @"C:\Milvus\Data");

var milvusdb = milvus.AddDatabase("milvusdb");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(milvusdb)
       .WaitFor(milvusdb);

// After adding all resources, run the app...

大事な

データ バインド マウント、パフォーマンス、移植性、およびセキュリティが向上し、運用環境に適した ボリュームと比較して機能が制限されています。 ただし、バインド マウントを使用すると、ホスト システム上のファイルに直接アクセスして変更できるため、リアルタイムの変更が必要な開発とテストに最適です。

データ バインド マウントは、ホスト マシンのファイルシステムに依存して、コンテナーの再起動間に Milvus データを保持します。 データ バインド マウントは、Milvus コンテナー内のホスト コンピューター上の Windows 上の C:\Milvus\Data (または Unixの /Milvus/Data) パスにマウントされます。 データ バインドマウントの詳細については、「Docker のドキュメント:バインドマウント」を参照してください。

Attu リソースを作成する

Attu は、Milvus とそのデータベースと対話するように設計されたグラフィカル ユーザー インターフェイス (GUI) および管理ツールです。 これには、ベクター データの調査と理解に役立つ豊富な視覚化機能が含まれています。

Attu を使用して .NET Aspire ソリューションの Milvus を管理する場合は、Milvus リソースで WithAttu 拡張メソッドを呼び出します。 このメソッドは、zilliz/attu イメージからコンテナーを作成します。

var builder = DistributedApplication.CreateBuilder(args);

var milvus = builder.AddMilvus("milvus")
                    .WithAttu()
                    .WithLifetime(ContainerLifetime.Persistent);

var milvusdb = milvus.AddDatabase("milvusdb");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(milvusdb)
       .WaitFor(milvusdb);

// After adding all resources, run the app...

.NET .NET Aspire ソリューションをデバッグすると、ソリューションのリソースに Attu コンテナーが一覧表示されます。 リソースのエンドポイントを選択して GUI を開き、データベースの管理を開始します。

Client 統合

.NET Aspire Milvus client 統合を開始するには、📦Aspireをインストールします。Milvus.client-consuming プロジェクト(Milvus データベース clientを使用するアプリケーションのプロジェクト) に NuGet パッケージをClient します。 Milvus client 統合では、Milvusが登録されます。Client.MilvusClient、Milvus データベースとの対話に使用できるインスタンスです。

dotnet add package Aspire.Milvus.Client

Milvus client を追加する

client-consuming プロジェクトの Program.cs ファイルで、任意の IHostApplicationBuilderAddMilvusClient 拡張メソッドを呼び出して、依存関係挿入コンテナーで使用する MilvusClient を登録します。 このメソッドは、接続名パラメーターを受け取ります。

builder.AddMilvusClient("milvusdb");

ヒント

connectionName パラメーターは、Milvus データベース リソースをアプリ ホスト プロジェクトに追加するときに使用する名前と一致する必要があります。 つまり、AddDatabase を呼び出して milvusdb の名前を指定した場合、その名前を AddMilvusClientを呼び出す際にも使用する必要があります。 詳細については、「Milvusserver リソースとデータベース リソースを追加する」を参照してください。

その後、依存関係の挿入を使用して MilvusClient インスタンスを取得できます。 たとえば、サービスの例から接続を取得するには、次のようにします。

public class ExampleService(MilvusClient client)
{
    // Use the Milvus Client...
}

依存関係の挿入の詳細については、.NET 依存関係の挿入を参照してください。

キー付き Milvusclient を追加する

接続名が異なる複数の MilvusClient インスタンスを登録する場合があります。 キー付き Milvus クライアントを登録するには、AddKeyedMilvusClient メソッドを呼び出します。

builder.AddKeyedMilvusClient(name: "mainDb");
builder.AddKeyedMilvusClient(name: "loggingDb");

大事な

キー付きサービスを使用する場合、Milvus リソースで、mainDb 用と loggingDb用の 2 つの名前付きデータベースが構成されている必要があります。

その後、依存関係の挿入を使用して MilvusClient インスタンスを取得できます。 たとえば、サービスの例から接続を取得するには、次のようにします。

public class ExampleService(
    [FromKeyedServices("mainDb")] MilvusClient mainDbClient,
    [FromKeyedServices("loggingDb")] MilvusClient loggingDbClient)
{
    // Use clients...
}

キー付きサービスの詳細については、「.NET 依存関係の挿入: キー付きサービスの」を参照してください。

設定

.NET Aspire Milvus client 統合には、プロジェクトの要件と規則に基づいて Milvus への接続を構成するための複数のオプションが用意されています。

ヒント

既定の使用は root で、既定のパスワードは Milvusです。 Milvus コンテナーで別のパスワードを構成するには、「資格情報の処理と、Milvus リソースのその他のパラメーターの受け渡し」を参照してください。 同じパスワードまたはその他の設定を使用して、.NET Aspire ソリューションで client アプリを使用するように構成するには、次の手法を使用します。

接続文字列を使用する

ConnectionStrings 構成セクションの接続文字列を使用する場合は、builder.AddMilvusClient()を呼び出すときに接続文字列の名前を指定できます。

builder.AddMilvusClient("milvus");

接続文字列は、ConnectionStrings 構成セクションから取得されます。

{
  "ConnectionStrings": {
    "milvus": "Endpoint=http://localhost:19530/;Key=root:Non-default-P@ssw0rd"
  }
}

既定では、MilvusClient は gRPC API エンドポイントを使用します。

構成プロバイダーを使用する

.NET Aspire Milvus client 統合では、Microsoft.Extensions.Configurationがサポートされています。 MilvusClientSettings キーを使用して、構成から Aspire:Milvus:Client を読み込みます。 次のスニペットは、いくつかのオプションを構成する appsettings.json の例です。

{
  "Aspire": {
    "Milvus": {
      "Client": {
        "Endpoint": "http://localhost:19530/",
        "Database": "milvusdb",
        "Key": "root:Non-default-P@ssw0rd",
        "DisableHealthChecks": false
      }
    }
  }
}

完全な Milvusclient 統合 JSON スキーマについては、Aspireを参照してください。Milvus./ConfigurationSchema をClientします。json.

インライン デリゲートを使用する

また、Action<MilvusSettings> configureSettings デリゲートを渡して、コードから API キーを設定するなど、一部またはすべてのオプションをインラインで設定することもできます。

builder.AddMilvusClient(
    "milvus",
    static settings => settings.Key = "root:Non-default-P@ssw0rd");

Client 統合のヘルスチェック

既定では、.NET.NET Aspire 統合により、すべてのサービス 正常性チェック が有効になります。 詳細については、.NET.NET Aspire 統合の概要を参照してください。

.NET Aspire Milvus データベース統合:

  • MilvusClientSettings.DisableHealthChecksfalseされたときに正常性チェックを追加します。これは、Milvusserverへの接続を試みます。
  • 構成された client を使用して、HealthAsyncを実行します。 結果 が正常なの場合、正常性チェックは正常と見なされます。それ以外の場合は異常です。 同様に、例外がある場合、健康診断が異常と判断され、エラーが健康診断の失敗を通じて伝達されます。

可観測性とテレメトリ

統合により、ログ記録、トレース、メトリックの構成が自動的に設定されます。これは、監視の柱 とも呼ばれます。 統合の可観測性とテレメトリの詳細については、統合の概要 参照してください。 バッキング サービスによっては、一部の統合でこれらの機能の一部のみがサポートされる場合があります。 たとえば、一部の統合ではログ記録とトレースがサポートされますが、メトリックはサポートされません。 テレメトリ機能は、「構成」セクションに記載されている手法を使用して無効にすることもできます。

伐採

.NET Aspire Milvus データベース統合では、標準の .NET ログが使用され、次のカテゴリのログ エントリが表示されます。

  • Milvus.Client

トレーシング

.NET Aspire Milvus データベース統合では、Milvus.Client ライブラリでサポートされていないため、トレース アクティビティは現在出力されません。

メトリック

.NET Aspire Milvus データベース統合では、Milvus.Client ライブラリではサポートされていないため、メトリックは現在出力されません。

関連項目