包含: —&—
Milvus 是開放原始碼向量資料庫系統,可有效率地儲存、索引和搜尋大規模的向量數據。 它通常用於機器學習、人工智慧和數據科學應用程式。
向量數據會將資訊編碼為數學向量,也就是數位或座標的陣列。 機器學習和 AI 系統通常會使用向量來代表影像、文字、音訊或視訊等非結構化物件。 向量中的每個維度都會描述 物件的特定特性。 藉由比較它們,系統可以分類、搜尋及識別物件的叢集。
在本文中,您將瞭解如何使用 .NET AspireMilvus 資料庫整合。 資料庫.NET AspireMilvus整合可讓您連線到現有的Milvus資料庫,或使用容器映像建立新的實例milvusdb/milvus
。
主機整合
裝載整合的 Milvus 資料庫會將伺服器模型化為 MilvusServerResource 類型,並將資料庫模型化為 MilvusDatabaseResource 類型。 若要存取這些類型和 API,請在📦專案中新增AspireMilvus.Hosting. NuGet 套件。
dotnet add package Aspire.Hosting.Milvus
如需詳細資訊,請參閱 dotnet add package 或 Manage 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 方法會在名為 ExampleProject
的 milvusdb
中設定連接。
提示
如果您想要連線到現有的 Milvus 伺服器,請改為呼叫 AddConnectionString。 如需詳細資訊,請參閱 參考現有的資源。
處理認證並傳遞 Milvus 資源的其他參數
Milvus 資源包含預設憑證,預設憑證具有username
root
,且密碼為 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.DisableHealthChecks 為
false
時,新增健康情況檢查,這會嘗試連線到 Milvus 伺服器。 - 使用已配置的客戶端來執行
HealthAsync
。 如果結果 狀況良好,健康情況檢查會被視為狀況良好,否則狀況不良。 同樣地,如果有例外,健康檢查會被視為不正常,錯誤會導致健康檢查失敗。
可檢視性和遙測
.NET .NET Aspire 整合會自動設定記錄、追蹤和計量組態,這些設定有時稱為 可觀察性要素。 如需整合可觀察性和遙測的詳細資訊,請參閱 .NET.NET Aspire 整合概觀。 視支援服務而定,某些整合可能只支援其中一些功能。 例如,某些整合支援記錄和追蹤,但不支援計量。 您也可以使用組 態 一節中呈現的技術來停用遙測功能。
伐木
.NET Aspire Milvus 資料庫整合使用 .NET 標準日誌,您會看到下列類別的日誌條目:
Milvus.Client
追踪
.NET Aspire
Milvus 資料庫整合目前不會產生追蹤活動,因為 Milvus.Client
函式庫不支援它們。
指標
.NET Aspire
Milvus 資料庫整合目前不會發出度量指標,因為 Milvus.Client
函式庫不支持它們。