Milvus
Zilliz
Home
  • Integrationen
  • Home
  • Docs
  • Integrationen

  • Datenquellen

  • VectorETL

Open In Colab GitHub Repository

Effizientes Laden von Daten in Milvus mit VectorETL

In diesem Tutorial erfahren Sie, wie Sie mit VectorETL, einem leichtgewichtigen ETL-Framework für Vektordatenbanken, effizient Daten in Milvus laden können. VectorETL vereinfacht den Prozess der Extraktion von Daten aus verschiedenen Quellen, die Umwandlung in Vektoreinbettungen mit Hilfe von KI-Modellen und die Speicherung in Milvus für einen schnellen und skalierbaren Abruf. Am Ende dieses Tutorials werden Sie über eine funktionierende ETL-Pipeline verfügen, mit der Sie Vektorsuchsysteme problemlos integrieren und verwalten können. Los geht's!

Vorbereitung

Abhängigkeiten und Umgebung

$ pip install --upgrade vector-etl pymilvus

Wenn Sie Google Colab verwenden, müssen Sie möglicherweise die Runtime neu starten, um die soeben installierten Abhängigkeiten zu aktivieren (klicken Sie auf das Menü "Runtime" am oberen Bildschirmrand und wählen Sie "Restart session" aus dem Dropdown-Menü).

VectorETL unterstützt mehrere Datenquellen, einschließlich Amazon S3, Google Cloud Storage, Local File, etc. Sie können die vollständige Liste der unterstützten Quellen hier einsehen. In diesem Tutorial konzentrieren wir uns auf Amazon S3 als Beispiel für eine Datenquelle.

Wir werden Dokumente aus Amazon S3 laden. Daher müssen Sie AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY als Umgebungsvariablen vorbereiten, um sicher auf Ihr S3-Bucket zugreifen zu können. Außerdem werden wir das text-embedding-ada-002 Einbettungsmodell von OpenAI verwenden, um Einbettungen für die Daten zu generieren. Sie sollten auch den Api-Schlüssel OPENAI_API_KEY als Umgebungsvariable vorbereiten.

import os

os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
os.environ["AWS_ACCESS_KEY_ID"] = "your-aws-access-key-id"
os.environ["AWS_SECRET_ACCESS_KEY"] = "your-aws-secret-access-key"

Arbeitsablauf

Definieren der Datenquelle (Amazon S3)

In diesem Fall extrahieren wir Dokumente aus einem Amazon S3-Bucket. VectorETL ermöglicht es uns, den Bucket-Namen, den Pfad zu den Dateien und die Art der Daten, mit denen wir arbeiten, anzugeben.

source = {
    "source_data_type": "Amazon S3",
    "bucket_name": "my-bucket",
    "key": "path/to/files/",
    "file_type": ".csv",
    "aws_access_key_id": os.environ["AWS_ACCESS_KEY_ID"],
    "aws_secret_access_key": os.environ["AWS_SECRET_ACCESS_KEY"],
}

Konfigurieren des Einbettungsmodells (OpenAI)

Sobald wir unsere Datenquelle eingerichtet haben, müssen wir das Einbettungsmodell definieren, das unsere Textdaten in Vektoreinbettungen umwandeln wird. In diesem Beispiel verwenden wir OpenAIs text-embedding-ada-002.

embedding = {
    "embedding_model": "OpenAI",
    "api_key": os.environ["OPENAI_API_KEY"],
    "model_name": "text-embedding-ada-002",
}

Einrichten von Milvus als Zieldatenbank

Wir müssen die generierten Einbettungen in Milvus speichern. Hier definieren wir unsere Milvus-Verbindungsparameter mit Milvus Lite.

target = {
    "target_database": "Milvus",
    "host": "./milvus.db",  # os.environ["ZILLIZ_CLOUD_PUBLIC_ENDPOINT"] if using Zilliz Cloud
    "api_key": "",  # os.environ["ZILLIZ_CLOUD_TOKEN"] if using Zilliz Cloud
    "collection_name": "my_collection",
    "vector_dim": 1536,  # 1536 for text-embedding-ada-002
}

Für die host und api_key:

  • Die host als lokale Datei zu definieren, z.B../milvus.db, und api_key leer zu lassen, ist die bequemste Methode, da sie automatisch Milvus Lite nutzt, um alle Daten in dieser Datei zu speichern.

  • Wenn Sie große Datenmengen haben, können Sie einen leistungsfähigeren Milvus-Server auf Docker oder Kubernetes einrichten. Bei dieser Einrichtung verwenden Sie bitte die Server-URI, z. B.http://localhost:19530, als host und lassen api_key leer.

  • Wenn Sie Zilliz Cloud, den vollständig verwalteten Cloud-Service für Milvus, verwenden möchten, passen Sie host und api_key an, die dem öffentlichen Endpunkt und dem Api-Schlüssel in Zilliz Cloud entsprechen.

Spalten für die Einbettung festlegen

Nun müssen wir angeben, welche Spalten aus unseren CSV-Dateien in Einbettungen umgewandelt werden sollen. Dadurch wird sichergestellt, dass nur die relevanten Textfelder verarbeitet werden, wodurch sowohl die Effizienz als auch die Speicherung optimiert werden.

embed_columns = ["col_1", "col_2", "col_3"]

Erstellen und Ausführen der VectorETL-Pipeline

Nachdem alle Konfigurationen vorgenommen wurden, können wir nun die ETL-Pipeline initialisieren, den Datenfluss einrichten und ausführen.

from vector_etl import create_flow

flow = create_flow()
flow.set_source(source)
flow.set_embedding(embedding)
flow.set_target(target)
flow.set_embed_columns(embed_columns)

# Execute the flow
flow.execute()

Mit Hilfe dieses Tutorials haben wir erfolgreich eine End-to-End-ETL-Pipeline erstellt, um Dokumente von Amazon S3 zu Milvus zu verschieben, indem wir VectorETL verwenden. VectorETL ist flexibel in Bezug auf Datenquellen, so dass Sie jede beliebige Datenquelle wählen können, die Sie für Ihre spezifischen Anwendungsanforderungen benötigen. Mit dem modularen Design von VectorETL können Sie diese Pipeline leicht erweitern, um andere Datenquellen zu unterstützen und Modelle einzubetten, was sie zu einem leistungsstarken Werkzeug für KI- und Data-Engineering-Workflows macht!

Try Managed Milvus for Free

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

Get Started
Feedback

War diese Seite hilfreich?