Open In Colab GitHub Repository

Эффективная загрузка данных в Milvus с помощью VectorETL

В этом руководстве мы рассмотрим, как эффективно загружать данные в Milvus с помощью VectorETL, легкого ETL-фреймворка, разработанного для векторных баз данных. VectorETL упрощает процесс извлечения данных из различных источников, преобразования их в векторные вкрапления с помощью моделей искусственного интеллекта и хранения в Milvus для быстрого и масштабируемого извлечения. К концу этого урока вы получите рабочий ETL-конвейер, который позволит вам с легкостью интегрировать и управлять системами векторного поиска. Давайте погрузимся!

Подготовка

Зависимости и окружение

$ pip install --upgrade vector-etl pymilvus

Если вы используете Google Colab, для включения только что установленных зависимостей вам может потребоваться перезапустить среду выполнения (нажмите на меню "Runtime" в верхней части экрана и выберите "Restart session" из выпадающего меню).

VectorETL поддерживает множество источников данных, включая Amazon S3, Google Cloud Storage, Local File и т. д. С полным списком поддерживаемых источников вы можете ознакомиться здесь. В этом руководстве мы рассмотрим Amazon S3 в качестве примера источника данных.

Мы будем загружать документы из Amazon S3. Поэтому вам необходимо подготовить AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY в качестве переменных окружения для безопасного доступа к вашему ведру S3. Кроме того, мы будем использовать модель встраивания OpenAI text-embedding-ada-002 для генерации вкраплений для данных. Также необходимо подготовить api ключ OPENAI_API_KEY в качестве переменной окружения.

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"

Рабочий процесс

Определение источника данных (Amazon S3)

В данном случае мы извлекаем документы из ведра Amazon S3. VectorETL позволяет нам указать имя ведра, путь к файлам и тип данных, с которыми мы работаем.

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"],
}

Настройка модели встраивания (OpenAI)

После того как мы настроили источник данных, нам нужно определить модель встраивания, которая будет преобразовывать наши текстовые данные в векторные вкрапления. В данном примере мы используем модель OpenAI text-embedding-ada-002.

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

Настройка Milvus в качестве целевой базы данных

Нам нужно хранить сгенерированные эмбеддинги в Milvus. Здесь мы определяем параметры подключения к Milvus с помощью 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
}

Для файлов host и api_key:

  • Задать host в качестве локального файла, например./milvus.db, и оставить api_key пустым - самый удобный метод, так как он автоматически использует Milvus Lite для хранения всех данных в этом файле.

  • Если у вас большой объем данных, вы можете настроить более производительный сервер Milvus на docker или kubernetes. В этом случае используйте uri сервера, например,http://localhost:19530, в качестве host и оставьте api_key пустым.

  • Если вы хотите использовать Zilliz Cloud, полностью управляемый облачный сервис для Milvus, настройте host и api_key, которые соответствуют публичной конечной точке и ключу Api в Zilliz Cloud.

Указание столбцов для встраивания

Теперь нам нужно указать, какие столбцы из наших CSV-файлов должны быть преобразованы во встраиваемые данные. Это гарантирует, что будут обработаны только соответствующие текстовые поля, что оптимизирует эффективность и хранение данных.

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

Создание и выполнение конвейера VectorETL

Теперь, когда все настройки выполнены, мы инициализируем ETL-конвейер, настроим поток данных и выполним его.

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

Следуя этому руководству, мы успешно создали сквозной ETL-конвейер для перемещения документов из Amazon S3 в Milvus с помощью VectorETL. VectorETL отличается гибкостью в выборе источников данных, поэтому вы можете выбирать любые источники данных, исходя из конкретных потребностей вашего приложения. Благодаря модульному дизайну VectorETL вы можете легко расширить этот конвейер для поддержки других источников данных, встраивания моделей, что делает его мощным инструментом для ИИ и инженерных процессов обработки данных!

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?