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?
Sie können die folgende Abfrage versuchen:
SELECT DISTINCT name FROM product WHERE name LIKE '%iced%tea%'
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:
Semantische Suche über die bereitgestellten Beispielwerte in Ihrem semantischen Modell.
Semantische Suche mit Cortex Search Services.
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:
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 );
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.
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 );`
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.
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