全部产品
Search
文档中心

Realtime Compute for Apache Flink:VECTOR_SEARCH

更新时间:Dec 10, 2025

Topik ini menjelaskan cara menggunakan fungsi VECTOR_SEARCH untuk pencarian vektor. Fungsi ini menemukan item yang paling mirip secara semantik berdasarkan vektor numerik berdimensi tinggi yang diberikan.

Batasan

  • Dukungan versi: Ververica Runtime (VVR) 11.3+ mendukung mode stream, sedangkan VVR 11.4+ mendukung mode batch.

  • Tabel vektor: Hanya Milvus yang didukung sebagai tabel vektor.

  • Jenis stream: Hanya stream non-updating yang didukung (hanya berisi pesan INSERT).

  • Mode eksekusi: Fungsi ini 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 input

Parameter

Tipe data

Deskripsi

TABLE <SEARCH_TABLE>

TABLE

Nama tabel vektor.

DESCRIPTOR(<COLUMN_TO_SEARCH>)

DESC

Kolom vektor terindeks dalam tabel vektor. Data masukan dibandingkan dengan kolom ini untuk menghitung kemiripan.

COLUMN_TO_QUERY

ARRAY<FLOAT>/ARRAY<DOUBLE>

Kolom fitur vektor dari data masukan, seperti penyematan citra atau teks yang diunggah. Kolom ini dicocokkan dengan kolom vektor terindeks untuk menemukan kemiripan.

TOP_K

INT

Jumlah maksimum entri data serupa yang dikembalikan.

CONFIG

MAP<STRING,STRING>

Parameter waktu proses yang dapat dikonfigurasi.

Nilai kembalian

Fungsi VECTOR_SEARCH mengembalikan sebuah tabel yang setiap barisnya berisi semua kolom dari tabel vektor serta satu kolom skor tambahan. Kolom skor bertipe data DOUBLE dan menunjukkan tingkat kemiripan antara data masukan dan data keluaran.

Parameter waktu proses

Parameter

Tipe data

Bawaan

Deskripsi

async

Boolean

(none)

Menentukan apakah mode asinkron diaktifkan. Jika konektor untuk tabel vektor tidak mendukung mode yang ditentukan, mesin akan melaporkan error.

Secara bawaan, mesin memilih mode eksekusi berdasarkan dukungan konektor. Jika konektor mendukung mode asinkron dan sinkron, mesin memprioritaskan mode asinkron untuk meningkatkan throughput.

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 informasi lebih lanjut tentang nilai-nilai ini, lihat Async I/O.

timeout

Duration

3 min

Timeout untuk operasi asinkron, dihitung sejak panggilan pertama hingga penyelesaian. Periode ini dapat mencakup beberapa retry dan diatur ulang saat failover.

Contoh

Data uji

Asumsikan vector_table berisi data berikut:

id

topic

vector_index

1

"BigData"

[1, 1, 0]

2

"Streaming"

[-5, -12, -13]

3

"Batch"

[5, 12, 13]

Asumsikan query_table berisi data berikut:

id

user_keyword

embedding

1

"Spark"

[5, 12, 13]

2

"Flink"

[-5, -12, -13]

Pernyataan uji

Pernyataan SQL berikut menggunakan setiap baris dalam query_table untuk mencari vector_table dan mengambil dua catatan 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

"Spark"

"Batch"

"Spark"

"BigData"

"Flink"

"Streaming"

"Flink"

"BigData"