共用方式為


.NET Aspire Milvus 資料庫整合

包含:包含主機整合 —&— Client整合包含Client整合

Milvus 是開放原始碼向量資料庫系統,可有效率地儲存、索引和搜尋大規模的向量數據。 它通常用於機器學習、人工智慧和數據科學應用程式。

向量數據會將資訊編碼為數學向量,也就是數位或座標的陣列。 機器學習和 AI 系統通常會使用向量來代表影像、文字、音訊或視訊等非結構化物件。 向量中的每個維度都會描述 物件的特定特性。 藉由比較它們,系統可以分類、搜尋及識別物件的叢集。

在本文中,您將瞭解如何使用 .NET AspireMilvus 資料庫整合。 資料庫.NET AspireMilvus整合可讓您連線到現有的Milvus資料庫,或使用容器映像建立新的實例milvusdb/milvus

主機整合

裝載整合的 Milvus 資料庫會將伺服器模型化為 MilvusServerResource 類型,並將資料庫模型化為 MilvusDatabaseResource 類型。 若要存取這些類型和 API,請在📦專案中新增AspireMilvus.Hosting. NuGet 套件。

dotnet add package Aspire.Hosting.Milvus

如需詳細資訊,請參閱 dotnet add packageManage package dependencies in .NET applications

新增 Milvus 伺服器和資料庫資源

在您的應用程式主專案中,呼叫 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 方法會在名為 ExampleProjectmilvusdb 中設定連接。

提示

如果您想要連線到現有的 Milvus 伺服器,請改為呼叫 AddConnectionString。 如需詳細資訊,請參閱 參考現有的資源

處理認證並傳遞 Milvus 資源的其他參數

Milvus 資源包含預設憑證,預設憑證具有usernameroot,且密碼為 Milvus。 Milvus 支援以組態為基礎的預設密碼,方法是使用環境變數 COMMON_SECURITY_DEFAULTROOTPASSWORD。 若要變更容器中的默認密碼,請在呼叫裝載 API apiKey 時傳遞 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 服務資源,請在 WithDataVolume 資源上呼叫 Milvus 方法:

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 數據保存在其容器生命週期之外。 資料磁碟區會掛接在 /var/lib/milvus 路徑的 SQL Server 容器中,當未提供 name 參數時,名稱會隨機生成。 如需了解有關資料卷的更多信息,以及為何資料卷比綁定掛載更受歡迎,請參閱 Docker。

新增一個具有資料綁定掛載的 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 數據。 數據綁定掛載會在主機的 C:\Milvus\Data(Windows)路徑上掛載,或在容器的 /Milvus/Data 路徑(Unix)掛載。 如需數據系結掛接的詳細資訊,請參閱 Docker 檔:系結掛接

建立 Attu 資源

Attu 是一種圖形使用者介面(GUI)和管理工具,其設計目的是要與其 Milvus 資料庫互動。 其中包含豐富的視覺效果功能,可協助您調查及瞭解向量數據。

如果您想要使用 Attu 來管理 Milvus 解決方案中的 .NET Aspire,請在 WithAttu 資源上呼叫 Milvus 擴充方法。 方法會從 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 AspireMilvus 用戶端整合,請安裝 📦Aspire。Milvus。Client 用戶端取用專案中的 NuGet 套件,也就是使用 Milvus 資料庫用戶端的應用程式專案。 客戶端 Milvus 整合會註冊一個 Milvus.Client.MilvusClient 實例,以供您用於與 Milvus 資料庫互動。

dotnet add package Aspire.Milvus.Client

新增 Milvus 用戶端

在用戶端取用專案的Program.cs檔案中,於任何 AddMilvusClient 上呼叫 IHostApplicationBuilder 擴充方法,以註冊 MilvusClient ,以透過相依性插入容器使用。 方法會採用連接名稱參數。

builder.AddMilvusClient("milvusdb");

提示

connectionName 參數必須符合在應用程式主專案中新增 Milvus 資料庫資源時所使用的名稱。 換句話說,當您呼叫 AddDatabase 並提供 milvusdb 的名稱時,呼叫 AddMilvusClient也應該使用相同的名稱。 如需詳細資訊,請參閱 新增 Milvus 伺服器資源和資料庫資源

接著,您可以使用相依性注入來擷取 MilvusClient 實例。 例如,若要從範例服務擷取連線:

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

如需相依性插入的詳細資訊,請參閱 .NET 相依性插入

新增具特定鍵 Milvus 的用戶端

在某些情況下,您可能想要以不同的連線名稱註冊多個 MilvusClient 實例。 若要註冊 Milvus 用戶端,請呼叫 AddKeyedMilvusClient 方法:

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

重要

使用索引鍵服務時,預期您的 Milvus 資源已設定兩個具名資料庫,一個用於 mainDb,另一個用於 loggingDb

然後,您可以使用相依注入來擷取 MilvusClient 實例。 例如,若要從範例服務擷取連線:

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

如需金鑰服務的詳細資訊,請參閱 .NET 相依性插入:索引鍵服務

配置

.NET Aspire Milvus 用戶端整合提供多個選項,可根據專案的需求和慣例,設定與 Milvus 的連線。

提示

默認用法為 root,且默認密碼為 Milvus。 若要在Milvus容器中設定不同的密碼,請參閱處理認證並傳遞資源的其他參數Milvus。 使用下列技術,以相同的密碼或其他設定,在 .NET.NET Aspire 解決方案中設定取用用戶端應用程式。

使用連接字串

從 [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 用戶端整合支援 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
      }
    }
  }
}

如需完整的 Milvus 用戶端整合 JSON 架構,請參閱 Aspire。Milvus。Client/ConfigurationSchema.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時,新增健康情況檢查,這會嘗試連線到 Milvus 伺服器。
  • 使用已配置的客戶端來執行 HealthAsync。 如果結果 狀況良好,健康情況檢查會被視為狀況良好,否則狀況不良。 同樣地,如果有例外,健康檢查會被視為不正常,錯誤會導致健康檢查失敗。

可檢視性和遙測

.NET .NET Aspire 整合會自動設定記錄、追蹤和計量組態,這些設定有時稱為 可觀察性要素。 如需整合可觀察性和遙測的詳細資訊,請參閱 .NET.NET Aspire 整合概觀。 視支援服務而定,某些整合可能只支援其中一些功能。 例如,某些整合支援記錄和追蹤,但不支援計量。 您也可以使用組 一節中呈現的技術來停用遙測功能。

伐木

.NET Aspire Milvus 資料庫整合使用 .NET 標準日誌,您會看到下列類別的日誌條目:

  • Milvus.Client

追踪

.NET Aspire Milvus 資料庫整合目前不會產生追蹤活動,因為 Milvus.Client 函式庫不支援它們。

指標

.NET Aspire Milvus 資料庫整合目前不會發出度量指標,因為 Milvus.Client 函式庫不支持它們。

另請參閱