integracja z bazą danych .NET AspireMilvus
obejmuje: integracja hostingu oraz integracja
Client
Milvus to system baz danych wektorów typu open source, który efektywnie przechowuje, indeksuje i wyszukuje dane wektorów na dużą skalę. Jest on często używany w aplikacjach uczenia maszynowego, sztucznej inteligencji i nauki o danych.
Dane wektorowe kodują informacje jako wektory matematyczne, które są tablicami liczb lub współrzędnych. Systemy uczenia maszynowego i sztucznej inteligencji często używają wektorów do reprezentowania obiektów bez struktury, takich jak obrazy, tekst, dźwięk lub wideo. Każdy wymiar w wektorze opisuje konkretną charakterystykę obiektu. Porównując je, systemy mogą klasyfikować, wyszukiwać i identyfikować klastry obiektów.
Z tego artykułu dowiesz się, jak korzystać z integracji z bazą danych .NET AspireMilvus. Integracja bazy danych .NET AspireMilvus umożliwia łączenie się z istniejącymi bazami danych Milvus lub tworzenie nowych wystąpień przy użyciu obrazu kontenera milvusdb/milvus
.
Integracja hostingu
Baza danych Milvus hostująca integrację modeluje serwer jako typ MilvusServerResource i bazę danych jako typ MilvusDatabaseResource. Aby uzyskać dostęp do tych typów i interfejsów API, dodaj 📦Aspire.Hosting.Milvus pakiet NuGet w projekcie hosta aplikacji.
dotnet add package Aspire.Hosting.Milvus
Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzaj zależnościami pakietów w aplikacjach .NET.
Dodawanie zasobów serwera Milvus i bazy danych
W projekcie hostingu aplikacji wywołaj AddMilvus, aby dodać i zwrócić konstruktor zasobów Milvus. Połącz wywołanie zwróconego konstruktora zasobów z AddDatabase, aby dodać zasób bazy danych 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...
Notatka
Kontener Milvus może być powolny do uruchomienia, dlatego najlepiej użyć trwałego trybu działania, aby uniknąć niepotrzebnych ponownych uruchomień. Aby uzyskać więcej informacji, zobacz okres istnienia zasobu kontenera.
Gdy .NET.NET Aspire dodaje obraz kontenera do hosta aplikacji, jak pokazano w poprzednim przykładzie z obrazem milvusdb/milvus
, tworzy nową instancję Milvus na komputerze lokalnym. Referencja do konstruktora zasobów Milvus (zmiennej milvus
) umożliwia dodanie bazy danych. Baza danych nosi nazwę milvusdb
, a następnie jest dodawana do ExampleProject
.
Metoda WithReference konfiguruje połączenie w ExampleProject
o nazwie milvusdb
.
Napiwek
Jeśli wolisz nawiązać połączenie z istniejącym serwerem Milvus, wywołaj AddConnectionString zamiast tego. Aby uzyskać więcej informacji, zobacz Istniejące zasoby.
Obsługa poświadczeń i przekazywanie innych parametrów dla zasobu Milvus
Zasób Milvus zawiera poświadczenia domyślne z wartością username
root
i hasłem Milvus
.
Milvus obsługuje domyślne hasła oparte na konfiguracji przy użyciu zmiennej środowiskowej COMMON_SECURITY_DEFAULTROOTPASSWORD
. Aby zmienić domyślne hasło w kontenerze, przekaż parametr apiKey
podczas wywoływania interfejsu API hostingu AddMilvus
:
var apiKey = builder.AddParameter("apiKey", secret: true);
var milvus = builder.AddMilvus("milvus", apiKey);
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(milvus);
Powyższy kod pobiera parametr do przekazania do interfejsu API AddMilvus
i wewnętrznie przypisuje parametr do zmiennej środowiskowej COMMON_SECURITY_DEFAULTROOTPASSWORD
kontenera Milvus. Parametr apiKey
jest zwykle określany jako klucz tajny użytkownika:
{
"Parameters": {
"apiKey": "Non-default-P@ssw0rd"
}
}
Aby uzyskać więcej informacji, zobacz Parametry zewnętrzne.
Dodawanie zasobu Milvus z woluminem danych
Aby dodać wolumin danych do zasobu usługi Milvus, wywołaj metodę WithDataVolume w zasobie 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...
Dysk danych jest używany do utrwalania danych Milvus poza cyklem życia kontenera. Wolumin danych jest instalowany w ścieżce /var/lib/milvus
w kontenerze SQL Server, a gdy nie podano parametru name
, nazwa jest generowana losowo. Aby uzyskać więcej informacji na temat wolumenów danych i szczegółów, dlaczego są preferowane zamiast instalacji wiązań , zobacz dokumentację Docker: Wolumeny.
Dodaj zasób Milvus z montowaniem powiązania danych
Aby dodać powiązanie danych do zasobu Milvus, wywołaj metodę 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...
Ważny
Montowania powiązań danych mają ograniczoną funkcjonalność w porównaniu z woluminami , które oferują lepszą wydajność, przenośność i bezpieczeństwo, co czyni je bardziej odpowiednimi do środowisk produkcyjnych. Jednak montowanie związań umożliwia bezpośredni dostęp i modyfikację plików w systemie hosta, co jest idealne do rozwoju i testowania, kiedy potrzebne są zmiany w czasie rzeczywistym.
Montowanie wiązań danych polega na wykorzystaniu systemu plików maszyny hosta, aby zachować Milvus dane między ponownymi uruchomieniami kontenera. Montowanie danych odbywa się na C:\Milvus\Data
w Windows (lub /Milvus/Data
w Unix) na ścieżce maszyny hosta w kontenerze Milvus. Aby uzyskać więcej informacji na temat bind mounts, zobacz dokumentację Docker: Bind mounts.
Utwórz zasób Attu
Attu jest graficznym interfejsem użytkownika (GUI) i narzędziem do zarządzania przeznaczonym do interakcji z Milvus i jego bazami danych. Zawiera on zaawansowane funkcje wizualizacji, które mogą pomóc w zbadaniu i zrozumieniu danych wektorowych.
Jeśli chcesz użyć usługi Attu do zarządzania Milvus w rozwiązaniu .NET Aspire, wywołaj metodę rozszerzenia WithAttu w zasobie Milvus. Metoda tworzy kontener na podstawie obrazu 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...
Podczas debugowania rozwiązania .NET.NET Aspire zobaczysz kontener Attu wymieniony w zasobach rozwiązania. Wybierz punkt końcowy zasobu, aby otworzyć graficzny interfejs użytkownika i rozpocząć zarządzanie bazami danych.
integracja Client (wersja zapoznawcza)
Aby rozpocząć pracę z integracją klienta .NET AspireMilvus, zainstaluj 📦Aspire.Milvus.Client pakiet NuGet w projekcie korzystającym z klienta, czyli projekt dla aplikacji korzystającej z klienta bazy danych Milvus. Integracja klienta Milvus rejestruje Milvus.Client. Wystąpienie MilvusClient, którego można użyć do interakcji z bazami danych Milvus.
dotnet add package Aspire.Milvus.Client
Dodaj klienta Milvus
W pliku Program.cs projektu korzystającego z klienta wywołaj metodę rozszerzenia AddMilvusClient na dowolnym IHostApplicationBuilder, aby zarejestrować MilvusClient
do użycia za pośrednictwem kontenera wstrzykiwania zależności. Metoda przyjmuje parametr nazwy połączenia.
builder.AddMilvusClient("milvusdb");
Napiwek
Parametr connectionName
musi być zgodny z nazwą używaną podczas dodawania zasobu bazy danych Milvus w projekcie hosta aplikacji. Innymi słowy, podczas wywoływania AddDatabase
i podania nazwy milvusdb
należy użyć tej samej nazwy podczas wywoływania AddMilvusClient
. Aby uzyskać więcej informacji, zobacz Dodawanie zasobu serwera Milvus i zasobu bazy danych.
Następnie można pobrać wystąpienie MilvusClient
za pomocą wstrzykiwania zależności. Aby na przykład pobrać połączenie z przykładowej usługi:
public class ExampleService(MilvusClient client)
{
// Use the Milvus Client...
}
Aby uzyskać więcej informacji na temat wstrzykiwania zależności, zobacz .NET wstrzykiwanie zależności.
Dodaj klienta z kluczem Milvus
Mogą wystąpić sytuacje, w których chcesz zarejestrować wiele wystąpień MilvusClient
z różnymi nazwami połączeń. Aby zarejestrować Milvus klientów, wywołaj metodę AddKeyedMilvusClient.
builder.AddKeyedMilvusClient(name: "mainDb");
builder.AddKeyedMilvusClient(name: "loggingDb");
Ważny
W przypadku korzystania z usług opartych na kluczach oczekuje się, że zasób Milvus skonfigurował dwie nazwane bazy danych: jedną dla mainDb
i jedną dla loggingDb
.
Za pomocą wstrzykiwania zależności możesz następnie pobrać instancje MilvusClient
. Aby na przykład pobrać połączenie z przykładowej usługi:
public class ExampleService(
[FromKeyedServices("mainDb")] MilvusClient mainDbClient,
[FromKeyedServices("loggingDb")] MilvusClient loggingDbClient)
{
// Use clients...
}
Aby uzyskać więcej informacji na temat usług kluczowanych, zobacz .NET wstrzykiwanie zależności: usługi kluczowane.
Konfiguracja
Integracja klienta .NET AspireMilvus oferuje wiele opcji konfigurowania połączenia z Milvus na podstawie wymagań i konwencji projektu.
Napiwek
Domyślne użycie to root
, a domyślne hasło to Milvus
. Aby skonfigurować inne hasło w kontenerze Milvus, zobacz Obsługa poświadczeń i przekazywanie innych parametrów dla zasobu Milvus. Użyj poniższych technik, aby skonfigurować korzystanie z aplikacji klienckich w rozwiązaniu .NET.NET Aspire z tym samym hasłem lub innymi ustawieniami.
Używanie parametrów połączenia
W przypadku używania parametrów połączenia z sekcji konfiguracji ConnectionStrings
można podać nazwę parametrów połączenia podczas wywoływania builder.AddMilvusClient()
:
builder.AddMilvusClient("milvus");
Następnie parametry połączenia zostaną pobrane z sekcji konfiguracji ConnectionStrings
:
{
"ConnectionStrings": {
"milvus": "Endpoint=http://localhost:19530/;Key=root:Non-default-P@ssw0rd"
}
}
Domyślnie system MilvusClient
używa punktu końcowego interfejsu API gRPC.
Korzystanie z dostawców konfiguracji
Integracja klienta .NET AspireMilvus obsługuje Microsoft.Extensions.Configuration. Ładuje MilvusClientSettings z konfiguracji wykorzystując klucz Aspire:Milvus:Client
. Poniższy fragment kodu to przykład appsettings.json, który konfiguruje niektóre opcje:
{
"Aspire": {
"Milvus": {
"Client": {
"Endpoint": "http://localhost:19530/",
"Database": "milvusdb",
"Key": "root:Non-default-P@ssw0rd",
"DisableHealthChecks": false
}
}
}
}
Aby uzyskać pełny schemat integracji klienta MilvusJSON, zobacz Aspire.Milvus.Client/ConfigurationSchema.json.
Używanie delegatów wbudowanych
Możesz również przekazać delegata Action<MilvusSettings> configureSettings
, aby skonfigurować niektóre lub wszystkie opcje bezpośrednio, na przykład aby ustawić klucz API w kodzie.
builder.AddMilvusClient(
"milvus",
static settings => settings.Key = "root:Non-default-P@ssw0rd");
Client sprawdzanie stanu integracji
Domyślnie integracje .NET.NET Aspire umożliwiają kontrole stanu dla wszystkich usług. Aby uzyskać więcej informacji, zobacz omówienie integracji .NET.NET Aspire.
Integracja bazy danych .NET AspireMilvus:
- Dodaje kontrolę stanu zdrowia, gdy MilvusClientSettings.DisableHealthChecks jest
false
, próbując nawiązać połączenie z serwerem Milvus. - Używa skonfigurowanego klienta do wykonania
HealthAsync
. Jeśli wynik jest zdrowy, kontrola zdrowia jest uznawana za zdrową, w przeciwnym razie za niezdrową. Podobnie, jeśli wystąpi wyjątek, sprawdzanie kondycji uznaje się za niezdrowe, a błąd rozprzestrzenia się poprzez awarię sprawdzania kondycji.
Obserwowanie i telemetria
.NET
.NET Aspire integracje automatycznie ustawiają konfiguracje rejestrowania, śledzenia i metryk, które są czasami nazywane filarami obserwowalności. Aby uzyskać więcej informacji na temat możliwości obserwacji integracji i telemetrii, zobacz omówienie integracji .NET.NET Aspire. W zależności od usługi pomocniczej niektóre integracje mogą obsługiwać tylko niektóre z tych funkcji. Na przykład niektóre integracje obsługują rejestrowanie i śledzenie, ale nie metryki. Funkcje telemetrii można również wyłączyć przy użyciu technik przedstawionych w sekcji konfiguracji
Rejestrowanie
Integracja z bazą danych .NET AspireMilvus używa standardowego logowania .NET, a zobaczysz wpisy z następującej kategorii:
Milvus.Client
Śledzenie
Integracja .NET AspireMilvus z bazą danych nie emituje obecnie działań śledzenia, ponieważ nie są one obsługiwane przez bibliotekę Milvus.Client
.
Wskaźniki
Integracja z bazą danych .NET AspireMilvus nie emituje obecnie metryk, ponieważ nie są one obsługiwane przez bibliotekę Milvus.Client
.