Azure OpenAICompatible with Milvus 2.6.x

Dieses Thema beschreibt, wie Sie Azure OpenAI Einbettungsfunktionen in Milvus konfigurieren und verwenden.

Wählen Sie ein Einbettungsmodell

Milvus unterstützt alle Einbettungsmodelle, die von Azure OpenAI bereitgestellt werden. Nachfolgend finden Sie die derzeit verfügbaren Azure OpenAI Einbettungsmodelle zur schnellen Orientierung:

Modell

Abmessungen

Maximale Token

Beschreibung

text-einbettung-3-klein

Standardwert: 1.536 (abschneidbar auf eine Größe unter 1536)

8,191

Ideal für kostenbewusste und skalierbare semantische Suche - bietet starke Leistung zu einem niedrigeren Preis.

text-einbettung-3-groß

Standard: 3.072 (abschneidbar auf eine Dimensionsgröße unter 3072)

8,191

Am besten geeignet für Anwendungen, die eine höhere Abrufgenauigkeit und umfangreichere semantische Darstellungen erfordern.

text-einbettung-ada-002

Festgelegt: 1.536 (unterstützt keine Trunkierung)

8,191

Ein Modell der vorherigen Generation, das sich für ältere Pipelines oder Szenarien eignet, die Abwärtskompatibilität erfordern.

Die Einbettungsmodelle der dritten Generation(text-embedding-3) unterstützen die Verringerung der Größe der Einbettung über einen dim Parameter. In der Regel sind größere Einbettungen aus Sicht der Rechenleistung, des Speichers und der Speicherung teurer. Die Möglichkeit, die Anzahl der Dimensionen anzupassen, ermöglicht eine bessere Kontrolle über die Gesamtkosten und die Leistung. Weitere Einzelheiten zu den einzelnen Modellen finden Sie unter Einbettungen.

Konfigurieren der Anmeldeinformationen

Milvus muss Ihren Azure OpenAI API-Schlüssel kennen, bevor es Embeddings anfordern kann. Milvus bietet zwei Methoden zur Konfiguration von Anmeldeinformationen:

  • Konfigurationsdatei (empfohlen): Speichern Sie den API-Schlüssel in milvus.yaml, damit er bei jedem Neustart und Knoten automatisch übernommen wird.

  • Umgebungsvariablen: Injizieren Sie den Schlüssel zum Zeitpunkt der Bereitstellung - ideal für Docker Compose.

Entscheiden Sie sich für eine der beiden Methoden: Die Konfigurationsdatei ist auf Bare-Metal- und VM-Systemen einfacher zu verwalten, während die Umgebungsvariablen-Route für Container-Workflows geeignet ist.

Wenn ein API-Schlüssel für denselben Anbieter sowohl in der Konfigurationsdatei als auch in einer Umgebungsvariablen vorhanden ist, verwendet Milvus immer den Wert in milvus.yaml und ignoriert die Umgebungsvariable.

Bewahren Sie Ihre API-Schlüssel in milvus.yaml auf; Milvus liest sie beim Start und setzt jede Umgebungsvariable für denselben Anbieter außer Kraft.

  1. **Deklarieren Sie Ihre Schlüssel unter credential:

    Sie können einen oder mehrere API-Schlüssel auflisten - geben Sie jedem einen Namen, den Sie erfinden und später referenzieren werden.

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

    Wenn Sie die API-Schlüssel hier angeben, bleiben sie über Neustarts hinweg bestehen und Sie können die Schlüssel einfach durch Ändern einer Bezeichnung wechseln.

  2. Teilen Sie Milvus mit, welchen Schlüssel es für Azure OpenAI-Aufrufe verwenden soll

    In derselben Datei weisen Sie dem Azure OpenAI-Anbieter das Label zu, das er verwenden soll.

    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
    

    Dies bindet einen bestimmten Schlüssel an jede Anfrage, die Milvus an den Azure OpenAI Embeddings Endpunkt sendet.

Option 2: Umgebungsvariablen

Verwenden Sie diese Methode, wenn Sie Milvus mit Docker Compose ausführen und es vorziehen, Geheimnisse aus Dateien und Images herauszuhalten.

Milvus greift nur dann auf die Umgebungsvariable zurück, wenn unter milvus.yaml kein Schlüssel für den Anbieter gefunden wird.

Variable

Erforderlich

Beschreibung

MILVUSAI_AZURE_OPENAI_API_KEY

Ja

Macht den Azure OpenAI-Schlüssel in jedem Milvus-Container verfügbar (wird ignoriert, wenn ein Schlüssel für Azure OpenAI in milvus.yaml existiert)

MILVUSAI_AZURE_OPENAI_RESOURCE_NAME

Ja

Ihr Azure OpenAI Ressourcenname, wie er bei der Erstellung Ihrer Azure OpenAI Service Ressource definiert wurde.

Setzen Sie die Umgebungsvariablen in Ihrer Datei docker-compose.yaml.

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

Der environment: -Block injiziert den Schlüssel nur in den Milvus-Container und lässt Ihr Host-Betriebssystem unberührt. Einzelheiten finden Sie unter Konfigurieren von Milvus mit Docker Compose.

Einbettungsfunktion verwenden

Sobald die Anmeldeinformationen konfiguriert sind, folgen Sie diesen Schritten, um Einbettungsfunktionen zu definieren und zu verwenden.

Schritt 1: Definieren Sie Schemafelder

Um eine Einbettungsfunktion zu verwenden, erstellen Sie eine Sammlung mit einem bestimmten Schema. Dieses Schema muss mindestens drei notwendige Felder enthalten:

  • Das Primärfeld, das jede Entität in einer Sammlung eindeutig identifiziert.

  • Ein Skalarfeld, das die einzubettenden Rohdaten speichert.

  • Ein Vektorfeld, das für die Speicherung von Vektoreinbettungen reserviert ist, die die Funktion für das Skalarfeld erzeugen wird.

Das folgende Beispiel definiert ein Schema mit einem Skalarfeld "document" zum Speichern von Textdaten und einem Vektorfeld "dense" zum Speichern von Einbettungen, die vom Funktionsmodul erzeugt werden. Denken Sie daran, die Vektordimension (dim) so einzustellen, dass sie der Ausgabe des von Ihnen gewählten Einbettungsmodells entspricht.

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)

Schritt 2: Einbettungsfunktion zum Schema hinzufügen

Sobald Sie Ihre Einbettungsfunktion definiert haben, fügen Sie sie zu Ihrem Sammelschema hinzu. Dies weist Milvus an, die angegebene Einbettungsfunktion zu verwenden, um Einbettungen aus Ihren Textdaten zu verarbeiten und zu speichern.

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

Nächste Schritte

Nachdem Sie die Einbettungsfunktion konfiguriert haben, finden Sie in der Funktionsübersicht weitere Anleitungen zur Indexkonfiguration, Beispiele für das Einfügen von Daten und semantische Suchvorgänge.

Try Managed Milvus for Free

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

Get Started
Feedback

War diese Seite hilfreich?