All Products
Search
Document Center

Realtime Compute for Apache Flink:VECTOR_SEARCH

Last Updated:Sep 22, 2026

VECTOR_SEARCH adalah fungsi yang menemukan item paling mirip secara semantik berdasarkan vektor numerik berdimensi tinggi yang ditentukan, dengan melakukan kueri terhadap tabel vektor Milvus dari pekerjaan Flink SQL dan mengembalikan K entri paling mirip.

Batasan

  • Dukungan versi: Ververica Runtime (VVR) 11.3 dan versi setelahnya mendukung mode stream. VVR 11.4 dan versi setelahnya mendukung mode batch.

  • Parameter OUTPUT_COLUMNS didukung mulai dari VVR 11.9 Realtime Compute for Apache Flink.

  • Tabel vektor: Milvus dan DLF Paimon (VVR 11.8 dan versi setelahnya) didukung sebagai tabel vektor.

  • Jenis stream: Hanya stream tipe insert-only yang didukung (stream yang hanya berisi pesan INSERT).

  • Mode eksekusi: VECTOR_SEARCH hanya berjalan dalam mode stream; mode batch tidak didukung.

Sintaksis

VECTOR_SEARCH(
  TABLE <SEARCH_TABLE>,
  DESCRIPTOR(<COLUMN_TO_SEARCH>),
  <COLUMN_TO_QUERY>,
  <TOP_K>[,
  <CONFIG>]
)

Parameter

Parameter

Tipe data

Deskripsi

async

Boolean

Menentukan apakah akan mengaktifkan mode asinkron. Jika konektor tabel vektor tidak mendukung mode yang ditentukan, mesin akan mengembalikan error.

max-concurrent-operations

Integer

Jumlah maksimum permintaan konkuren dalam mode asinkron.

output-mode

Enum

Kolom fitur vektor pada input, seperti vektor penyematan gambar atau teks yang diunggah pengguna. Kolom ini dicocokkan dengan kolom vektor terindeks berdasarkan kemiripan.

TOP_K

INT

Jumlah maksimum catatan mirip yang dikembalikan.

CONFIG

MAP<STRING,STRING>

Parameter runtime yang dapat Anda konfigurasi.

OUTPUT_COLUMNS

DESC

Opsional. Menentukan kolom yang dikembalikan dalam hasil pencarian vektor. Anda dapat memilih kolom tingkat atas dari tabel vektor dan kolom kemiripan score yang dihasilkan oleh mesin. Kolom yang dikembalikan mengikuti urutan yang dideklarasikan dalam DESCRIPTOR. Jika parameter ini tidak ditentukan, semua kolom tabel vektor dan kolom score akan dikembalikan.

Nilai kembalian

VECTOR_SEARCH mengembalikan sebuah tabel. Jika parameter OUTPUT_COLUMNS tidak ditentukan, setiap baris berisi semua kolom dari tabel vektor serta satu kolom tambahan score, yang konsisten dengan perilaku versi sebelumnya. Jika OUTPUT_COLUMNS ditentukan, setiap baris hanya berisi kolom yang dinyatakan, sesuai urutan yang ditetapkan dalam DESCRIPTOR.

Kolom score bertipe DOUBLE dan merepresentasikan tingkat kemiripan antara data masukan dan setiap hasil pencarian. Kolom ini dapat dipilih atau dikecualikan melalui parameter OUTPUT_COLUMNS. Apabila kolom bernama score sudah ada di tabel vektor, sistem akan memberikan nama unik untuk kolom kemiripan yang dihasilkan, misalnya score0. Dalam kasus tersebut, gunakan nama kolom aktual tersebut dalam OUTPUT_COLUMNS.

Parameter OUTPUT_COLUMNS tidak boleh kosong, tidak mendukung bidang bersarang (nested fields), dan tidak boleh mengandung kolom duplikat.

Parameter runtime

Parameter

Tipe data

Nilai default

Deskripsi

async

Boolean

(none)

Menentukan apakah akan mengaktifkan mode asinkron. Jika konektor tabel vektor tidak mendukung mode yang ditentukan, mesin akan mengembalikan error.

Secara default, mesin memilih mode eksekusi berdasarkan mode yang didukung oleh konektor. Jika konektor mendukung mode asinkron dan sinkron, mesin akan memprioritaskan mode asinkron untuk meningkatkan throughput keseluruhan.

max-concurrent-operations

Integer

10

Jumlah maksimum permintaan konkuren dalam mode asinkron.

output-mode

Enum

ORDERED

Mode output operasi asinkron.

Nilai yang valid:

  • ORDERED

  • ALLOW_UNORDERED

Untuk informasi lebih lanjut tentang kedua nilai tersebut, lihat Async I/O.

timeout

Duration

3min

Periode timeout sejak pemanggilan pertama hingga operasi asinkron selesai. Periode ini dapat mencakup beberapa percobaan ulang (retry) dan diatur ulang saat terjadi failover.

Contoh

Data uji

Tabel vektor vector_table berisi data berikut:

id

topic

vector_index

1

'Spark'

[5, 12, 13]

2

'Flink'

[-5, -12, -13]

3

'Batch'

[5, 12, 13]

Tabel kueri query_table berisi data berikut:

id

user_keyword

embedding

1

'Spark'

[5, 12, 13]

2

'Flink'

[-5, -12, -13]

Kueri

Untuk setiap baris pada query_table, pernyataan SQL berikut melakukan pencarian terhadap vector_table dan mengembalikan dua entri paling mirip.

SELECT user_keyword, topic
FROM
  query_table,
  LATERAL TABLE (VECTOR_SEARCH(
    SEARCH_TABLE => TABLE vector_table,
    COLUMN_TO_SEARCH => DESCRIPTOR(vector_index),
    COLUMN_TO_QUERY => query_table.embedding,
    TOP_K => 2,
    MAP['async', 'false'] -- Aktifkan mode sinkron
    ))

Hasil

user_keyword

topic

score

'Spark'

'Batch'

1.0

'Spark'

'BigData'

0.6538461538461539

'Flink'

'Streaming'

1.0

'Flink'

'BigData'

-0.6538461538461539