Exécution locale de Milvus Lite
Cette page explique comment exécuter Milvus localement avec Milvus Lite. Milvus Lite est la version allégée de Milvus, une base de données vectorielles open-source qui alimente les applications d'intelligence artificielle avec des embeddings vectoriels et des recherches de similarité.
Vue d'ensemble
Milvus Lite peut être importé dans votre application Python, fournissant la fonctionnalité principale de recherche vectorielle de Milvus. Milvus Lite est déjà inclus dans le SDK Python de Milvus. Il peut être simplement déployé à l'aide de pip install pymilvus
.
Avec Milvus Lite, vous pouvez commencer à créer une application d'IA avec recherche de similarités vectorielles en quelques minutes ! Milvus Lite peut être exécuté dans l'environnement suivant :
- Jupyter Notebook / Google Colab
- Ordinateurs portables
- Périphériques Edge
Milvus Lite partage la même API que Milvus Standalone et Distributed, et couvre la plupart des fonctionnalités telles que la persistance et la gestion des données vectorielles, les opérations CRUD vectorielles, la recherche vectorielle dense et éparse, le filtrage des métadonnées, la recherche multi-vectorielle et hybride. Ensemble, ils offrent une expérience cohérente dans différents types d'environnements, des appareils périphériques aux clusters dans le nuage, en s'adaptant à des cas d'utilisation de différentes tailles. Avec le même code côté client, vous pouvez exécuter des applications GenAI avec Milvus Lite sur un ordinateur portable ou un bloc-notes Jupyter, ou Milvus Standalone sur un conteneur Docker, ou Milvus Distributed sur un cluster Kubernetes à grande échelle desservant des milliards de vecteurs en production.
Conditions préalables
Milvus Lite prend actuellement en charge les environnements suivants :
- Ubuntu >= 20.04 (x86_64 et arm64)
- MacOS >= 11.0 (Apple Silicon M1/M2 et x86_64)
Veuillez noter que Milvus Lite n'est adapté qu'aux cas d'utilisation de la recherche vectorielle à petite échelle. Pour un cas d'utilisation à grande échelle, nous recommandons d'utiliser Milvus Standalone ou Milvus Distributed. Vous pouvez également envisager l'utilisation de Milvus entièrement géré sur Zilliz Cloud.
Configurer Milvus Lite
pip install -U pymilvus
Nous recommandons d'utiliser pymilvus
. Comme milvus-lite
est inclus dans pymilvus
version 2.4.2 ou supérieure, vous pouvez pip install
avec -U
pour forcer la mise à jour vers la dernière version et milvus-lite
est automatiquement installé.
Si vous souhaitez installer explicitement le paquet milvus-lite
, ou si vous avez installé une ancienne version de milvus-lite
et souhaitez la mettre à jour, vous pouvez utiliser pip install -U milvus-lite
.
Connexion à Milvus Lite
Dans pymilvus
, spécifiez un nom de fichier local comme paramètre uri de MilvusClient pour utiliser Milvus Lite.
from pymilvus import MilvusClient
client = MilvusClient("./milvus_demo.db")
Après avoir exécuté l'extrait de code ci-dessus, un fichier de base de données nommé milvus_demo.db sera généré dans le dossier actuel.
REMARQUE : la même API s'applique également à Milvus Standalone, Milvus Distributed et Zilliz Cloud, la seule différence étant de remplacer le nom du fichier local par le point d'extrémité du serveur distant et les informations d'identification, par exemple
client = MilvusClient(uri="http://localhost:19530", token="username:password")
.
Exemples
Voici une démonstration simple montrant comment utiliser Milvus Lite pour la recherche de texte. Il existe des exemples plus complets d'utilisation de Milvus Lite pour construire des applications telles que RAG, la recherche d'images, et l'utilisation de Milvus Lite dans les cadres RAG populaires tels que LangChain et LlamaIndex!
from pymilvus import MilvusClient
import numpy as np
client = MilvusClient("./milvus_demo.db")
client.create_collection(
collection_name="demo_collection",
dimension=384 # The vectors we will use in this demo has 384 dimensions
)
# Text strings to search from.
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
# For illustration, here we use fake vectors with random numbers (384 dimension).
vectors = [[ np.random.uniform(-1, 1) for _ in range(384) ] for _ in range(len(docs)) ]
data = [ {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(vectors)) ]
res = client.insert(
collection_name="demo_collection",
data=data
)
# This will exclude any text in "history" subject despite close to the query vector.
res = client.search(
collection_name="demo_collection",
data=[vectors[0]],
filter="subject == 'history'",
limit=2,
output_fields=["text", "subject"],
)
print(res)
# a query that retrieves all entities matching filter expressions.
res = client.query(
collection_name="demo_collection",
filter="subject == 'history'",
output_fields=["text", "subject"],
)
print(res)
# delete
res = client.delete(
collection_name="demo_collection",
filter="subject == 'history'",
)
print(res)
Limites
Lors de l'utilisation de Milvus Lite, certaines fonctionnalités ne sont pas prises en charge. Les tableaux suivants résument les limites d'utilisation de Milvus Lite.
Collection
Méthode / Paramètre | Pris en charge dans Milvus Lite |
---|---|
create_collection() | Prise en charge avec des paramètres limités |
collection_name | Y |
dimension | Y |
primary_field_name | Y |
id_type | Y |
vector_field_name | Y |
metric_type | Y |
auto_id | Y |
schema | Y |
index_params | Y |
enable_dynamic_field | Y |
num_shards | N |
partition_key_field | N |
num_partitions | N |
consistency_level | N (Ne prend en charge que Strong ; Toute configuration sera traitée comme Strong .) |
get_collection_stats() | Prend en charge l'obtention des statistiques de la collection. |
collection_name | Y |
timeout | Y |
describe_collection() | num_shards , consistency_level , et collection_id dans la réponse ne sont pas valides. |
timeout | Y |
has_collection() | Permet de vérifier l'existence d'une collection. |
collection_name | Y |
timeout | Y |
list_collections() | Permet de dresser la liste de toutes les collections. |
drop_collection() | Permet de supprimer une collection. |
collection_name | Y |
timeout | Y |
rename_collection() | Il n'est pas possible de renommer une collection. |
Champ et schéma
Méthode / Paramètre | Pris en charge dans Milvus Lite |
---|---|
create_schema() | Prise en charge avec des paramètres limités |
auto_id | Y |
enable_dynamic_field | Y |
primary_field | Y |
partition_key_field | N |
add_field() | Prise en charge avec des paramètres limités |
field_name | Y |
datatype | Y |
is_primary | Y |
max_length | Y |
element_type | Y |
max_capacity | Y |
dim | Y |
is_partition_key | N |
Insertion et recherche
Méthode / Paramètre | Pris en charge dans Milvus Lite |
---|---|
search() | Prise en charge avec des paramètres limités |
collection_name | Y |
data | Y |
filter | Y |
limit | Y |
output_fields | Y |
search_params | Y |
timeout | Y |
partition_names | N |
anns_field | Y |
query() | Prise en charge de paramètres limités |
collection_name | Y |
filter | Y |
output_fields | Y |
timeout | Y |
ids | Y |
partition_names | N |
get() | Prise en charge avec des paramètres limités |
collection_name | Y |
ids | Y |
output_fields | Y |
timeout | Y |
partition_names | N |
supprimer() | Prise en charge avec des paramètres limités |
collection_name | Y |
ids | Y |
timeout | Y |
filter | Y |
partition_name | N |
insert() | Prise en charge avec des paramètres limités |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
upsert() | Prise en charge avec des paramètres limités |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
Chargement et libération
Méthode / Paramètre | Pris en charge dans Milvus Lite |
---|---|
load_collection() | Y |
collection_name | Y |
timeout | Y |
release_collection() | Y |
collection_name | Y |
timeout | Y |
get_load_state() | L'obtention de l'état de chargement n'est pas prise en charge. |
refresh_load() | Le chargement des données non chargées d'une collection chargée n'est pas supporté. |
close() | Y |
Index
Méthode / Paramètre | Pris en charge dans Milvus Lite |
---|---|
list_indexes() | L'énumération des index est prise en charge. |
collection_name | Y |
field_name | Y |
create_index() | Prend en charge uniquement le type d'index FLAT . |
index_params | Y |
timeout | Y |
drop_index() | La suppression d'index est prise en charge. |
collection_name | Y |
index_name | Y |
timeout | Y |
describe_index() | La description des index est prise en charge. |
collection_name | Y |
index_name | Y |
timeout | Y |
Types d'index vectoriels
Milvus Lite ne prend en charge que le type d'index FLAT. Il utilise le type FLAT quel que soit le type d'index spécifié dans la collection.
Fonctionnalités de recherche
Milvus Lite prend en charge les recherches vectorielles éparses, multivectorielles et hybrides.
Partition
Milvus Lite ne prend pas en charge les partitions et les méthodes liées aux partitions.
Utilisateurs et rôles
La Milvus Lite ne prend pas en charge les utilisateurs, les rôles et les méthodes associées.
Alias
La version Lite de Milvus ne prend pas en charge les alias et les méthodes liées aux alias.
Migration des données de Milvus Lite
Toutes les données stockées dans Milvus Lite peuvent être facilement exportées et chargées dans d'autres types de déploiement Milvus, tels que Milvus Standalone sur Docker, Milvus Distributed sur K8s ou Milvus entièrement géré sur Zilliz Cloud.
Milvus Lite fournit un outil de ligne de commande qui peut décharger des données dans un fichier json, qui peut être importé dans milvus et Zilliz Cloud(le service cloud entièrement géré pour Milvus). La commande milvus-lite sera installée avec le paquet python milvus-lite.
# Install
pip install -U "pymilvus[bulk_writer]"
milvus-lite dump -h
usage: milvus-lite dump [-h] [-d DB_FILE] [-c COLLECTION] [-p PATH]
optional arguments:
-h, --help show this help message and exit
-d DB_FILE, --db-file DB_FILE
milvus lite db file
-c COLLECTION, --collection COLLECTION
collection that need to be dumped
-p PATH, --path PATH dump file storage dir
L'exemple suivant exporte toutes les données de la collection demo_collection
stockées dans ./milvus_demo.db
(fichier de base de données Milvus Lite).
Pour exporter des données :
milvus-lite dump -d ./milvus_demo.db -c demo_collection -p ./data_dir
# ./milvus_demo.db: milvus lite db file
# demo_collection: collection that need to be dumped
#./data_dir : dump file storage dir
Avec le fichier de vidage, vous pouvez télécharger les données vers Zilliz Cloud via Data Import, ou télécharger les données vers les serveurs Milvus via Bulk Insert.
Ce qui suit
Après vous être connecté à Milvus Lite, vous pouvez :
Consulter Quickstart pour voir ce que Milvus peut faire.
Apprendre les opérations de base de Milvus :
Déployer votre cluster Milvus sur des clouds :
Découvrez Milvus Backup, un outil open-source pour les sauvegardes de données Milvus.
Découvrez Birdwatcher, un outil open-source pour le débogage de Milvus et les mises à jour dynamiques de la configuration.
Découvrez Attu, un outil GUI open-source pour la gestion intuitive de Milvus.