Open In Colab GitHub Repository

使用 VectorETL 有效率地將資料載入 Milvus

在本教程中,我們將探討如何使用VectorETL(一個專為向量資料庫設計的輕量級 ETL 框架)將資料有效地載入 Milvus。VectorETL 簡化了從各種來源擷取資料的流程,使用 AI 模型將資料轉換成向量嵌入,並儲存在 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_IDAWS_SECRET_ACCESS_KEY 作為環境變數,以安全存取您的 S3 資料桶。此外,我們會使用 OpenAI 的text-embedding-ada-002 embedding model 來產生資料的 embeddings。您也應該準備api key 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 Lite 定義 Milvus 連線參數。

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
}

對於hostapi_key

  • host 設定為本機檔案,例如./milvus.db ,並將api_key 留空是最方便的方法,因為它會自動利用Milvus Lite將所有資料存入這個檔案。

  • 如果您有大規模的資料,您可以在docker 或 kubernetes 上架設效能更高的 Milvus 伺服器。在此設定中,請使用伺服器的 uri,例如http://localhost:19530 ,作為您的host ,並將api_key 留空。

  • 如果您要使用Zilliz Cloud(Milvus 的完全管理雲端服務),請調整hostapi_key ,它們對應於 Zilliz Cloud 的Public Endpoint 和 Api key

指定要嵌入的欄位

現在,我們需要指定 CSV 檔案中哪些欄位應該轉換為嵌入內容。這可確保只處理相關的文字欄位,優化效率與儲存。

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

建立並執行 VectorETL Pipeline

所有配置都就緒後,我們現在初始化 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 管道,使用 VectorETL 將文件從 Amazon S3 移到 Milvus。VectorETL 在資料來源方面非常靈活,您可以根據您特定的應用程式需求,選擇任何您喜歡的資料來源。透過 VectorETL 的模組化設計,您可以輕鬆擴充此管道,以支援其他資料來源、嵌入模型,使其成為 AI 和資料工程工作流程的強大工具!

免費嘗試托管的 Milvus

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?