Premiers pas avec une connexion Milvus

Nov 25, 20233 min read

Milvus est une base de données vectorielle open-source pour créer des applications d’IA avec des embeddings de données non structurées. Elle intègre tout ce dont vous avez besoin pour démarrer, et s’exécute sur votre machine locale ou hébergée dans Zilliz Cloud (voir le notebook se connecter à Zilliz Free Tier).

Milvus dispose de quatre SDK : Java, Python, React, et Ruby. Ci-dessous, nous montrerons les étapes pour Python.

  1. Installer et démarrer un serveur Milvus

pip install milvus pymilvus #pymilvus is the python sdk

from milvus import default_server
default_server.start()

Remarque : Si vous vous connectez à Zilliz, vous pouvez ignorer l’installation de Milvus et démarrer le cluster depuis la console à la place.

  1. Obtenir le client Milvus (connexion)

from pymilvus import connections

connections.connect(
   host=’127.0.0.1’,
   port=default_server.listen_port)

Remarque : Pour vous connecter à Milvus sans serveur exécuté sur Zilliz Cloud au lieu de localhost, vous devez obtenir l’URI du point de terminaison et le jeton depuis la console.

from pymilvus import connections

ENDPOINT=”https://endpoint.api.region.zillizcloud.com:443”
connections.connect(
   uri=ENDPOINT,
   token=TOKEN)
  1. Créer une collection

Vous pouvez considérer une collection comme une table de base de données. C’est là que vous stockerez vos embeddings, documents et toute métadonnée supplémentaire.

Une collection est associée à un schéma et à un index.

L’index est construit à l’aide d’un algorithme de recherche vectorielle et d’une métrique de similarité vectorielle. Vous pouvez utiliser les valeurs par défaut de Milvus. Toutefois, pour des performances optimales, vous devriez configurer les paramètres. Le choix de l’index de recherche et des paramètres dépend de vos données. Consultez ce guide de bonnes pratiques pour choisir un index de recherche. Ce notebook montre comment modifier les paramètres.

from pymilvus import (
   FieldSchema, DataType, 
   CollectionSchema, Collection)

## 1. Define a minimum expandable schema.
fields = [
   FieldSchema(“pk”, DataType.INT64, is_primary=True, auto_id=True),
   FieldSchema(“vector”, DataType.FLOAT_VECTOR, dim=768),
]
schema = CollectionSchema(
   fields,
   enable_dynamic_field=True,
)

## 2. Create a collection.
mc = Collection(“my_collection_name”, schema)

## 3. Index the collection.
mc.create_index(
   field_name=”vector”,
   index_params={
       “Index_type”: “AUTOINDEX”,
       “Metric_type”: “COSINE”,
       }
  1. Insérer des données dans Milvus

Si vous avez déjà généré des embeddings à partir de vos données non structurées, vous pouvez les charger.

Les données d’entrée peuvent prendre la forme d’un dataframe pandas ou d’une liste de dictionnaires. Elles doivent contenir un embedding vectoriel. Les champs restants sont facultatifs : fragment de texte original et champs de métadonnées.

from pymilvus import connections

## 1. Input data can be pandas dataframe or list of dicts.
data_rows = []
data_rows.extend([
   {“vector”: np.random.randn(768).tolist(),
    “text”: “This is a document”,
    “source”: “source_url_1”},
   {“vector”: np.random.randn(768).tolist(),
    “text”: “This is another document”,
    “source”: “source_url_2”},
])

## 2. Insert data into milvus.
mc.insert(data_rows)
mc.flush()
  1. Interroger la collection

Les questions doivent être transformées en embeddings à l’aide du même modèle que celui utilisé pour vectoriser les données non structurées chargées dans la base de données. Vous pouvez interroger la collection en utilisant les embeddings des questions avec les paramètres de recherche par défaut de Milvus. Les mêmes bonnes pratiques s’appliquent au choix du bon index de recherche pour des performances optimales.

Ci-dessous, Milvus renverra les top_k = 3 résultats les plus similaires. Notez également que le segment de texte original et les métadonnées sont renvoyés, ce qui peut aider à l’ancrage (fonder le texte généré sur des informations factuelles afin de réduire les hallucinations).

## 1. Search for answers to your embedded questions.
mc.load()
results = mc.search(
   data=encoder([“my_question_1”]),
   anns_field=”vector”,
   output_fields-[“text”, “source”], #optional return fields
   limit=3,
   param={}, #no params if using milvus defaults
)

## 2. View the answers.
for n, hits in enumerate(results):
   print(f”{n}th result:”)
   for hit in hits:
      print(hit)

Dans mon prochain blog, je vous expliquerai comment créer un chatbot avec LangChain et Milvus. Restez à l’écoute.

Plus de ressources pour démarrer avec Milvus et Zilliz

Mis à jour le Jul 09, 2026