All Products
Search
Document Center

Realtime Compute for Apache Flink:PENCARIAN_AGGREGASI_VEKTOR

Last Updated:Dec 04, 2025

Topik ini menjelaskan cara melakukan pencarian vektor menggunakan fungsi VECTOR_SEARCH_AGG. Pencarian vektor memungkinkan Anda menemukan item yang paling mirip secara semantik berdasarkan vektor numerik berdimensi tinggi yang ditentukan. Berbeda dengan fungsi VECTOR_SEARCH, fungsi ini mengembalikan semua item yang cocok dalam bentuk array.

Batasan

  • Mode stream didukung di Realtime Compute for Apache Flink yang menggunakan mesin Ververica Runtime (VVR) versi 11.3 atau lebih baru. Mode batch didukung di mesin VVR versi 11.4 atau lebih baru.

  • Pencarian hanya dapat dilakukan pada tabel vektor Milvus.

  • Hanya aliran non-updating yang didukung. Aliran non-updating hanya berisi pesan INSERT.

Sintaksis

VECTOR_SEARCH_AGG(
  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 input, seperti penyematan citra atau teks yang diunggah pengguna. Kolom ini digunakan untuk pencocokan kemiripan terhadap kolom vektor terindeks.

TOP_K

INT

Jumlah maksimum catatan data yang mirip untuk dikembalikan.

CONFIG

MAP<STRING,STRING>

Parameter waktu proses yang dapat dikonfigurasi.

Pengembalian

VECTOR_SEARCH_AGG mengembalikan tabel data dengan satu catatan. Skema tabelnya adalah ROW<ARRAY<ROW>>.

Kolom array diberi nama search_results. Setiap ROW dalam array berisi semua kolom dari tabel vektor dan kolom tambahan bernama score. Kolom score bertipe DOUBLE dan menunjukkan tingkat kemiripan antara data masukan dan data keluaran.

Parameter waktu proses

Parameter

Tipe data

Nilai default

Deskripsi

async

Boolean

(none)

Menentukan apakah mode asinkron diaktifkan. Jika konektor yang digunakan oleh tabel vektor tidak mendukung mode yang ditentukan, mesin akan melaporkan 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 untuk operasi asinkron.

Nilai yang mungkin:

  • ORDERED

  • ALLOW_UNORDERED

Untuk informasi selengkapnya tentang nilai-nilai ini, lihat Async I/O.

timeout

Duration

3 min

Periode timeout sejak panggilan pertama hingga operasi asinkron selesai. Periode ini dapat mencakup beberapa kali percobaan ulang dan diatur ulang saat terjadi failover.

Contoh

Data uji

Asumsikan tabel vektor 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 tabel data query_table berisi data berikut:

id

user_keyword

embedding

1

"Spark"

[5, 12, 13]

2

"Flink"

[-5, -12, -13]

Pernyataan uji

Pernyataan SQL berikut melakukan pencarian pada vector_table untuk setiap catatan dalam query_table guna mengambil dua item paling mirip.

SELECT user_keyword, search_results
FROM 
  query_table,
  LATERAL TABLE (VECTOR_SEARCH_AGG(
    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
    ))

Output

user_keyword

search_results

"Spark"

[(3, "Batch", [5.0, 12.0, 13.0], 1.0), (1, "BigData", [1.0, 1.0, 0.0], 0.6538461538461539)]

"Flink"

[(2, "Streaming", [-5.0, -12.0, -13.0], 1.0), (1, "BigData", [1.0, 1.0, 0.0], -0.6538461538461539)]