intégration de base de données .NET AspireMilvus
inclut : l’intégration d’hébergement et l’intégration de
Client
Milvus est un système de base de données vectorielle open source qui stocke, indexe et recherche efficacement des données vectorielles à grande échelle. Il est couramment utilisé dans le Machine Learning, l’intelligence artificielle et les applications de science des données.
Les données vectorielles encodent les informations en tant que vecteurs mathématiques, qui sont des tableaux de nombres ou de coordonnées. Les systèmes Machine Learning et IA utilisent souvent des vecteurs pour représenter des objets non structurés tels que des images, du texte, de l’audio ou de la vidéo. Chaque dimension du vecteur décrit une caractéristique spécifique de l’objet. En les comparant, les systèmes peuvent classifier, rechercher et identifier des clusters d’objets.
Dans cet article, vous allez apprendre à utiliser l’intégration de base de données .NET AspireMilvus. L’intégration de base de données .NET AspireMilvus vous permet de vous connecter à des bases de données Milvus existantes ou de créer de nouvelles instances avec l’image conteneur milvusdb/milvus
.
Intégration de l’hébergement
L'intégration de la base de données Milvus modélise le serveur en tant que type MilvusServerResource et la base de données en tant que type MilvusDatabaseResource. Pour accéder à ces types et API, ajoutez le package NuGet 📦Aspire.Hosting.Milvus dans le projet hôte de l'application .
dotnet add package Aspire.Hosting.Milvus
Pour plus d’informations, consultez dotnet add package ou Manage package dependencies in .NET applications.
Ajouter des ressources de serveur et de base de données Milvus
Dans votre projet hôte d’application, appelez AddMilvus pour ajouter et retourner un générateur de ressources Milvus. Chaînez un appel au générateur de ressources retourné pour AddDatabase, pour ajouter une ressource de base de données 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...
Note
Le conteneur Milvus peut être lent à démarrer. Il est donc préférable d’utiliser une durée de vie persistante pour éviter les redémarrages inutiles. Pour plus d’informations, consultez la durée de vie des ressources du conteneur.
Lorsque .NET.NET Aspire ajoute une image conteneur à l’hôte de l’application, comme illustré dans l’exemple précédent avec l’image milvusdb/milvus
, il crée une instance de Milvus sur votre ordinateur local. Une référence à votre générateur de ressources Milvus (la variable milvus
) est utilisée pour ajouter une base de données. La base de données est nommée milvusdb
, puis ajoutée au ExampleProject
.
La méthode WithReference configure une connexion dans le ExampleProject
nommé milvusdb
.
Pourboire
Si vous préférez vous connecter à un serveur Milvus existant, appelez AddConnectionString à la place. Pour plus d’informations, consultez Référencer les ressources existantes.
Gestion des informations d’identification et transmission d’autres paramètres pour la ressource Milvus
La ressource Milvus inclut les informations d’identification par défaut avec un username
de root
et le mot de passe Milvus
.
Milvus prend en charge les mots de passe par défaut basés sur la configuration à l’aide de la variable d’environnement COMMON_SECURITY_DEFAULTROOTPASSWORD
. Pour modifier le mot de passe par défaut dans le conteneur, transmettez un paramètre apiKey
lors de l’appel de l’API d’hébergement AddMilvus
:
var apiKey = builder.AddParameter("apiKey", secret: true);
var milvus = builder.AddMilvus("milvus", apiKey);
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(milvus);
Le code précédent obtient un paramètre à passer à l’API AddMilvus
et affecte en interne le paramètre à la variable d’environnement COMMON_SECURITY_DEFAULTROOTPASSWORD
du conteneur Milvus. Le paramètre apiKey
est généralement spécifié en tant que secret utilisateur :
{
"Parameters": {
"apiKey": "Non-default-P@ssw0rd"
}
}
Pour plus d’informations, consultez paramètres externes.
Ajouter une ressource Milvus avec un volume de données
Pour ajouter un volume de données à la ressource de service Milvus, appelez la méthode WithDataVolume sur la ressource 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...
Le volume de données est utilisé pour conserver les données Milvus en dehors du cycle de vie de son conteneur. Le volume de données est monté sur le chemin d’accès /var/lib/milvus
dans le conteneur SQL Server et, lorsqu'un paramètre name
n'est pas fourni, le nom est généré aléatoirement. Pour plus d’informations sur les volumes de données et sur la raison pour laquelle ils sont préférés par rapport aux montages de liaison , consultez Docker documentation : Volumes.
Ajouter une ressource Milvus avec un montage de liaison de données
Pour ajouter un montage de liaison de données à la ressource Milvus, appelez la méthode 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...
Important
Les montages de liaisons de données ont des fonctionnalités limitées par rapport aux volumes, qui offrent de meilleures performances, une meilleure portabilité et sécurité, les rendant plus adaptés aux environnements de production. Toutefois, les montages de liaison autorisent l'accès direct et la modification des fichiers sur le système hôte, ce qui est idéal pour le développement et le test où des modifications en temps réel s'avèrent nécessaires.
Les montages de liaison de données s’appuient sur le système de fichiers de l’ordinateur hôte pour conserver les données Milvus entre les redémarrages de conteneur. Le montage de liaison de données est monté sur le chemin C:\Milvus\Data
sur Windows (ou /Milvus/Data
sur Unix) de l’ordinateur hôte dans le conteneur Milvus. Pour plus d’informations sur les montages de liaison de données, consultez Docker docs : Liaison de montages.
Créer une ressource Attu
Attu est un outil d’interface utilisateur graphique (GUI) et de gestion conçu pour interagir avec Milvus et ses bases de données. Il inclut des fonctionnalités de visualisation enrichies qui peuvent vous aider à examiner et à comprendre vos données vectorielles.
Si vous souhaitez utiliser Attu pour gérer Milvus dans votre solution .NET Aspire, appelez la méthode d’extension WithAttu sur votre ressource de Milvus. La méthode crée un conteneur à partir de l’image 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...
Lorsque vous déboguez la solution .NET.NET Aspire, vous verrez un conteneur Attu répertorié dans les ressources de la solution. Sélectionnez le point de terminaison de la ressource pour ouvrir l’interface graphique utilisateur et commencer à gérer les bases de données.
L'intégration de Client (Aperçu)
Pour commencer à utiliser l’intégration du client .NET AspireMilvus, installez le 📦Aspire.Milvus.Client package NuGet dans le projet consommant le client, c’est-à-dire le projet pour l’application qui utilise le client de base de données Milvus. L'intégration du client Milvus enregistre une instance de MilvusClient.MilvusClient que vous pouvez utiliser pour interagir avec les bases de données Milvus.
dotnet add package Aspire.Milvus.Client
Ajouter un client Milvus
Dans le fichier Program.cs de votre projet consommant le client, appelez la méthode d’extension AddMilvusClient sur n’importe quelle IHostApplicationBuilder pour inscrire un MilvusClient
à utiliser via le conteneur d’injection de dépendances. La méthode prend un paramètre de nom de connexion.
builder.AddMilvusClient("milvusdb");
Pourboire
Le paramètre connectionName
doit correspondre au nom utilisé lors de l’ajout de la ressource de base de données Milvus dans le projet hôte de l’application. En d’autres termes, lorsque vous appelez AddDatabase
et fournissez un nom de milvusdb
ce même nom doit être utilisé lors de l’appel de AddMilvusClient
. Pour plus d’informations, consultez Ajouter une ressource de serveur Milvus et une ressource de base de données.
Vous pouvez ensuite récupérer l’instance MilvusClient
à l’aide de l’injection de dépendances. Par exemple, pour récupérer la connexion à partir d’un exemple de service :
public class ExampleService(MilvusClient client)
{
// Use the Milvus Client...
}
Pour plus d’informations sur l’injection de dépendances, consultez l’injection de dépendances.NET.
Ajouter un client Milvus avec clé
Il peut arriver que vous souhaitiez inscrire plusieurs instances de MilvusClient
avec différents noms de connexion. Pour enregistrer des clients à clé Milvus, appelez la méthode AddKeyedMilvusClient.
builder.AddKeyedMilvusClient(name: "mainDb");
builder.AddKeyedMilvusClient(name: "loggingDb");
Important
Lorsque vous utilisez des services à clé, il est prévu que votre ressource Milvus a configuré deux bases de données nommées, une pour le mainDb
et l’autre pour le loggingDb
.
Vous pouvez ensuite récupérer les instances MilvusClient
à l’aide de l’injection de dépendances. Par exemple, pour récupérer la connexion à partir d’un exemple de service :
public class ExampleService(
[FromKeyedServices("mainDb")] MilvusClient mainDbClient,
[FromKeyedServices("loggingDb")] MilvusClient loggingDbClient)
{
// Use clients...
}
Pour plus d’informations sur les services à clé, consultez .NET Injection de dépendances : services à clé.
Configuration
L’intégration du client .NET AspireMilvus fournit plusieurs options pour configurer la connexion à Milvus en fonction des exigences et des conventions de votre projet.
Pourboire
L’utilisation par défaut est root
et le mot de passe par défaut est Milvus
. Pour configurer un autre mot de passe dans le conteneur Milvus, consultez Gestion des informations d’identification et le passage d’autres paramètres pour la ressource Milvus. Utilisez les techniques suivantes pour configurer les applications clientes consommatrices dans votre solution de .NET.NET Aspire en utilisant le même mot de passe ou d'autres paramètres.
Utiliser une chaîne de connexion
Lorsque vous utilisez une chaîne de connexion à partir de la section de configuration ConnectionStrings
, vous pouvez fournir le nom de la chaîne de connexion lors de l’appel de builder.AddMilvusClient()
:
builder.AddMilvusClient("milvus");
Ensuite, la chaîne de connexion est récupérée à partir de la section de configuration ConnectionStrings
:
{
"ConnectionStrings": {
"milvus": "Endpoint=http://localhost:19530/;Key=root:Non-default-P@ssw0rd"
}
}
Par défaut, le MilvusClient
utilise le point de terminaison de l’API gRPC.
Utiliser des fournisseurs de configuration
L’intégration du client .NET AspireMilvus prend en charge Microsoft.Extensions.Configuration. Il charge le MilvusClientSettings depuis la configuration en utilisant la clé Aspire:Milvus:Client
. L’extrait de code suivant est un exemple de appsettings.json qui configure certaines des options :
{
"Aspire": {
"Milvus": {
"Client": {
"Endpoint": "http://localhost:19530/",
"Database": "milvusdb",
"Key": "root:Non-default-P@ssw0rd",
"DisableHealthChecks": false
}
}
}
}
Pour obtenir le schéma complet de Milvus pour l’intégration du client JSON, consultez Aspire.Milvus.Client/ConfigurationSchema.json.
Utiliser des délégués en ligne
Vous pouvez également transmettre le délégué Action<MilvusSettings> configureSettings
pour configurer certaines ou toutes les options inline, par exemple pour définir la clé API à partir du code :
builder.AddMilvusClient(
"milvus",
static settings => settings.Key = "root:Non-default-P@ssw0rd");
Client contrôles de santé de l’intégration
Par défaut, les intégrations .NET.NET Aspire activent les contrôles de santé pour tous les services. Pour plus d’informations, consultez .NET.NET Aspire vue d’ensemble des intégrations.
Intégration de base de données .NET AspireMilvus :
- Ajoute la vérification d’intégrité quand MilvusClientSettings.DisableHealthChecks est
false
, qui tente de se connecter au serveur Milvus. - Utilise le client configuré pour effectuer une
HealthAsync
. Si le résultat est sain, le bilan de santé est considéré comme sain, sinon il est non sain. De même, s'il y a une exception, la vérification de l'état de santé est considérée comme défectueuse, l'erreur se propageant à travers l'échec de cette vérification.
Observabilité et télémétrie
.NET .NET Aspire intégrations configurent automatiquement les configurations de journalisation, de suivi et de métriques, parfois appelées les piliers de l’observabilité. Pour plus d’informations sur l’observabilité de l’intégration et la télémétrie, consultez .NET.NET Aspire vue d’ensemble des intégrations. Selon le service de stockage, certaines intégrations peuvent uniquement prendre en charge certaines de ces fonctionnalités. Par exemple, certaines intégrations prennent en charge la journalisation et le suivi, mais pas les métriques. Les fonctionnalités de télémétrie peuvent également être désactivées à l’aide des techniques présentées dans la section Configuration.
Exploitation forestière
L'intégration de la base de données .NET AspireMilvus utilise la journalisation standard .NET, et vous verrez les entrées de journal de la catégorie suivante :
Milvus.Client
Traçage
L’intégration de base de données .NET AspireMilvus n’émet actuellement pas d’activités de suivi, car elles ne sont pas prises en charge par la bibliothèque Milvus.Client
.
Métriques
L’intégration de base de données .NET AspireMilvus n’émet actuellement pas de métriques, car elles ne sont pas prises en charge par la bibliothèque Milvus.Client
.