All Products
Search
Document Center

Realtime Compute for Apache Flink:VECTOR_SEARCH

Last Updated:Aug 20, 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.

  • 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 Deskripsi
TABLE <SEARCH_TABLE> TABLE Nama tabel vektor.
DESCRIPTOR(<COLUMN_TO_SEARCH>) DESC Kolom vektor terindeks dalam tabel vektor. Data masukan dibandingkan terhadap kolom ini untuk menghitung kemiripan.
COLUMN_TO_QUERY ARRAY<FLOAT> / ARRAY<DOUBLE> Kolom penyematan dari stream input, seperti penyematan gambar atau teks yang diunggah.
TOP_K INT Jumlah maksimum entri mirip yang dikembalikan per baris input.
CONFIG MAP<STRING,STRING> Parameter waktu proses opsional. Lihat Parameter waktu proses.

Nilai kembalian

VECTOR_SEARCH mengembalikan sebuah tabel. Setiap baris berisi semua kolom dari tabel vektor ditambah kolom score bertipe DOUBLE. Kolom score menunjukkan tingkat kemiripan antara data masukan dan data keluaran.

Parameter waktu proses

Teruskan parameter waktu proses sebagai MAP<STRING,STRING> dalam argumen CONFIG, contohnya: MAP['async', 'false'].

Secara default, mesin memilih mode eksekusi berdasarkan dukungan konektor Milvus. Jika konektor mendukung mode asinkron maupun sinkron, mesin memprioritaskan mode asinkron untuk memaksimalkan throughput. Atur async secara eksplisit untuk mengganti perilaku ini.

Parameter Tipe Default Deskripsi
async Boolean (tidak ada) Apakah menggunakan mode asinkron. Jika konektor tidak mendukung mode yang ditentukan, mesin akan melaporkan error.
max-concurrent-operations Integer 10 Jumlah maksimum permintaan konkuren dalam mode asinkron.
output-mode Enum ORDERED Mode output untuk operasi asinkron. Nilai yang valid: ORDERED, ALLOW_UNORDERED. Untuk detail selengkapnya, lihat Async I/O — Order of results.
timeout Duration 3 min Timeout untuk operasi asinkron, dihitung sejak pemanggilan pertama hingga selesai. Periode ini dapat mencakup beberapa kali retry dan diatur ulang saat terjadi failover.

Contoh

Data uji

vector_table:

id topic vector_index
1 "BigData" [1, 1, 0]
2 "Streaming" [-5, -12, -13]
3 "Batch" [5, 12, 13]

query_table:

id user_keyword embedding
1 "Spark" [5, 12, 13]
2 "Flink" [-5, -12, -13]

Kueri

Pernyataan berikut menggunakan setiap baris dalam query_table untuk mencari vector_table dan mengambil dua catatan paling mirip. Opsi MAP['async', 'false'] secara eksplisit mengaktifkan mode sinkron.

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
"Spark" "Batch"
"Spark" "BigData"
"Flink" "Streaming"
"Flink" "BigData"