Qdrant の統合 .NET.NET Aspire
Qdrant は、大規模なベクター データを効率的に格納、インデックス作成、および検索するオープンソース ベクター類似性検索エンジンです。 これは、機械学習、人工知能、データ サイエンス アプリケーションでよく使用されます。
ベクター データは、数値または座標の配列である数学的ベクトルとして情報をエンコードします。 機械学習と AI システムでは、多くの場合、ベクターを使用して、画像、テキスト、オーディオ、ビデオなどの非構造化オブジェクトを表します。 ベクトル内の各次元は、オブジェクトの特定の特性を記述します。 それらを比較することで、システムはオブジェクトのクラスターを分類、検索、および識別できます。
この記事では、.NET.NET Aspire Qdrant 統合を使用する方法について説明します。
.NET
.NET Aspire Qdrant 統合を使用すると、既存の Qdrant データベースに接続したり、qdrant/qdrant
コンテナー イメージをして新しいインスタンスを作成したりできます。
ホスティング統合
Qdrant ホスティング統合は、サーバーを QdrantServerResource の種類としてモデル化します。 この種類と API にアクセスするには、📦Aspireを追加します。アプリ ホスト プロジェクト内の Hosting.Qdrant NuGet パッケージ。
dotnet add package Aspire.Hosting.Qdrant
詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
Qdrant リソースを追加する
アプリ ホスト プロジェクトで、AddQdrant を呼び出して、Qdrant リソース ビルダーを追加して返します。
var builder = DistributedApplication.CreateBuilder(args);
var qdrant = builder.AddQdrant("qdrant")
.WithLifetime(ContainerLifetime.Persistent);
builder.AddProject<Projects.ExampleProject>()
.WithReference(qdrant)
.WaitFor(qdrant);
// After adding all resources, run the app...
手記
Qdrant コンテナーの起動に時間がかかる可能性があるため、不要な再起動を避けるために、永続的な の有効期間を使用することをお勧めします。 詳細については、「コンテナー リソースの有効期間 」を参照してください。
.NET
.NET Aspire 前の例に示すように、qdrant/qdrant
イメージを使用してコンテナー イメージをアプリ ホストに追加すると、ローカル コンピューターに新しい Qdrant インスタンスが作成されます。 リソースには qdrant
という名前が付けられ、ExampleProject
に追加されます。
WithReference メソッドは、ExampleProject
という名前の qdrant
で接続を構成します。
ヒント
既存の Qdrant サーバーに接続する場合は、代わりに AddConnectionString を呼び出します。 詳細については、「既存のリソースを参照する」を参照してください。
ヒント
qdrant/qdrant
コンテナー イメージには、ベクターの探索とデータベースの管理に使用できる Web UI が含まれています。 このツールにアクセスするには、.NET Aspire ソリューションを起動し、.NET Aspire ダッシュボードで Qdrant リソースのエンドポイントを選択します。 ブラウザーのアドレスバーで、
API キーの処理と Qdrant リソースの他のパラメーターの渡し
Qdrant に接続するには、クライアントが適切な API キーを渡す必要があります。 上記のコードでは、.NET.NET Aspire ソリューションに Qdrant リソースを追加すると、API キーがランダムな文字列に設定されます。 代わりに特定の API キーを使用する場合は、apiKey
パラメーターとして渡すことができます。
var apiKey = builder.AddParameter("apiKey", secret: true);
var qdrant = builder.AddQdrant("qdrant", apiKey);
builder.AddProject<Projects.ExampleProject>()
.WithReference(qdrant);
Qdrant では、環境変数 QDRANT__SERVICE__API_KEY
を使用して、構成ベースの既定の API キーをサポートしています。
上記のコードは、AddQdrant
API に渡すパラメーターを取得し、内部的に Qdrant コンテナーの QDRANT__SERVICE__API_KEY
環境変数にパラメーターを割り当てます。
apiKey
パラメーターは、通常、ユーザー シークレットとして指定されます。
{
"Parameters": {
"apiKey": "Non-default-P@ssw0rd"
}
}
詳細については、「外部パラメーター
データ ボリュームを使用して Qdrant リソースを追加する
Qdrant リソースにデータ ボリュームを追加するには、WithDataVolume 拡張メソッドを呼び出します。
var builder = DistributedApplication.CreateBuilder(args);
var qdrant = builder.AddQdrant("qdrant")
.WithLifetime(ContainerLifetime.Persistent)
.WithDataVolume();
builder.AddProject<Projects.ExampleProject>()
.WithReference(qdrant)
.WaitFor(qdrant);
// After adding all resources, run the app...
データ ボリュームは、コンテナーのライフサイクル外に Qdrant データを保持するために使用されます。 データ ボリュームは Qdrant コンテナーの /qdrant/storage
パスにマウントされ、name
パラメーターが指定されていない場合、名前はランダムに生成されます。 データ ボリュームの詳細と、マウントのバインド
データ バインド マウントを使用して Qdrant リソースを追加する
Qdrant リソースにデータ バインド マウントを追加するには、WithDataBindMount メソッドを呼び出します。
var builder = DistributedApplication.CreateBuilder(args);
var qdrant = builder.AddQdrant("qdrant")
.WithLifetime(ContainerLifetime.Persistent)
.WithDataBindMount(source: @"C:\Qdrant\Data");
builder.AddProject<Projects.ExampleProject>()
.WithReference(qdrant)
.WaitFor(qdrant);
// After adding all resources, run the app...
大事な
データ バインド マウント、パフォーマンス、移植性、およびセキュリティが向上し、運用環境に適した ボリュームと比較して機能が制限されています。 ただし、バインド マウントを使用すると、ホスト システム上のファイルに直接アクセスして変更できるため、リアルタイムの変更が必要な開発とテストに最適です。
データ バインド マウントは、ホスト マシンのファイルシステムに依存して、コンテナーの再起動の間に Qdrant データを保持します。 データ バインド マウントは、Qdrant コンテナー内のホスト コンピューター上の Windows 上の C:\Qdrant\Data
フォルダー (または /Qdrant/Data
上の Unix) にマウントされます。 データ バインド マウントの詳細については、「Docker ドキュメント: バインド マウント」を参照してください。
ホスティング統合の正常性チェック
Qdrant ホスティング統合により、Qdrant リソースの正常性チェックが自動的に追加されます。 正常性チェックでは、Qdrant が実行されていること、および Qdrant への接続を確立できることを確認します。
Client 統合
.NET .NET Aspire Qdrant クライアント統合を開始するには、クライアントを使用するプロジェクト、つまり Qdrant クライアントを利用するアプリケーションのプロジェクトに 📦AspireClient の NuGet パッケージをインストールします。 Qdrant クライアント統合は、Qdrant を登録します。Client.QdrantClient、Qdrant ベクター データとの対話に使用できるインスタンスです。
dotnet add package Aspire.Qdrant.Client
Qdrant クライアントを追加する
クライアントを使用するプロジェクトの Program.cs ファイルで、任意の IHostApplicationBuilder で AddQdrantClient 拡張メソッドを呼び出して、依存関係挿入コンテナーで使用する QdrantClient
を登録します。 このメソッドは、接続名パラメーターを受け取ります。
builder.AddQdrantClient("qdrant");
ヒント
connectionName
パラメーターは、アプリ ホスト プロジェクトに Qdrant リソースを追加するときに使用される名前と一致する必要があります。 つまり、AddQdrant
を呼び出すとき、qdrant
の名前を指定し、その同じ名前を AddQdrantClient
を呼び出すときにも使用する必要があります。 詳細については、「Qdrant リソースの追加」を参照してください。
その後、依存関係の挿入を使用して QdrantClient
インスタンスを取得できます。 たとえば、サービスの例から接続を取得するには、次のようにします。
public class ExampleService(QdrantClient client)
{
// Use client...
}
依存関係の挿入の詳細については、.NET 依存関係の挿入を参照してください。
キー付き Qdrant クライアントを追加する
接続名が異なる複数の QdrantClient
インスタンスを登録する場合があります。 キー付き Qdrant クライアントを登録するには、AddKeyedQdrantClient メソッドを呼び出します。
builder.AddKeyedQdrantClient(name: "mainQdrant");
builder.AddKeyedQdrantClient(name: "loggingQdrant");
その後、依存関係の挿入を使用して QdrantClient
インスタンスを取得できます。 たとえば、サービスの例から接続を取得するには、次のようにします。
public class ExampleService(
[FromKeyedServices("mainQdrant")] QdrantClient mainQdrantClient,
[FromKeyedServices("loggingQdrant")] QdrantClient loggingQdrantClient)
{
// Use clients...
}
キー付きサービスの詳細については、「.NET 依存関係の挿入: キー付きサービスの」を参照してください。
構成
.NET .NET Aspire Qdrant クライアント統合には、プロジェクトの要件と規則に基づいて Qdrant への接続を構成するための複数のオプションが用意されています。
接続文字列を使用する
ConnectionStrings
構成セクションの接続文字列を使用する場合は、builder.AddQdrantClient()
を呼び出すときに接続文字列の名前を指定できます。
builder.AddQdrantClient("qdrant");
次 .NET.NET Aspire、ConnectionStrings
構成セクションから接続文字列を取得します。
{
"ConnectionStrings": {
"qdrant": "Endpoint=http://localhost:6334;Key=123456!@#$%"
}
}
既定では、QdrantClient
は gRPC API エンドポイントを使用します。
構成プロバイダーを使用する
.NET
.NET Aspire Qdrant クライアント統合では、Microsoft.Extensions.Configurationがサポートされます。
QdrantClientSettings キーを使用して、構成から Aspire:Qdrant:Client
を読み込みます。 オプションの一部を構成する appsettings.json の例を次に示します。
{
"Aspire": {
"Qdrant": {
"Client": {
"Endpoint": "http://localhost:6334/",
"Key": "123456!@#$%"
}
}
}
}
完全な Qdrant クライアント統合 JSON スキーマについては、Aspireを参照してください。Qdrant。Client/ConfigurationSchema.json.
インライン デリゲートを使用する
Action<QdrantClientSettings> configureSettings
デリゲートを渡して、コードから API キーを設定するなど、一部またはすべてのオプションをインラインで設定することもできます。
builder.AddQdrantClient(
"qdrant",
settings => settings.Key = "12345!@#$%");
Client 統合の正常性チェック
既定では、.NET.NET Aspire 統合により、すべてのサービス 正常性チェック が有効になります。 詳細については、.NET.NET Aspire 統合の概要を参照してください。
可観測性とテレメトリ
伐採
.NET Aspire Qdrant 統合では、標準の .NET ログが使用され、次のカテゴリのログ エントリが表示されます。
Qdrant.Client
トレーシング
.NET
.NET Aspire Qdrant 統合では、Qdrant.Client
ライブラリでサポートされていないため、トレース アクティビティは現在出力されません。
メトリック
.NET
.NET Aspire Qdrant 統合は、Qdrant.Client
ライブラリでサポートされていないため、現在メトリックを出力しません。
関連項目
- Qdrant
- Qdrant ドキュメント
- Qdrant
リポジトリ を する - Qdrant .NET SDK
- .NET .NET Aspire 統合
- .NET Aspire GitHub リポ
.NET Aspire