Udostępnij za pośrednictwem


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ą usernameroot 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.

Zobacz też