BedrockCompatible with Milvus 2.6.x

Topik ini menjelaskan cara mengonfigurasi dan menggunakan fungsi penyematan Amazon Bedrock di Milvus.

Memilih model penyematan

Milvus mendukung model penyematan yang disediakan oleh Amazon Bedrock. Di bawah ini adalah model-model penyematan yang tersedia saat ini untuk referensi cepat:

Nama Model

Dimensi

Token Maks

Deskripsi

amazon.titan-embed-text-v2:0

1.024 (default), 512, 256

8,192

RAG, pencarian dokumen, pemeringkatan ulang, klasifikasi, dll.

Untuk detailnya, lihat model Penyematan Teks Amazon Titan.

Mengonfigurasi kredensial

Milvus harus mengetahui kredensial akses Bedrock Anda sebelum dapat meminta penyematan. Milvus menyediakan dua metode untuk mengonfigurasi kredensial:

  • File konfigurasi (disarankan): Simpan kredensial di milvus.yaml sehingga setiap kali restart dan node mengambilnya secara otomatis.

  • Variabel lingkungan: Menyuntikkan kredensial pada waktu penerapan-ideal untuk Docker Compose.

Pilih salah satu dari dua metode di bawah ini-file konfigurasi lebih mudah dikelola pada bare-metal dan VM, sedangkan rute env-var sesuai dengan alur kerja kontainer.

Jika kredensial untuk penyedia yang sama ada di berkas konfigurasi dan variabel lingkungan, Milvus selalu menggunakan nilai di milvus.yaml dan mengabaikan variabel lingkungan.

Simpan kredensial Anda di milvus.yaml; Milvus membacanya pada saat startup dan mengesampingkan variabel lingkungan apa pun untuk penyedia yang sama.

  1. **Deklarasikan kredensial Anda di bawah credential:

    Anda dapat mendaftarkan satu atau banyak kredensial-beri masing-masing label yang Anda ciptakan dan akan direferensikan nanti.

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

    Menempatkan kredensial di sini akan membuatnya persisten di seluruh restart dan memungkinkan Anda mengganti kredensial hanya dengan mengubah label.

  2. Memberi tahu Milvus kredensial mana yang akan digunakan untuk panggilan layanan

    Dalam berkas yang sama, arahkan penyedia Bedrock ke label yang Anda inginkan untuk digunakan.

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

    Ini akan mengikat kredensial tertentu untuk setiap permintaan yang dikirimkan Milvus ke layanan embedding Bedrock.

Opsi 2: Variabel lingkungan

Gunakan metode ini saat Anda menjalankan Milvus dengan Docker Compose dan lebih memilih untuk menyimpan rahasia dari berkas dan citra.

Milvus akan kembali ke variabel lingkungan hanya jika tidak ada kredensial untuk penyedia yang ditemukan di milvus.yaml.

Variabel

Diperlukan

Deskripsi

MILVUSAI_BEDROCK_ACCESS_KEY_ID

Ya

ID kunci akses AWS Anda yang digunakan untuk autentikasi dengan layanan Bedrock.

MILVUSAI_BEDROCK_SECRET_ACCESS_KEY

Ya

Kunci akses rahasia AWS Anda yang sesuai dengan ID kunci akses Anda.

Dalam berkas docker-compose.yaml Anda, tetapkan variabel lingkungan 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>

Blok environment: hanya menyuntikkan kunci ke dalam kontainer Milvus, sehingga OS hos Anda tidak tersentuh. Untuk detailnya, lihat Mengkonfigurasi Milvus dengan Docker Compose.

Menggunakan fungsi penyematan

Setelah kredensial dikonfigurasi, ikuti langkah-langkah berikut untuk mendefinisikan dan menggunakan fungsi penyematan.

Langkah 1: Mendefinisikan bidang skema

Untuk menggunakan fungsi penyematan, buat koleksi dengan skema tertentu. Skema ini harus menyertakan setidaknya tiga bidang yang diperlukan:

  • Bidang utama yang secara unik mengidentifikasi setiap entitas dalam koleksi.

  • Bidang skalar yang menyimpan data mentah yang akan disematkan.

  • Bidang vektor yang dicadangkan untuk menyimpan penyematan vektor yang akan dihasilkan oleh fungsi untuk bidang skalar.

Contoh berikut ini mendefinisikan skema dengan satu bidang skalar "document" untuk menyimpan data tekstual dan satu bidang vektor "dense" untuk menyimpan embedding yang akan dihasilkan oleh modul Function. Ingatlah untuk mengatur dimensi vektor (dim) agar sesuai dengan output dari model penyematan yang Anda pilih.

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)

Langkah 2: Menambahkan fungsi ke skema

Modul Function di Milvus secara otomatis mengubah data mentah yang disimpan dalam bidang skalar menjadi embedding dan menyimpannya ke dalam bidang vektor yang didefinisikan secara eksplisit.

Contoh di bawah ini menambahkan modul Function (bedrk) yang mengubah bidang skalar "document" menjadi embedding, menyimpan vektor yang dihasilkan dalam bidang vektor "dense" yang telah didefinisikan sebelumnya.

Setelah Anda mendefinisikan fungsi penyisipan Anda, tambahkan fungsi tersebut ke skema koleksi Anda. Ini menginstruksikan Milvus untuk menggunakan fungsi penyematan yang ditentukan untuk memproses dan menyimpan penyematan dari data teks Anda.

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

Langkah selanjutnya

Setelah mengonfigurasi fungsi penyematan, lihat Ikhtisar Fungsi untuk panduan tambahan mengenai konfigurasi indeks, contoh penyisipan data, dan operasi pencarian semantik.

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?