Catégories :

Fonctions de chaîne et fonctions binaires (Large Language Model)

SEARCH_PREVIEW (SNOWFLAKE.CORTEX)

Pour un nom de service Cortex Search et une requête donnés, renvoie une réponse du service spécifié.

Syntaxe

SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
    '<service_name>',
    '<query_parameters_object>'
)
Copy

Arguments

service_name

Nom de votre service Cortex Search. Utilisez le nom complet si le service se trouve dans un schéma différent de la session en cours.

query_parameters_object

Une STRING qui contient un objet JSON qui spécifie les paramètres de requête pour l’appel du service.

Clé

Type

Description

Par défaut

query

Chaîne

Votre requête de recherche, pour rechercher dans la colonne de texte du service.

Cet élément est obligatoire.

columns

Tableau

Une liste de colonnes séparées par des virgules à renvoyer pour chaque résultat pertinent dans la réponse. Ces colonnes doivent être incluses dans la requête source du service.

Colonne de recherche qui a été spécifiée lors de la création du service.

filter

Objet

Un objet de filtre pour filtrer les résultats en fonction des données dans les colonnes ATTRIBUTES. Pour une syntaxe détaillée, voir Syntaxe de filtre.

Objet vide

limit

Entier

Nombre maximal de résultats à renvoyer dans la réponse.

10

Syntaxe de filtre

Cortex Search prend en charge le filtrage sur les colonnes ATTRIBUTES spécifiées dans la commande CREATE CORTEX SEARCH SERVICE.

Cortex Search prend en charge quatre opérateurs de recherche :

  • Égalité des chaînes : @eq

  • La table contient : @contains

  • Date/horodatage supérieur ou égal à : @gte

  • Date/horodatage inférieur ou égal à : @lte

Ces opérateurs de correspondance peuvent être composés de différents opérateurs logiques :

  • @and

  • @or

  • @not

Les opérateurs @gte et @lte peuvent opérer sur des ATTRIBUTES de type DATE ou TIMESTAMP (Types de données de date et heure) et acceptent des valeurs de la forme : YYYY-MM-DD et, pour les dates tenant compte des fuseaux horaires : YYYY-MM-DD+HH:MM. Si le décalage du fuseau horaire n’est pas spécifié, la date est interprétée en UTC. Les opérateurs @gte et @lte incluent les valeurs spécifiées.

Ces opérateurs peuvent être combinés en un seul objet filtre. Voici quelques exemples :

  • Le filtrage sur les lignes où se trouve une colonne de type chaîne string_col est égal à la valeur value.

    { "@eq": { "string_col": "value" } }
    
    Copy
  • Filtrage sur les lignes où la colonne ARRAY array_col contient de la valeur value.

    { "@contains": { "array_col": "arr_value" } }
    
    Copy
  • Filtrer les lignes où la colonne TIMESTAMP timestamp_col est comprise entre 2024-11-19 et 2024-12-19 (inclus).

    { "@and": [
      { "@gte": { "timestamp_col": "2024-11-19" } },
      { "@lte": { "timestamp_col": "2024-12-19" } }
    ]}
    
    Copy
  • Composition de filtres avec des opérateurs logiques :

    // Rows where the "array_col" column contains "arr_value" and the "string_col" column equals "value":
    {
        "@and": [
          { "@contains": { "array_col": "arr_value" } },
          { "@eq": { "string_col": "value" } }
        ]
    }
    
    // Rows where the "string_col" column does not equal "value"
    {
      "@not": { "@eq": { "string_col": "value" } }
    }
    
    // Rows where the "array_col" column contains at least one of "val1", "val2", or "val3"
    {
      "@or": [
          { "@contains": { "array_col": "val1" } },
          { "@contains": { "array_col": "val1" } },
          { "@contains": { "array_col": "val1" } }
      ]
    }
    
    Copy

Renvoie

Renvoie OBJECT qui contient le résultat de votre requête auprès de votre service Cortex Search et un ID de requête unique. Voir l’exemple de sortie dans Exemples.

Notes sur l’utilisation

  • Cette fonction entraîne plus de latence que l’utilisation de Python API. Il est conçu à des fins de test/validation uniquement. Vous ne devez pas utiliser cette fonction pour traiter des requêtes de recherche dans une application d’utilisateur final qui nécessite une faible latence.

  • Cette fonction fonctionne uniquement sur les requêtes de type chaîne littérale. Il n’accepte pas un lot de données texte.

Exemples

Cet exemple interroge un service nommé sample_service avec une test query. L’exemple renvoie cinq résultats (au maximum) et inclut les données des colonnes col1 et col2.

SELECT
  SNOWFLAKE.CORTEX.SEARCH_PREVIEW (
      'mydb.mysch.sample_service',
      '{
          "query": "test query",
          "columns": ["col1", "col2"],
          "limit": 3
      }'
  );
Copy
{
  "results":[
      {"col1":"text", "col2":"text"},
      {"col1":"text", "col2":"text"},
      {"col1":"text", "col2":"text"}
  ],
  "request_id":"a27d1d85-e02c-4730-b320-74bf94f72d0d"
}