.NET Aspire Milvus データベース統合
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 リソースには、username
が root
であり、パスワード 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 ファイルで、任意の IHostApplicationBuilder で AddMilvusClient 拡張メソッドを呼び出して、依存関係挿入コンテナーで使用する 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.DisableHealthChecks が
false
されたときに正常性チェックを追加します。これは、Milvusserverへの接続を試みます。 - 構成された client を使用して、
HealthAsync
を実行します。 結果 が正常なの場合、正常性チェックは正常と見なされます。それ以外の場合は異常です。 同様に、例外がある場合、健康診断が異常と判断され、エラーが健康診断の失敗を通じて伝達されます。
可観測性とテレメトリ
伐採
.NET Aspire Milvus データベース統合では、標準の .NET ログが使用され、次のカテゴリのログ エントリが表示されます。
Milvus.Client
トレーシング
.NET Aspire
Milvus データベース統合では、Milvus.Client
ライブラリでサポートされていないため、トレース アクティビティは現在出力されません。
メトリック
.NET Aspire
Milvus データベース統合では、Milvus.Client
ライブラリではサポートされていないため、メトリックは現在出力されません。
関連項目
.NET Aspire