Todos los productos
Search
Centro de documentos

Realtime Compute for Apache Flink:VECTOR_SEARCH

Última actualización: Sep 21, 2026

VECTOR_SEARCH es una función que encuentra los elementos semánticamente más similares a partir de un vector numérico de alta dimensión especificado. Esta función consulta una tabla vectorial de Milvus desde un trabajo de Flink SQL y devuelve las K entradas principales con mayor similitud (top-K).

Límites

  • Compatibilidad de versiones: Ververica Runtime (VVR) 11.3 y posteriores son compatibles con el modo de streaming. VVR 11.4 y posteriores admiten el modo por lotes.

  • El parámetro OUTPUT_COLUMNS se admite a partir de la versión VVR 11.9 de Realtime Compute for Apache Flink.

  • Tabla vectorial: Se admiten Milvus y DLF Paimon (VVR 11.8 y posteriores) como tablas vectoriales.

  • Tipo de flujo: Solo se admiten flujos de solo inserción (flujos que contienen únicamente mensajes INSERT).

  • Modo de ejecución: VECTOR_SEARCH se ejecuta exclusivamente en modo de streaming; no se admite el modo por lotes.

Sintaxis

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

Parámetros

Parámetro

Tipo de datos

Descripción

async

Boolean

Especifica si se habilita el modo asíncrono. Si el conector de la tabla vectorial no admite el modo indicado, el motor devuelve un error.

max-concurrent-operations

Integer

Número máximo de solicitudes simultáneas en modo asíncrono.

output-mode

Enum

Columna de características vectoriales de la entrada, como el embedding de una imagen o un texto subido por el usuario. La columna se compara por similitud con la columna vectorial indexada.

TOP_K

INT

Número máximo de registros similares que se devuelven.

CONFIG

MAP<STRING,STRING>

El Runtime parameters que puede configurar.

OUTPUT_COLUMNS

DESC

Opcional. Especifica las columnas que se devuelven en el resultado de la búsqueda vectorial. Puede seleccionar columnas de nivel superior de la tabla vectorial y la columna de similitud score generada por el motor. Las columnas devueltas siguen el orden declarado en DESCRIPTOR. Si no especifica este parámetro, se devuelven todas las columnas de la tabla vectorial junto con score.

Valor de retorno

VECTOR_SEARCH devuelve una tabla. Si no se especifica OUTPUT_COLUMNS, cada fila contiene todas las columnas de la tabla vectorial y una columna adicional score, lo cual mantiene la compatibilidad con versiones anteriores. Si se especifica OUTPUT_COLUMNS, cada fila contiene únicamente las columnas indicadas, en el orden declarado en DESCRIPTOR.

La columna score es de tipo DOUBLE y describe la similitud entre los datos de entrada y cada resultado de búsqueda. También puede seleccionar o descartar esta columna mediante OUTPUT_COLUMNS. Si ya existe una columna llamada score en la tabla vectorial, el motor asigna un nombre único a la columna de similitud generada, como score0. En ese caso, utilice el nombre real de la columna en OUTPUT_COLUMNS.

OUTPUT_COLUMNS no puede estar vacío, no admite campos anidados y no puede contener columnas duplicadas.

Parámetros de tiempo de ejecución

Parámetro

Tipo de datos

Valor predeterminado

Descripción

async

Boolean

(none)

Especifica si se habilita el modo asíncrono. Si el conector de la tabla vectorial no admite el modo indicado, el motor devuelve un error.

De forma predeterminada, el motor selecciona el modo de ejecución según los modos que admite el conector. Si el conector es compatible con los modos asíncrono y síncrono, el motor prefiere el asíncrono para mejorar el throughput general.

max-concurrent-operations

Integer

10

Número máximo de solicitudes simultáneas en modo asíncrono.

output-mode

Enum

ORDERED

Modo de salida de las operaciones asíncronas.

Valores válidos:

  • ORDERED

  • ALLOW_UNORDERED

Para obtener más información sobre estos dos valores, consulte Async I/O.

timeout

Duration

3min

Periodo de tiempo de espera desde la primera invocación hasta que finaliza la operación asíncrona. Este periodo puede abarcar varios reintentos y se restablece durante un failover.

Ejemplo

Datos de prueba

La tabla vectorial vector_table contiene los siguientes datos:

id

topic

vector_index

1

'Spark'

[5, 12, 13]

2

'Flink'

[-5, -12, -13]

3

'Batch'

[5, 12, 13]

La tabla de consulta query_table contiene los siguientes datos:

id

user_keyword

embedding

1

'Spark'

[5, 12, 13]

2

'Flink'

[-5, -12, -13]

Consulta

Para cada fila de query_table, la siguiente instrucción SQL busca en vector_table y devuelve los dos registros más similares.

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'] -- Enable synchronous mode
    ))

Resultados

user_keyword

topic

score

'Spark'

'Batch'

1.0

'Spark'

'BigData'

0.6538461538461539

'Flink'

'Streaming'

1.0

'Flink'

'BigData'

-0.6538461538461539