Embedding Vector Search dengan metadata

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

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

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

  • Deskripsi, cuplikan, tanggal, dan kepengarangan untuk embedding teks.

  • Informasi pengguna untuk embedding pengguna.

  • Koordinat untuk embedding tempat.

Fitur dan manfaat utama

Fitur dan manfaat penggunaan metadata meliputi:

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

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

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

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

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

  • Pengembangan yang disederhanakan: Respons penelusuran menyertakan metadata yang terkait dengan embedding vektor, sekaligus mengurangi kompleksitas yang diperlukan untuk fitur seperti menampilkan hasil penelusuran kaya dan melakukan pascapemrosesan berbasis konteks.

Format data

Kolom embedding_metadata opsional menyimpan objek JSON yang secara fleksibel mengaitkan informasi kaya dan tidak dapat difilter dengan embedding di Vector Search. Hal ini dapat menyederhanakan aplikasi dengan menampilkan konteks beserta hasil dan memungkinkan update khusus 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 jika salah satu tindakan berikut terjadi:

  • Mengupload file (Cloud Storage):
    • Gunakan JSON atau AVRO format. 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 otomatis disertakan dalam respons jika returnFullDatapoint ditetapkan 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

Update metadata menggunakan upsertDatapoints API dan update_mask menggunakan nilai embedding_metadata. Kolom update_mask juga dapat menyertakan nilai mask tambahan. Untuk penggunaan mask kolom, lihat Mengupdate metadata embedding.

Kolom update_mask membantu memastikan bahwa hanya embedding_metadata yang diupdate, sehingga menghindari pengiriman ulang kolom batasan dan embedding.

Contoh berikut menunjukkan cara menentukan dan mengupdate 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"}'