Die literale Suche zur Optimierung der Antworten von Cortex Analyst verbessern

In diesem Thema wird beschrieben, wie Sie die Suche nach literalen Zeichenfolgen verbessern können, damit Cortex Analyst genauere SQL-Abfragen erstellen kann. Das Schreiben der richtigen SQL-Abfrage zur Beantwortung einer Frage erfordert manchmal die Kenntnis der genauen Literalwerte, nach denen gefiltert werden soll. Da diese Werte nicht immer direkt aus der Frage extrahiert werden können, kann eine Art Suche erforderlich sein.

Wenn ein Benutzer zum Beispiel eine Frage wie diese stellt:

What was my overall sales of iced tea in Q1?
Copy

Sie können die folgende Abfrage versuchen:

SELECT DISTINCT name FROM product WHERE name LIKE '%iced%tea%'
Copy

Wenn Sie diesen Prozess jemals selbst durchlaufen haben, wissen Sie, dass dies keine perfekte Lösung ist. Diese Abfrage zeigt Ihnen zum Beispiel keine Produkte mit dem Namen „Ice Tea“, aber sie zeigt Ihnen „spiced tea“.

Cortex Analyst bietet zwei Lösungen, um die Verwendung von Literalen zu verbessern:

An dieser Stelle kann die Integration mit Cortex Search helfen. Cortex Search ist ein Feature, das eine qualitativ hochwertige „unscharfe“ Suche mit geringer Latenz über Textdaten ermöglicht. Sie können einen Cortex Search Service erstellen, der eine semantische Suche über die zugrunde liegende Datenbankspalte durchführt, um alle literalen Werte zu finden, die Cortex Analyst in der SQL-Abfrage verwenden muss, um die Frage des Benutzers zu beantworten.

Semantische Suche über Beispielwerte

Für Dimensionen mit relativ geringer Kardinalität (ca. 1–10 unterschiedliche Werte) empfiehlt sich die Verwendung einer Beispielwertsuche, bei der genügend Beispielwerte angegeben werden, um die Struktur der Antwort für die Dimension zu zeigen. Diese Lösung erfordert keinen zusätzlichen Speicherplatz, abgesehen von der minimalen Vergrößerung des semantischen Modells.

Bevor Cortex Analyst eine SQL Abfrage für Ihre Frage erstellt, führt es eine semantische Ähnlichkeitssuche zwischen Ihrer Frage und den zur Verfügung gestellten Beispielwerten durch, um alle geeigneten Literalwerte zu identifizieren, die zum Schreiben Ihrer Abfrage benötigt werden. Beachten Sie, dass die semantische Ähnlichkeitssuche möglicherweise relevantere Literale findet als die oben erwähnte Abfrage mit Fuzzy-String-Matching.

Nur eine festgelegte Menge von abgerufenen Beispielen wird auf LLM als Literale präsentiert, die zum Schreiben der SQL-Abfrage benötigt werden können. Das heißt, wenn Sie weitere Beispiele hinzufügen, besteht nicht die Gefahr, dass Sie das LLM-Kontextfenster überschreiten.

Semantische Suche mit Cortex Search Service

Für Dimensionen mit höherer Kardinalität (mehr als 10 unterschiedliche Werte) oder Dimensionen, deren Werte sich häufig ändern, können Sie einen Cortex Search Service verwenden, um die Literale zu durchsuchen. Diese Lösung reduziert die Datenduplizierung und sorgt dafür, dass Ihr semantisches Modell übersichtlich bleibt.

Bemerkung

Cortex Search Services sind mit zusätzlichen Speicher- und Computekosten verbunden. Weitere Details dazu finden Sie unter Hinweise zu Kosten.

In dieser Vorschau wird nur ein einziger Cortex Search Service pro logischer Dimension unterstützt.

Cortex Search Service einrichten

Die folgenden Schritte zeigen Ihnen, wie Sie einen Cortex Search Service für eine logische Dimension in Ihrem semantischen Modell von Cortex Analyst einrichten:

  1. Dynamische Tabelle erstellen

    USE DATABASE my_database;
    USE SCHEMA my_schema;
    
    CREATE OR REPLACE DYNAMIC TABLE my_logical_dimension_landing_table
      WAREHOUSE = xsmall
      TARGET_LAG = '1 hour'
      AS (
          SELECT DISTINCT my_column AS my_dimension FROM my_table
      );
    
    Copy

    Bemerkung

    Hier wird eine dynamische Tabelle verwendet, da DISTINCT derzeit von den Cortex Search Services nicht gut unterstützt wird. Sie können auch eine materialisierte Ansicht verwenden, wenn dies für Ihren Anwendungsfall besser geeignet ist. Einen Vergleich von dynamischen Tabellen und materialisierten Ansichten finden Sie unter Ansichten, materialisierte Ansichten und dynamische Tabellen.

  2. Cortex Search Service erstellen

    CREATE OR REPLACE CORTEX SEARCH SERVICE my_logical_dimension_search_service
      ON my_dimension
      WAREHOUSE = xsmall
      TARGET_LAG = '1 hour'
      AS (
          SELECT my_dimension FROM my_logical_dimension_landing_table
      );`
    
    Copy

    Anforderungen für Cortex Search Service

    • Der Dienst muss auf eine Spalte mit dem gleichen Namen wie die logische Dimension indiziert sein.

    • Die Datenbank und das Schema des Search Services müssen mit denen der physischen Tabelle oder Ansicht übereinstimmen, die die Dimension enthält.

  3. Nehmen Sie den Cortex Search Service in Ihr semantisches Modell auf, indem Sie den folgenden YAML-Ausschnitt verwenden:

    tables:
    
      - name: my_table
    
        base_table:
          database: my_database
          schema: my_schema
          table: my_table
    
        dimensions:
          - name: my_dimension
            expr: my_column
            cortex_search_service_name: my_logical_dimension_search_service
    
    Copy