BedrockCompatible with Milvus 2.6.x

Dieses Thema beschreibt, wie Sie die Amazon Bedrock Einbettungsfunktionen in Milvus konfigurieren und verwenden.

Wählen Sie ein Einbettungsmodell

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

Modell Name

Abmessungen

Max. Token

Beschreibung

amazon.titan-einbetten-text-v2:0

1.024 (Standard), 512, 256

8,192

RAG, Dokumentensuche, Reranking, Klassifizierung, etc.

Einzelheiten finden Sie unter Amazon Titan Text Embeddings models.

Anmeldeinformationen konfigurieren

Milvus muss Ihre Bedrock-Zugangsdaten kennen, bevor es Einbettungen anfordern kann. Milvus bietet zwei Methoden zur Konfiguration von Anmeldeinformationen:

  • Konfigurationsdatei (empfohlen): Speichern Sie die Zugangsdaten in milvus.yaml, damit sie bei jedem Neustart und jedem Knoten automatisch übernommen werden.

  • Umgebungsvariablen: Injizieren Sie die Anmeldeinformationen 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 für Container-Workflows geeignet sind.

Wenn ein Credential für denselben Provider 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 Anmeldedaten in milvus.yaml auf; Milvus liest sie beim Start und setzt jede Umgebungsvariable für denselben Anbieter außer Kraft.

  1. **Deklarieren Sie Ihre Anmeldedaten unter credential:

    Sie können einen oder mehrere Berechtigungsnachweise auflisten - geben Sie jedem einen Namen, den Sie erfinden und auf den Sie später verweisen werden.

    # milvus.yaml
    credential:
      aksk_dev:            # dev environment
        access_key_id: <YOUR_DEV_ACCESS_KEY_ID>
        secret_access_key: <YOUR_DEV_SECRET_ACCESS_KEY>
      aksk_prod:           # production environment
        access_key_id: <YOUR_PROD_ACCESS_KEY_ID>    
        secret_access_key: <YOUR_PROD_SECRET_ACCESS_KEY>
    

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

  2. Teilen Sie Milvus mit, welche Berechtigungsnachweise für Serviceaufrufe verwendet werden sollen

    In derselben Datei verweisen Sie den Bedrock-Anbieter auf das Label, das er verwenden soll.

    function:
      textEmbedding:
        providers:
          bedrock:
            credential: aksk_dev      # ← choose any label you defined above
    

    Dies bindet einen bestimmten Berechtigungsnachweis an jede Anfrage, die Milvus an den Bedrock-Einbettungsdienst sendet.

Option 2: Umgebungsvariable

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

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

Variable

Erforderlich

Beschreibung

MILVUSAI_BEDROCK_ACCESS_KEY_ID

Ja

Ihre AWS-Zugangsschlüssel-ID, die für die Authentifizierung mit dem Bedrock-Service verwendet wird.

MILVUSAI_BEDROCK_SECRET_ACCESS_KEY

Ja

Ihr geheimer AWS-Zugangsschlüssel, der Ihrer Zugangsschlüssel-ID entspricht.

Setzen Sie in Ihrer Datei docker-compose.yaml die Umgebungsvariable MILVUSAI_OPENAI_API_KEY.

# docker-compose.yaml (standalone service section)
standalone:
  # ... other configurations ...
  environment:
    # ... other environment variables ...
    # Set the environment variable pointing to the Bedrock embedding service inside the container
    MILVUSAI_BEDROCK_ACCESS_KEY_ID: <MILVUSAI_BEDROCK_ACCESS_KEY_ID>
    MILVUSAI_BEDROCK_SECRET_ACCESS_KEY: <MILVUSAI_BEDROCK_SECRET_ACCESS_KEY>

Der Block environment: injiziert den Schlüssel nur in den Milvus-Container und lässt Ihr Host-Betriebssystem unberührt. Weitere Informationen 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=1024)

Schritt 2: Funktion zum Schema hinzufügen

Das Function-Modul in Milvus wandelt Rohdaten, die in einem Skalarfeld gespeichert sind, automatisch in Einbettungen um und speichert sie in dem explizit definierten Vektorfeld.

Das folgende Beispiel fügt ein Funktionsmodul (bedrk) hinzu, das das Skalarfeld "document" in Einbettungen umwandelt und die resultierenden Vektoren in dem zuvor definierten Vektorfeld "dense" speichert.

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 OpenAI provider
text_embedding_function = Function(
    name="bedrk",                                   # 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 (function-level)
        "provider": "bedrock",                      # Must be set to "bedrock"
        "model_name": "amazon.titan-embed-text-v2:0",    # Specifies the embedding model to use
        "region": "us-east-2",                           # Required: AWS region where the Bedrock service is hosted     
        # Optional parameters:
        # "credential": "aksk_dev",               # Optional: Credential label specified in milvus.yaml
        # "dim": "1024",                          # Output dimension of the vector embeddings after truncation
        # "normalize": "true",                    # Whether to normalize the output embeddings
    }
)

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