milvus-logo
LFAI
Home
  • Commencer
    • Installer Milvus

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 exempleclient = 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 sur l'utilisation de Milvus Lite pour construire des applications telles que RAG, la recherche d'images, et l'utilisation de Milvus Lite dans des 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ètrePris en charge dans Milvus Lite
create_collection()Prise en charge avec des paramètres limités
collection_nameY
dimensionY
primary_field_nameY
id_typeY
vector_field_nameY
metric_typeY
auto_idY
schemaY
index_paramsY
enable_dynamic_fieldY
num_shardsN
partition_key_fieldN
num_partitionsN
consistency_levelN (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_nameY
timeoutY
describe_collection()num_shards, consistency_level, et collection_id dans la réponse ne sont pas valides.
timeoutY
has_collection()Permet de vérifier si une collection existe.
collection_nameY
timeoutY
list_collections()Permet d'obtenir la liste de toutes les collections.
drop_collection()Permet de supprimer une collection.
collection_nameY
timeoutY
rename_collection()Il n'est pas possible de renommer une collection.

Champ et schéma

Méthode / ParamètrePris en charge dans Milvus Lite
create_schema()Prise en charge avec des paramètres limités
auto_idY
enable_dynamic_fieldY
primary_fieldY
partition_key_fieldN
add_field()Prise en charge avec des paramètres limités
field_nameY
datatypeY
is_primaryY
max_lengthY
element_typeY
max_capacityY
dimY
is_partition_keyN
Méthode / ParamètrePris en charge dans Milvus Lite
search()Prise en charge avec des paramètres limités
collection_nameY
dataY
filterY
limitY
output_fieldsY
search_paramsY
timeoutY
partition_namesN
anns_fieldY
query()Prise en charge de paramètres limités
collection_nameY
filterY
output_fieldsY
timeoutY
idsY
partition_namesN
get()Prise en charge avec des paramètres limités
collection_nameY
idsY
output_fieldsY
timeoutY
partition_namesN
supprimer()Prise en charge avec des paramètres limités
collection_nameY
idsY
timeoutY
filterY
partition_nameN
insert()Prise en charge avec des paramètres limités
collection_nameY
dataY
timeoutY
partition_nameN
upsert()Prise en charge avec des paramètres limités
collection_nameY
dataY
timeoutY
partition_nameN

Chargement et libération

Méthode / ParamètrePris en charge dans Milvus Lite
load_collection()Y
collection_nameY
timeoutY
release_collection()Y
collection_nameY
timeoutY
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ètrePris en charge dans Milvus Lite
list_indexes()L'énumération des index est prise en charge.
collection_nameY
field_nameY
create_index()Prend en charge uniquement le type d'index FLAT.
index_paramsY
timeoutY
drop_index()La suppression d'index est prise en charge.
collection_nameY
index_nameY
timeoutY
describe_index()La description des index est prise en charge.
collection_nameY
index_nameY
timeoutY

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 extrait 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 :

Traduit parDeepLogo

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Cette page a-t - elle été utile ?