Milvus
Zilliz
Home
  • Guía del usuario
  • Home
  • Docs
  • Guía del usuario

  • Embeddings y reordenación

  • Función de incrustación

  • Azure OpenAI

Azure OpenAICompatible with Milvus 2.6.x

Este tema describe cómo configurar y utilizar las funciones de incrustación de Azure OpenAI en Milvus.

Elija un modelo de incrustación

Milvus es compatible con todos los modelos de incrustación proporcionados por Azure OpenAI. A continuación se muestran los modelos de incrustación de Azure OpenAI disponibles actualmente para una referencia rápida:

Modelo

Dimensiones

Tokens máximos

Descripción

text-embedding-3-pequeño

Predeterminado: 1.536 (truncable a un tamaño inferior a 1536)

8,191

Ideal para búsquedas semánticas escalables y sensibles a los costes: ofrece un gran rendimiento a un precio reducido.

text-embedding-3-large

Predeterminado: 3.072 (truncable a un tamaño inferior a 3.072)

8,191

Ideal para aplicaciones que exigen una mayor precisión en la recuperación y representaciones semánticas más ricas.

incrustación de texto-ada-002

Fijo: 1.536 (no admite truncamiento)

8,191

Un modelo de la generación anterior adecuado para cadenas de producción heredadas o escenarios que requieran compatibilidad con versiones anteriores.

Los modelos de incrustación de tercera generación(text-embedding-3) permiten reducir el tamaño de la incrustación mediante un parámetro dim. Normalmente, las incrustaciones más grandes son más caras desde el punto de vista del cálculo, la memoria y el almacenamiento. La posibilidad de ajustar el número de dimensiones permite un mayor control sobre el coste y el rendimiento globales. Para obtener más información sobre cada modelo, consulte Incrustaciones.

Configurar credenciales

Milvus debe conocer su clave Azure OpenAI API antes de poder solicitar incrustaciones. Milvus proporciona dos métodos para configurar las credenciales:

  • Archivo de configuración (recomendado): Almacena la clave API en milvus.yaml para que cada reinicio y nodo la recoja automáticamente.

  • Variables de entorno: Inyectar la clave en el momento del despliegue, ideal para Docker Compose.

Elija uno de los dos métodos siguientes: el archivo de configuración es más fácil de mantener en máquinas virtuales y máquinas sin infraestructura, mientras que la ruta de las variables de entorno se adapta a los flujos de trabajo de los contenedores.

Si una clave API para el mismo proveedor está presente tanto en el archivo de configuración como en una variable de entorno, Milvus siempre utiliza el valor en milvus.yaml e ignora la variable de entorno.

Mantenga sus claves API en milvus.yaml; Milvus las lee al inicio y anula cualquier variable de entorno para el mismo proveedor.

  1. **Declare sus claves en credential:

    Puedes listar una o muchas claves API - dale a cada una una etiqueta que inventes y a la que harás referencia más tarde.

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

    Poner las claves API aquí las hace persistentes a través de reinicios y le permite cambiar las claves con sólo cambiar una etiqueta.

  2. Dígale a Milvus qué clave utilizar para las llamadas Azure OpenAI

    En el mismo archivo, indique al proveedor de Azure OpenAI la etiqueta que desea que utilice.

    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
    

    Esto vincula una clave específica a cada solicitud que Milvus envía al punto final de incrustación de Azure OpenAI.

Opción 2: Variables de entorno

Utilice este método cuando ejecute Milvus con Docker Compose y prefiera mantener los secretos fuera de los archivos e imágenes.

Milvus recurre a la variable de entorno sólo si no se encuentra ninguna clave para el proveedor en milvus.yaml.

Variable

Requerida

Descripción

MILVUSAI_AZURE_OPENAI_API_KEY

Hace que la clave de Azure OpenAI esté disponible dentro de cada contenedor Milvus (se ignora cuando existe una clave para Azure OpenAI en milvus.yaml )

MILVUSAI_AZURE_OPENAI_RESOURCE_NAME

Su nombre de recurso Azure OpenAI tal y como se definió cuando creó su recurso de servicio Azure OpenAI.

En su archivo docker-compose.yaml, establezca las variables de entorno.

# 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>

El bloque environment: inyecta la clave sólo en el contenedor Milvus, dejando su sistema operativo anfitrión intacto. Para más detalles, consulte Configurar Milvus con Docker Compose.

Utilizar la función de incrustación

Una vez configuradas las credenciales, siga estos pasos para definir y utilizar las funciones de incrustación.

Paso 1: Definir campos de esquema

Para utilizar una función de incrustación, cree una colección con un esquema específico. Este esquema debe incluir al menos tres campos necesarios:

  • El campo primario que identifica de forma única a cada entidad de una colección.

  • Un campo escalar que almacena los datos brutos que se van a incrustar.

  • Un campo vectorial reservado para almacenar las incrustaciones vectoriales que la función generará para el campo escalar.

El siguiente ejemplo define un esquema con un campo escalar "document" para almacenar datos textuales y un campo vectorial "dense" para almacenar las incrustaciones que generará el módulo Función. Recuerde ajustar la dimensión del vector (dim) para que coincida con la salida del modelo de incrustación elegido.

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)

Paso 2: Añadir la función de incrustación al esquema

Una vez que haya definido su función de incrustación, añádala al esquema de su colección. Esto indica a Milvus que utilice la función de incrustación especificada para procesar y almacenar las incrustaciones de sus datos de texto.

# 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)

Pasos siguientes

Después de configurar la función de incrustación, consulte la Descripción general de la función para obtener orientación adicional sobre la configuración del índice, ejemplos de inserción de datos y operaciones de búsqueda semántica.

Try Managed Milvus for Free

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

Get Started
Feedback

¿Fue útil esta página?