Panduan ini menjelaskan cara mengimpor data indeks dari BigQuery ke
Vector Search dengan ImportIndex API, yang menyederhanakan
proses pengisian indeks Vector Search langsung dari
tabel BigQuery yang berisi embedding vektor.
Menyiapkan data BigQuery untuk diimpor
Sebelum mengimpor data indeks, tabel BigQuery Anda harus memiliki kolom berikut:
ID unik: Kolom ini berisi ID unik untuk setiap titik data. Kolom ini dipetakan ke kolom
iddi Vector Search.Embedding vektor: Kolom ini berisi embedding vektor, yang ditampilkan sebagai kolom
FLOATberulang. Kolom ini dipetakan ke kolom embedding di Vector Search.
Secara opsional, Anda dapat menyertakan kolom berikut:
Batasan: Ini adalah kolom untuk batasan string dan numerik, yang memungkinkan Anda memfilter data selama penelusuran.
Metadata: Ini adalah kolom metadata yang akan ditampilkan dengan hasil kueri indeks Penelusuran Vektor.
Menyiapkan indeks Penelusuran Vektor untuk diimpor
Setelah menyiapkan data BigQuery, pastikan indeks Penelusuran Vektor tujuan:
Ada di Vector Search dalam project Anda: Indeks ini berfungsi sebagai tujuan untuk data yang diimpor. Indeks harus dibuat dalam project Anda.
Disetel untuk menimpa atau menambahkan data: Selama proses impor, Anda memiliki opsi untuk menimpa data yang ada dalam indeks Penelusuran Vektor atau menambahkan data yang diimpor dari BigQuery. Menimpa akan menggantikan titik data saat ini dengan data yang diimpor. Penambahan akan menambahkan data baru ke indeks yang ada.
Dimensi yang cocok: Dimensi embedding yang disimpan dalam data BigQuery Anda harus sama dengan dimensi yang dikonfigurasi untuk indeks Penelusuran Vektor Anda.
Menentukan ImportIndexRequest
Sebelum mengimpor data dari BigQuery, buat objek
ImportIndexRequest yang menentukan indeks target, apakah akan mengganti data yang ada, dan konfigurasi untuk terhubung ke BigQuery. Kirim objek permintaan ini ke ImportIndexAPI.
Berikut adalah contoh ImportIndexRequest dalam format JSON:
{
"name": "projects/[PROJECT_ID]/locations/[LOCATION]/indexes/[INDEX_ID]",
"isCompleteOverwrite": true,
"config": {
"bigQuerySourceConfig": {
"tablePath": "bq://[PROJECT_ID].[DATASET_ID].[TABLE_ID]",
"datapointFieldMapping": {
"idColumn": "[ID_COLUMN_NAME]",
"embeddingColumn": "[EMBEDDING_COLUMN_NAME]",
"restricts": [
{
"namespace": "[RESTRICT_NAMESPACE]",
"allowColumn": ["[RESTRICT_ALLOW_COLUMN_NAME]"],
"denyColumn": ["[RESTRICT_DENY_COLUMN_NAME]"]
}
],
"numericRestricts": [
{
"namespace": "[RESTRICT_NAMESPACE]",
"valueColumn": "[RESTRICT_VALUE_COLUMN_NAME]",
"valueType": "INT"
}
],
"metadataColumns": ["METADATA_COLUMN1", "METADATA_COLUMN2", ...]
}
}
}
}
name: Nama lengkap resource indeks Penelusuran Vektor tempat Anda ingin mengimpor data.isCompleteOverwrite: Boolean yang menunjukkan apakah akan mengganti data yang ada dalam indeks. Tetapkan ketrueuntuk mengganti data yang ada.config: Berisi konfigurasi untuk sumber BigQuery.bigquerySourceConfig: Menentukan detail untuk terhubung ke tabel BigQuery Anda.tablePath: Jalur lengkap ke tabel BigQuery Anda dalam formatbq://[PROJECT_ID].[DATASET_ID].[TABLE_ID].datapointFieldMapping: Memetakan kolom dalam tabel BigQuery ke kolom di Vector Search.idColumn: Nama kolom yang berisi ID unik.embeddingColumn: Nama kolom yang berisi sematan vektor.restricts: (Opsional) Menentukan batasan string.namespace: Namespace untuk pembatasan.allowColumn: Array yang berisi nama kolom untuk nilai yang diizinkan untuk pembatasan.denyColumn: Array yang berisi nama kolom untuk nilai yang ditolak untuk pembatasan.numericRestricts: (Opsional) Menentukan batasan numerik.namespace: Namespace untuk pembatasan numerik.value_column: Nama kolom yang berisi nilai numerik.value_type: Jenis nilai numerik sepertiINT,FLOAT, atauDOUBLE.metadataColumns: (Opsional) Kolom metadata yang akan disertakan dengan sematan fitur. Kolom metadata ini dapat diambil dari hasil penelusuran indeks, tetapi tidak memengaruhi penelusuran itu sendiri. Misalnya, pemfilteran tidak dapat dilakukan pada kolom metadata.
Menjalankan impor
Setelah membuat ImportIndexRequest, kirimkan ke endpoint API ImportIndex. Tindakan ini akan memicu proses impor, yang mengekspor data dari
BigQuery dan memasukkannya ke dalam indeks
Vector Search Anda. ImportIndex menampilkan operasi yang berjalan lama. Anda dapat menggunakan ID operasi untuk memantau progres operasi impor.
Setelah disimpan, data yang diimpor akan berada dalam indeks Penelusuran Vektor Anda dan tidak dapat dibedakan dari data yang dimasukkan menggunakan metode lain. Indeks dapat terus dikelola menggunakan API Penelusuran Vektor standar.
Contoh kode berikut menunjukkan hasil kueri dengan
return_full_datapoint disetel ke benar dan konfigurasi konektor BigQuery
yang menentukan pembatasan genre, pembatasan numerik year,
serta kolom metadata title dan description.
nearest_neighbors {
neighbors {
datapoint {
datapoint_id: "4"
feature_vector: 0.7
feature_vector: 0.8
restricts {
namespace: "genre"
allow_list: "Drama"
}
embedding_metadata {
title: "A Movie"
description: "The story of A Movie..."
}
crowding_tag {
crowding_attribute: "0"
}
numeric_restricts {
namespace: "year"
value_int: 1942
}
}
distance: 0.75
}
}