Embedding Vector Search dengan metadata

Panduan ini memberikan informasi tentang metadata opsional untuk penyematan vektor. Vector Search memungkinkan Anda menentukan metadata untuk setiap embedding.

Metadata adalah informasi arbitrer yang tidak dapat difilter yang dapat disimpan Vector Search untuk setiap embedding. Hal ini dapat memberikan embedding dengan konteks yang berguna seperti:

  • Detail produk, seperti nama, harga, dan URL gambar.

  • Deskripsi, cuplikan, tanggal, dan atribusi untuk penyematan teks.

  • Informasi pengguna untuk penyematan pengguna.

  • Koordinat untuk penyematan tempat.

Fitur dan manfaat utama

Fitur dan manfaat penggunaan metadata meliputi:

  • Konteks dengan hasil: Informasi dapat diberikan langsung di hasil penelusuran Anda, sehingga tidak perlu melakukan penelusuran terpisah dan mengurangi latensi.

  • Struktur fleksibel: Metadata disediakan sebagai objek JSON, yang memungkinkan metadata ditentukan sebagai data bertingkat yang kompleks.

  • Tidak Dapat Difilter: Metadata penyematan vektor adalah untuk menyimpan dan mengambil informasi yang tidak dapat difilter yang berbeda dari restricts dan numeric_restricts.

  • Update yang efisien: Kolom update_mask memungkinkan Anda menentukan bahwa API hanya memperbarui metadata untuk menghindari pengiriman ulang vektor sematan.

  • Informasi yang Tidak Terkait: Informasi yang tidak dapat difilter dapat dipisahkan dari atribut yang dapat difilter seperti restricts.

  • Pengembangan yang disederhanakan: Respons penelusuran mencakup metadata yang terkait dengan penyematan vektor, sekaligus mengurangi kompleksitas yang diperlukan untuk fitur seperti menampilkan hasil penelusuran multimedia dan melakukan pasca-pemrosesan berbasis konteks.

Format data

Kolom embedding_metadata opsional menyimpan objek JSON yang secara fleksibel mengaitkan informasi lengkap yang tidak dapat difilter dengan penyematan dalam Penelusuran Vektor. Hal ini dapat menyederhanakan aplikasi dengan menampilkan konteks bersama hasil dan memungkinkan update hanya metadata yang efisien menggunakan update_mask untuk upsertDatapoints API.

Contoh struktur titik data:

    {
        "id": "movie_001",
        "embedding": [0.1, 0.2, ..., 0.3],
        "sparse_embedding": {
            "values": [-0.4, 0.2, -1.3],
            "dimensions": [10, 20, 30]
        },
        "numeric_restricts": [{'namespace': 'year', 'value_int': 2022}],
        "restricts": [{'namespace': 'genre', 'allow': ['action', 'comedy']}],

        # --- New embedding_metadata field ---
        "embedding_metadata": {
            "title": "Ballet Train",
            "runtime": {
                "hours": 2,
                "minutes": 6
            },
            "review_info": {
                "review": "This movie is fun and...",
                "rotten_potatoes_rating": 76
            }
        }
        # ------------------------------------
    },
    # ... other data points

Menyerap data dengan embedding_metadata

Saat menambahkan titik data, Anda dapat menyertakan embedding_metadata saat salah satu tindakan berikut terjadi:

  • Mengupload file (Cloud Storage):
    • Gunakan format JSON atau AVRO. CSV tidak didukung untuk embedding_metadata.
  • Menggunakan upsertDatapoints API:
    • Teruskan objek titik data (termasuk embedding_metadata) dalam payload permintaan API.

Mengambil embedding_metadata selama kueri

Saat melakukan penelusuran tetangga terdekat standar menggunakan findNeighbors API, kolom embedding_metadata untuk setiap tetangga akan disertakan secara otomatis dalam respons jika returnFullDatapoint disetel ke True.

curl

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://${PUBLIC_ENDPOINT_DOMAIN}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexEndpoints/${INDEX_ENDPOINT_ID}:findNeighbors" \
-d '{deployedIndexId:"${DEPLOYED_INDEX_ID}", "queries":[{datapoint:{"featureVector":"<FEATURE_VECTOR>"}}], returnFullDatapoint:true}'

Mengupdate embedding_metadata

Perbarui metadata menggunakan upsertDatapoints API dan update_mask menggunakan nilai embedding_metadata. Kolom update_mask juga dapat mencakup nilai mask tambahan. Untuk penggunaan mask kolom, lihat Memperbarui metadata penyematan.

Kolom update_mask membantu memastikan bahwa hanya embedding_metadata yang diperbarui, sehingga tidak perlu mengirim ulang kolom pembatasan dan penyematan.

Contoh berikut menunjukkan cara menentukan dan memperbarui metadata untuk membuat IndexDatapoint yang ditargetkan, menentukan update_mask, dan memanggil upsertDatapoints.

curl

curl -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/indexes/${INDEX_ID}:upsertDatapoints \
-d '{
datapoints:[
    {
        datapoint_id: "'${DATAPOINT_ID_1}'",
        feature_vector: [...],
        embedding_metadata:{"title": "updated title", "rating": 4.5, "tags": ["updated", "reviewed"]
    }, update_mask: "embedding_metadata"}'