Intégrer Milvus à MindsDB
MindsDB est un outil puissant permettant d'intégrer des applications d'IA à diverses sources de données d'entreprise. Il agit comme un moteur de requête fédéré qui met de l'ordre dans la prolifération des données en répondant méticuleusement aux requêtes sur les données structurées et non structurées. Que vos données soient dispersées dans des applications SaaS, des bases de données ou des entrepôts de données, MindsDB peut les connecter et les interroger à l'aide de SQL standard. Il dispose de systèmes RAG autonomes de pointe grâce à des bases de connaissances, prend en charge des centaines de sources de données et offre des options de déploiement flexibles, du développement local aux environnements en nuage.
Ce tutoriel montre comment intégrer Milvus à MindsDB, vous permettant d'exploiter les capacités d'IA de MindsDB avec la fonctionnalité de base de données vectorielle de Milvus par le biais d'opérations de type SQL pour la gestion et l'interrogation d'embeddings vectoriels.
Ce tutoriel se réfère principalement à la documentation officielle de MindsDB Milvus Handler. Si vous trouvez des parties obsolètes dans ce tutoriel, vous pouvez suivre en priorité la documentation officielle et créer un problème pour nous.
Installer MindsDB
Avant de commencer, installez MindsDB localement via Docker ou Docker Desktop.
Avant de continuer, assurez-vous d'avoir une solide compréhension des concepts fondamentaux et des opérations de MindsDB et de Milvus.
Introduction des arguments
Les arguments requis pour établir une connexion sont les suivants :
uriuri pour la base de données Milvus, peut être défini sur le fichier local ".db" ou sur le service docker ou cloudtoken: token pour prendre en charge le service docker ou cloud en fonction de l'option uri
Les arguments optionnels pour établir une connexion sont les suivants :
Ils sont utilisés pour les requêtes SELECT:
search_default_limit: limite par défaut à passer dans les instructions select (default=100)search_metric_type: type de métrique utilisé pour les recherches (default="L2")search_ignore_growing: si les segments en croissance doivent être ignorés lors des recherches de similarité (default=False)search_params: spécifique au sitesearch_metric_type(default={"nprobe" : 10})
Ces paramètres sont utilisés pour les requêtes CREATE:
create_auto_id: la génération automatique de l'identifiant lors de l'insertion d'enregistrements sans identifiant (default=False)create_id_max_len: longueur maximale du champ id lors de la création d'une table (default=64)create_embedding_dim: dimension d'intégration pour la création d'une table (default=8)create_dynamic_field: si les tables créées ont des champs dynamiques ou non (default=True)create_content_max_len: longueur maximale de la colonne de contenu (default=200)create_content_default_value: valeur par défaut de la colonne de contenu (default='')create_schema_description: description des schémas créés (default='')create_alias: alias des schémas créés (default='default')create_index_params: paramètres de l'index créé sur la colonne embeddings (default={})create_index_metric_type: la métrique utilisée pour créer l'index (default='L2')create_index_type: le type d'index (default='AUTOINDEX')
Utilisation
Avant de continuer, assurez-vous que la version pymilvus est identique à cette version épinglée. Si vous rencontrez des problèmes de compatibilité de version, vous pouvez revenir en arrière dans votre version de pymilvus, ou la personnaliser dans ce fichier d'exigences.
Création d'une connexion
Pour utiliser ce gestionnaire et se connecter à un serveur Milvus dans MindsDB, la syntaxe suivante peut être utilisée :
CREATE DATABASE milvus_datasource
WITH
ENGINE = 'milvus',
PARAMETERS = {
"uri": "./milvus_local.db",
"token": "",
"create_embedding_dim": 3,
"create_auto_id": true
};
- Si vous n'avez besoin d'une base de données vectorielle locale que pour des données à petite échelle ou pour du prototypage, définir l'uri comme un fichier local, par exemple
./milvus.db, est la méthode la plus pratique, car elle utilise automatiquement Milvus Lite pour stocker toutes les données dans ce fichier.- Pour les données à plus grande échelle et le trafic en production, vous pouvez configurer un serveur Milvus sur Docker ou Kubernetes. Dans cette configuration, veuillez utiliser l'adresse et le port du serveur comme votre
uri, par exemplehttp://localhost:19530. Si vous activez la fonction d'authentification sur Milvus, définisseztokencomme"<your_username>:<your_password>", sinon il n'est pas nécessaire de définir le jeton.- Vous pouvez également utiliser Milvus entièrement géré sur Zilliz Cloud. Il vous suffit de définir
uriettokencomme étant le point de terminaison public et la clé API de votre instance Zilliz Cloud.
Abandon de la connexion
Pour interrompre la connexion, utilisez la commande suivante
DROP DATABASE milvus_datasource;
Création de tables
Pour insérer des données à partir d'une table préexistante, utilisez la commande suivante CREATE
CREATE TABLE milvus_datasource.test
(SELECT * FROM sqlitedb.test);
Abandon de collections
L'abandon d'une collection n'est pas pris en charge.
Interrogation et sélection
Pour interroger une base de données à l'aide d'un vecteur de recherche, vous pouvez utiliser search_vector dans la clause WHERE.
Attention :
- Si vous omettez
LIMIT, la clausesearch_default_limitest utilisée car Milvus l'exige. - La colonne des métadonnées n'est pas prise en charge, mais si le schéma dynamique de la collection est activé, vous pouvez effectuer des requêtes comme d'habitude (voir l'exemple ci-dessous).
- Les champs dynamiques ne peuvent pas être affichés mais peuvent être interrogés.
SELECT * from milvus_datasource.test
WHERE search_vector = '[3.0, 1.0, 2.0, 4.5]'
LIMIT 10;
Si vous omettez la clause search_vector, il s'agit d'une recherche de base et la quantité d'entrées dans la collection est renvoyée par LIMIT ou search_default_limit.
SELECT * from milvus_datasource.test
Vous pouvez utiliser la clause WHERE sur les champs dynamiques comme une requête SQL normale.
SELECT * FROM milvus_datasource.createtest
WHERE category = "science";
Suppression d'enregistrements
Vous pouvez supprimer des entrées en utilisant DELETE comme en SQL.
Attention :
- Milvus ne prend en charge que la suppression d'entités avec des clés primaires clairement spécifiées.
- Vous ne pouvez utiliser que l'opérateur
IN.
DELETE FROM milvus_datasource.test
WHERE id IN (1, 2, 3);
Insertion d'enregistrements
Vous pouvez également insérer des lignes individuelles comme suit :
INSERT INTO milvus_test.testable (id,content,metadata,embeddings)
VALUES ("id3", 'this is a test', '{"test": "test"}', '[1.0, 8.0, 9.0]');
Mise à jour
La mise à jour des enregistrements n'est pas prise en charge par l'API Milvus. Vous pouvez essayer d'utiliser une combinaison des opérateurs DELETE et INSERT
Pour plus de détails et d'exemples, veuillez vous référer à la documentation officielle de MindsDB.