Azure OpenAICompatible with Milvus 2.6.x

Cette rubrique décrit comment configurer et utiliser les fonctions d'intégration Azure OpenAI dans Milvus.

Choisir un modèle d'intégration

Milvus prend en charge tous les modèles d'intégration fournis par Azure OpenAI. Vous trouverez ci-dessous les modèles d'intégration Azure OpenAI actuellement disponibles pour une référence rapide :

Modèle

Dimensions

Jetons max.

Description du modèle

text-embedding-3-small

Valeur par défaut : 1 536 (tronçonnable à une dimension inférieure à 1536)

8,191

Idéal pour la recherche sémantique évolutive et sensible aux coûts - offre d'excellentes performances à un prix inférieur.

text-embedding-3-large

Défaut : 3 072 (peut être tronqué à une dimension inférieure à 3072)

8,191

Idéal pour les applications exigeant une meilleure précision de recherche et des représentations sémantiques plus riches.

insertion de texte-ada-002

Fixe : 1 536 (ne supporte pas la troncature)

8,191

Modèle de génération précédente adapté aux pipelines existants ou aux scénarios nécessitant une compatibilité ascendante.

Les modèles d'intégration de troisième génération(text-embedding-3) permettent de réduire la taille de l'intégration via un paramètre dim. En règle générale, les encapsulations de grande taille sont plus coûteuses en termes de calcul, de mémoire et de stockage. La possibilité d'ajuster le nombre de dimensions permet de mieux contrôler le coût global et les performances. Pour plus de détails sur chaque modèle, reportez-vous à Embeddings.

Configurer les informations d'identification

Milvus doit connaître votre clé API Azure OpenAI avant de pouvoir demander des embeddings. Milvus propose deux méthodes pour configurer les informations d'identification :

  • Fichier de configuration (recommandé) : Stockez la clé API à l'adresse milvus.yaml pour que chaque redémarrage et nœud la récupère automatiquement.

  • Variables d'environnement : Injecter la clé au moment du déploiement - idéal pour Docker Compose.

Choisissez l'une des deux méthodes ci-dessous : le fichier de configuration est plus facile à maintenir sur les machines nues et les machines virtuelles, tandis que la méthode des variables d'environnement convient aux flux de travail des conteneurs.

Si une clé API pour le même fournisseur est présente à la fois dans le fichier de configuration et dans une variable d'environnement, Milvus utilise toujours la valeur dans milvus.yaml et ignore la variable d'environnement.

Conservez vos clés API dans milvus.yaml; Milvus les lit au démarrage et remplace toute variable d'environnement pour le même fournisseur.

  1. **Déclarez vos clés sous credential:

    Vous pouvez lister une ou plusieurs clés API - donnez à chacune une étiquette que vous inventez et à laquelle vous ferez référence plus tard.

    # milvus.yaml
    credential:
      apikey_dev:            # dev environment
        apikey: <YOUR_DEV_KEY>
      apikey_prod:           # production environment
        apikey: <YOUR_PROD_KEY>    
    

    Le fait de placer les clés d'API ici les rend persistantes lors des redémarrages et vous permet de changer de clé en changeant simplement d'étiquette.

  2. Indiquer à Milvus la clé à utiliser pour les appels Azure OpenAI

    Dans le même fichier, indiquez au fournisseur Azure OpenAI l'étiquette que vous souhaitez qu'il utilise.

    function:
      textEmbedding:
        providers:
          azure_openai:
            credential: apikey_dev      # ← choose any label you defined above
            resource_name:  # Your azure openai resource name
            # url: # Your azure openai embedding url
    

    Cela lie une clé spécifique à chaque demande que Milvus envoie au point de terminaison Azure OpenAI embeddings.

Option 2 : Variables d'environnement

Utilisez cette méthode lorsque vous exécutez Milvus avec Docker Compose et que vous préférez garder les secrets hors des fichiers et des images.

Milvus se rabat sur la variable d'environnement uniquement si aucune clé pour le fournisseur n'est trouvée dans milvus.yaml.

Variable

Obligatoire

Description de la variable

MILVUSAI_AZURE_OPENAI_API_KEY

Oui

Rend la clé Azure OpenAI disponible dans chaque conteneur Milvus (ignorée lorsqu'une clé pour Azure OpenAI existe sur milvus.yaml ).

MILVUSAI_AZURE_OPENAI_RESOURCE_NAME

Oui

Nom de votre ressource Azure OpenAI tel que défini lors de la création de votre ressource de service Azure OpenAI.

Dans votre fichier docker-compose.yaml, définissez les variables d'environnement.

# docker-compose.yaml (standalone service section)
standalone:
  # ... other configurations ...
  environment:
    # ... other environment variables ...
    # Set the environment variable pointing to the Azure OpenAI API key inside the container
    MILVUSAI_AZURE_OPENAI_API_KEY: <MILVUSAI_AZURE_OPENAI_API_KEY>
    MILVUSAI_AZURE_OPENAI_RESOURCE_NAME: <MILVUSAI_AZURE_OPENAI_RESOURCE_NAME>

Le bloc environment: injecte la clé uniquement dans le conteneur Milvus, laissant votre système d'exploitation hôte intact. Pour plus de détails, voir Configurer Milvus avec Docker Compose.

Utiliser la fonction d'intégration

Une fois les informations d'identification configurées, suivez ces étapes pour définir et utiliser les fonctions d'intégration.

Étape 1 : Définir les champs du schéma

Pour utiliser une fonction d'intégration, créez une collection avec un schéma spécifique. Ce schéma doit comprendre au moins trois champs nécessaires :

  • Le champ primaire qui identifie de manière unique chaque entité d'une collection.

  • Un champ scalaire qui stocke les données brutes à intégrer.

  • Un champ vectoriel réservé au stockage des intégrations vectorielles que la fonction générera pour le champ scalaire.

L'exemple suivant définit un schéma avec un champ scalaire "document" pour stocker les données textuelles et un champ vectoriel "dense" pour stocker les embeddings qui seront générés par le module Function. N'oubliez pas de définir la dimension du vecteur (dim) pour qu'elle corresponde à la sortie du modèle d'intégration que vous avez choisi.

from pymilvus import MilvusClient, DataType, Function, FunctionType

# Initialize Milvus client
client = MilvusClient(
    uri="http://localhost:19530",
)

# Create a new schema for the collection
schema = client.create_schema()

# Add primary field "id"
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)

# Add scalar field "document" for storing textual data
schema.add_field("document", DataType.VARCHAR, max_length=9000)

# Add vector field "dense" for storing embeddings.
# IMPORTANT: Set dim to match the exact output dimension of the embedding model.
schema.add_field("dense", DataType.FLOAT_VECTOR, dim=1536)

Étape 2 : ajouter la fonction d'intégration au schéma

Une fois que vous avez défini votre fonction d'intégration, ajoutez-la au schéma de votre collection. Cela indique à Milvus d'utiliser la fonction d'intégration spécifiée pour traiter et stocker les intégrations à partir de vos données textuelles.

# Define embedding function specifically for Azure OpenAI provider
text_embedding_function = Function(
    name="azopenai",                                # Unique identifier for this embedding function
    function_type=FunctionType.TEXTEMBEDDING,       # Indicates a text embedding function
    input_field_names=["document"],                 # Scalar field(s) containing text data to embed
    output_field_names=["dense"],                   # Vector field(s) for storing embeddings
    params={                                        # Provider-specific embedding parameters
        "provider": "azure_openai",                 # Embedding provider name (must be "azure_openai")
        "model_name": "zilliz-text-embedding-3-small",      # Model should be set to the deployment name you chose when you deployed the embedding model
        # Optional parameters (only specify if necessary):
        # "url": "https://{resource_name}.openai.azure.com/" # Optional: Your Azure OpenAI service endpoint
        # "credential": "apikey_dev",               # Optional: Credential label specified in milvus.yaml
        # "dim": "1536",                            # Optional: Shorten the output vector dimension
        # "user": "user123",                        # Optional: identifier for API tracking
    }
)

# Add the configured embedding function to your existing collection schema
schema.add_function(text_embedding_function)

Etapes suivantes

Après avoir configuré la fonction d'incorporation, reportez-vous à la vue d'ensemble de la fonction pour obtenir des conseils supplémentaires sur la configuration de l'index, des exemples d'insertion de données et des opérations de recherche sémantique.

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 ?