Tous les produits
Search
Centre de documentation

Realtime Compute for Apache Flink:VECTOR_SEARCH

Dernière mise à jour :Aug 19, 2026

VECTOR_SEARCH est une fonction qui identifie les éléments les plus similaires sur le plan sémantique à partir d'un vecteur numérique haute dimension spécifié. Elle interroge une table de vecteurs Milvus depuis une tâche Flink SQL et renvoie les K entrées les plus similaires.

Limites

  • Prise en charge des versions : Ververica Runtime (VVR) 11.3 et versions ultérieures prennent en charge le mode flux. VVR 11.4 et versions ultérieures prennent en charge le mode lot.

  • Table de vecteurs : Milvus et DLF Paimon (VVR 11.8 et versions ultérieures) sont pris en charge en tant que tables de vecteurs.

  • Type de flux : Seuls les flux en insertion seule sont pris en charge (flux contenant uniquement des messages INSERT).

  • Mode d'exécution : VECTOR_SEARCH s'exécute uniquement en mode flux ; le mode lot n'est pas pris en charge.

Syntaxe

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

Paramètres

Paramètre Type Description
TABLE <SEARCH_TABLE> TABLE Nom de la table de vecteurs.
DESCRIPTOR(<COLUMN_TO_SEARCH>) DESC Colonne de vecteur indexée dans la table de vecteurs. Les données d'entrée sont comparées à cette colonne pour calculer la similarité.
COLUMN_TO_QUERY ARRAY<FLOAT> / ARRAY<DOUBLE> Colonne d'embedding du flux d'entrée, telle que l'embedding d'une image ou d'un texte téléchargé.
TOP_K INT Nombre maximal d'entrées similaires à renvoyer par ligne d'entrée.
CONFIG MAP<STRING,STRING> Paramètres d'exécution facultatifs. Consultez la section Paramètres d'exécution.

Valeur de retour

VECTOR_SEARCH renvoie une table. Chaque ligne contient toutes les colonnes de la table de vecteurs, ainsi qu'une colonne score de type DOUBLE. La colonne score indique la similarité entre les données d'entrée et les données de sortie.

Paramètres d'exécution

Transmettez les paramètres d'exécution sous forme de MAP<STRING,STRING> dans l'argument CONFIG, par exemple : MAP['async', 'false'].

Par défaut, le moteur sélectionne le mode d'exécution en fonction des capacités du connecteur Milvus. Si le connecteur prend en charge les modes asynchrone et synchrone, le moteur privilégie le mode asynchrone afin de maximiser le débit. Définissez explicitement le paramètre async pour modifier ce comportement.

Paramètre Type Valeur par défaut Description
async Boolean (aucune) Indique s'il faut utiliser le mode asynchrone. Si le connecteur ne prend pas en charge le mode spécifié, le moteur signale une erreur.
max-concurrent-operations Integer 10 Nombre maximal de requêtes simultanées en mode asynchrone.
output-mode Enum ORDERED Mode de sortie pour les opérations asynchrones. Valeurs valides : ORDERED, ALLOW_UNORDERED. Pour plus de détails, consultez la page Async I/O — Order of results.
timeout Duration 3 min Délai d'expiration pour une opération asynchrone, depuis le premier appel jusqu'à la fin. Cette période peut inclure plusieurs tentatives et est réinitialisée lors d'un basculement.

Exemple

Données de test

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]

Requête

L'instruction suivante utilise chaque ligne de la table query_table pour rechercher dans la table vector_table et récupérer les deux enregistrements les plus similaires. L'option MAP['async', 'false'] active explicitement le mode synchrone.

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
    ))

Résultats

user_keyword topic
"Spark" "Batch"
"Spark" "BigData"
"Flink" "Streaming"
"Flink" "BigData"