Snowflake-Referenz für AI-Observability

Dieses Dokument bietet eine umfassende Referenz für die Verwendung von Snowflake Cortex AI-Observability zur Bewertung und Überwachung der Leistung Ihrer generativen AI-Anwendungen.

Er deckt die folgenden Konzepte ab:

  • Datensätze und Attribute

  • Bewertungskennzahlen

  • Läufe

  • Zugriffssteuerung und Speicher

Datensatz und Attribute

Ein Datensatz ist eine Reihe von Eingaben, die Sie zum Testen der Anwendung verwenden. Er kann auch eine Reihe von erwarteten Ausgaben (die Ground Truth) enthalten.

Sie können das TruLens Python SDK verwenden, um den Datensatz entweder als Snowflake-Tabelle oder als Pandas-Dataframe anzugeben. Jede Spalte im Datensatz muss einem der folgenden reservierten Attribute zugeordnet werden:

Reservierte Attribute

Eingabeattribut

Beschreibung

RECORD_ROOT.INPUT

Eingabeaufforderung an das LLM.

Typ: Zeichenfolge

RECORD_ROOT.INPUT_ID

Eindeutiger Bezeichner für die Eingabeaufforderung.

Wenn Sie keine Eingabe-ID angeben, wird automatisch eine ID generiert und jeder Eingabe zugewiesen.

Typ: Zeichenfolge

RETRIEVAL.QUERY_TEXT

Abfrage eines Benutzers für eine RAG-Anwendung

Typ: Zeichenfolge

RECORD_ROOT.GROUND_TRUTH_OUTPUT

Erwartete Antwort auf die Eingabeaufforderung.

Typ: Zeichenfolge

Um die Anwendung zu instrumentieren, müssen Sie die Eingabe- und Ausgabeparameter für die instrumentierte Funktion (oder Methode) den entsprechenden Eingabe- und Ausgabeattributen zuordnen. Verwenden Sie den @instrument-Decorator, um die Parameter zuzuordnen und die Metriken zu berechnen. Zusätzlich zu den Eingabeattributen, die als Teil des Datensatzes angegeben wurden, können Sie auch die folgenden Ausgabeattribute verwenden, um die entsprechenden Funktionen zu instrumentieren:

Ausgabeattribute

Ausgabeattribute

Beschreibung

RETRIEVAL.RETRIEVED_CONTEXTS

Die vom LLM erzeugte Ausgabe.

Typ: Liste [Zeichenfolge]

RECORD_ROOT.OUTPUT

Erzeugte Antwort vom LLM.

Typ: Zeichenfolge

Bewertungskennzahlen

Bewertungskennzahlen bieten eine quantifizierbare Möglichkeit, die Genauigkeit und Leistung Ihrer Anwendung zu messen. Diese Metriken werden anhand der spezifischen Eingaben in die Anwendung, der vom LLM generierten Ausgaben und jeglicher Zwischeninformationen (wie z. B. die von einer RAG-Anwendung abgerufenen Ergebnisse) berechnet. Sie können die Metriken auch anhand eines Ground Truth-Datensatzes berechnen.

Sie können die Metriken mit dem „LLM-as-a-judge“-Ansatz berechnen. Bei diesem Ansatz wird ein LLM verwendet, um eine Punktzahl (zwischen 0 und 1) mit einer Erklärung für die Ausgabe der Anwendung basierend auf den bereitgestellten Informationen zu generieren. Sie können jedes LLM, das in Cortex-AI verfügbar ist, als Richter auswählen. Wenn kein LLM-Richter angegeben ist, wird llama3.1-70b als Standardrichter verwendet. AI-Observability unterstützt eine Vielzahl von Bewertungskennzahlen.

Kontextrelevanz

Die Kontextrelevanz bestimmt, ob der vom Retriever oder dem Suchdienst abgerufene Kontext für die Abfrage des Benutzers relevant ist. Angesichts der Abfrage des Benutzers und des abgerufenen Kontexts wird ein LLM-Richter verwendet, um die Relevanz des abgerufenen Kontexts auf der Grundlage der Abfrage zu bestimmen.

Erforderliche Attribute:

  • RETRIEVAL.QUERY_TEXT: Abfrage eines Benutzers in einer RAG- oder Suchanwendung

  • RETRIEVAL.RETRIEVED_CONTEXTS: Vom Suchdienst oder Retriever abgerufener Kontext

Fundiertheit

Die Fundiertheit bestimmt, ob die generierte Antwort durch den abgerufenen Kontext des Retrievers oder des Suchdienstes unterstützt wird und darin verankert ist. Angesichts der generierten Antwort und des abgerufenen Kontexts wird ein LLM-Richter eingesetzt, um die Fundiertheit zu bestimmen. Die zugrunde liegende Implementierung verwendet die Gedankenkette bei der Generierung der Fundiertheit-Punktzahl.

Erforderliche Attribute:

  • RETRIEVAL.RETRIEVED_CONTEXTS: Abfrage eines Benutzers in einer RAG- oder Suchanwendung

  • RECORD_ROOT.OUTPUT: Die endgültige Antwort, die vom LLM generiert wird

Antwortrelevanz

Die Antwortrelevanz bestimmt, ob die generierte Antwort für die Abfrage des Benutzers relevant ist. Anhand der Abfrage des Benutzers und der generierten Antwort wird mit Hilfe eines LLM-Richters bestimmt, wie relevant die Antwort für die Beantwortung der Abfrage des Benutzers ist. Beachten Sie, dass dies nicht auf der Referenz der Ground Truth beruht und daher nicht gleichbedeutend mit der Bewertung der Korrektheit der Antwort ist.

Erforderliche Attribute:

  • RECORD_ROOT.INPUT: Abfrage eines Benutzers in einer RAG- oder Suchanwendung

  • RECORD_ROOT.OUTPUT: Die endgültige Antwort, die vom LLM generiert wird

Korrektheit

Die Korrektheit bestimmt, wie sehr die generierte Antwort mit der Ground Truth übereinstimmt. Eine höhere Korrektheit-Punktzahl bedeutet eine genauere Antwort mit einer größeren Übereinstimmung mit der Ground Truth.

Erforderliche Attribute:

  • RECORD_ROOT.INPUT: Abfrage oder Eingabeaufforderung des Benutzers an das LLM

  • RECORD_ROOT.GROUND_TRUTH_OUTPUT: Erwartete Antwort basierend auf der Abfrage des Benutzers

  • RECORD_ROOT.OUTPUT: Antwort, die vom LLM generiert wird

Kohärenz

Die Kohärenz misst, ob die generierte Antwort des Modells kohärent ist und keine logischen Lücken, Ungereimtheiten oder Widersprüche enthält. Eine höhere Kohärenz-Punktzahl bedeutet eine sehr kohärente Antwort.

Erforderliche Attribute:

  • RECORD_ROOT.OUTPUT: Antwort, die vom LLM generiert wird

Kosten und Latenzzeit

Kosten für die Nutzung

Die Kosten werden für jeden LLM-Aufruf berechnet, der sich auf Cortex LLMs stützt, und zwar auf der Grundlage der Token-Nutzungsinformationen (prompt_tokens für Eingabe und completion_tokens für Ausgabe), die von der Funktion COMPLETE (SNOWFLAKE.CORTEX) zurückgegeben werden. Als Teil der Ablaufverfolgung können Sie die Token-Nutzung und die entsprechenden Kosten, die mit jedem LLM-Aufruf verbunden sind, einsehen.

Latenz

Die Latenzzeit wird durch Messung der Zeit ermittelt, die für jeden Funktionsaufruf in der Anwendung benötigt wird. Ablaufverfolgungen bieten einen detaillierten Einblick in die Latenz jeder Funktion, die mit TruLens SDK instrumentiert wurde. Die Latenzen der einzelnen Funktionen werden aggregiert, um die Gesamtlatenz der gesamten Anwendung für jede Eingabe zu berechnen. Jeder Durchlauf liefert auch eine durchschnittliche Latenzzeit für alle Eingaben, um einen einfachen Vergleich über mehrere Anwendungskonfigurationen hinweg zu ermöglichen.

Läufe

Ein Lauf ist eine Bewertungsaufgabe, mit der Sie die Genauigkeit und Leistung einer Anwendung messen können. Er hilft Ihnen bei der Auswahl der besten Anwendungskonfiguration. Die Entwicklung einer generativen AI-Anwendung beinhaltet das Experimentieren mit verschiedenen LLMs, Eingabeaufforderungen und Inferenzparametern. Sie messen die Genauigkeit, Latenz und Nutzung, um die optimale Kombination für die Produktion zu finden. Jede Kombination entspricht einer Anwendungsversion.

Ein Lauf verwendet den Datensatz, den Sie angeben, um eine Batch-Auswertung für eine Anwendungsversion durchzuführen. Sie können mehrere Läufe mit demselben Datensatz für verschiedene Versionen auslösen. Sie können die Unterschiede zwischen den Versionen auf aggregierter und auf Datensatzebene vergleichen, um Verbesserungen zu ermitteln und die beste Version für die Bereitstellung auszuwählen.

Das Erstellen und Ausführen eines Laufs umfasst vier Hauptschritte:

  1. Erstellung: Nachdem Sie eine Anwendung und eine Version erstellt haben, fügen Sie einen neuen Lauf für die Version hinzu, indem Sie einen Datensatz angeben.

  2. Aufruf: Starten Sie den Lauf, der Eingaben aus dem Datensatz liest, die Anwendung für jede Eingabe aufruft, Ablaufverfolgungen erzeugt und die Informationen in Ihrem Snowflake-Konto speichert.

  3. Berechnung: Nach dem Aufruf lösen Sie die Berechnung aus, indem Sie die zu berechnenden Metriken angeben. Sie können mehrere Berechnungen auslösen und später neue Metriken für einen bestehenden Lauf hinzufügen.

  4. Visualisierung: Visualisieren Sie die Laufergebnisse in Snowsight, indem Sie sich bei Ihrem Snowflake-Konto anmelden. Die Läufe sind innerhalb ihrer jeweiligen Anwendungen in AI & ML unter Evaluations aufgeführt.

Sie können jeden Lauf beschriften, um vergleichbare Läufe zwischen verschiedenen Anwendungsversionen mit demselben Datensatz zu kategorisieren. Verwenden Sie die Beschriftungen zum Verwalten und Filtern der Läufe.

Ein Lauf kann einen der folgenden Status haben:

Status Ausführen

Status

Beschreibung

CREATED

Der Lauf wurde erstellt, aber nicht gestartet.

INVOCATION_IN_PROGRESS

Der Laufaufruf ist gerade dabei, die Ausgabe und die Ablaufverfolgung zu erzeugen.

INVOCATION_COMPLETED

Der Laufaufruf wurde mit allen Ausgaben und Ablaufverfolgungen abgeschlossen.

INVOCATION_PARTIALLY_COMPLETED

Der Laufaufruf ist aufgrund von Fehlern beim Anwendungsaufruf und bei der Ablaufverfolgung teilweise abgeschlossen.

COMPUTATION_IN_PROGRESS

Die Berechnung der Metrik ist im Gange.

COMPLETED

Die Berechnung der Metrik wird mit detaillierten Ausgaben und Ablaufverfolgungen abgeschlossen.

PARTIALLY_COMPLETED

Der Lauf wird aufgrund von Fehlern bei der Berechnung der Metrik teilweise abgeschlossen.

CANCELLED

Der Lauf wurde storniert.

Zugriffssteuerung und Speicher

Erforderliche Berechtigungen

Sie benötigen die folgenden Berechtigungen, um AI-Observability zu verwenden.

  • Um AI-Observability zu verwenden, muss Ihre Rolle die Datenbankrolle CORTEX_USER haben. Die Rolle CORTEX_USER ist für Datenbankfunktionen erforderlich. Informationen zum Gewähren und Entziehen dieser Rolle finden Sie unter Erforderliche Berechtigungen.

  • Um eine Anwendung zu registrieren, muss Ihre Rolle über die Berechtigung CREATE EXTERNAL AGENT für das Schema verfügen. Weitere Informationen dazu finden Sie unter Anwendungen.

  • Um Läufe zu erstellen und auszuführen, muss Ihre Rolle über die Berechtigung USAGE für das für die Anwendung erstellte Objekt EXTERNAL AGENT und die Anwendungsrolle AI_OBSERVABILITY_EVENTS_LOOKUP oder AI_OBSERVABILITY_ADMIN verfügen. Weitere Informationen dazu finden Sie unter Läufe und Observability-Daten.

Das folgende Beispiel verwendet die Rolle ACCOUNTADMIN, um dem Benutzer some_user folgende Rechte zu gewähren:

  • Die Datenbankrolle CORTEX_USER

  • Die Anwendungsrolle AI_OBSERVABILITY_EVENTS_LOOKUP

  • Die Berechtigung CREATEEXTERNALAGENT für das Schema app_schema

USE ROLE ACCOUNTADMIN;

CREATE ROLE observability_user_role;

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE observability_user_role;

GRANT APPLICATION ROLE SNOWFLAKE.AI_OBSERVABILITY_EVENTS_LOOKUP TO ROLE observability_user_role;

GRANT CREATE EXTERNAL AGENT ON SCHEMA app_schema TO ROLE observability_user_role;

GRANT ROLE observability_user_role TO USER some_user;
Copy

Im vorangegangenen Beispiel wurde die Rolle observability_user_role verwendet, um die Berechtigungen für some_user zu erteilen.

Anwendungen

Wenn Sie eine Anwendung zur Evaluierung erstellen, wird ein EXTERNAL AGENT-Objekt erstellt, das die Anwendung in Snowflake darstellt. Die Rolle, die zum Erstellen und Ändern einer Anwendung erforderlich ist, muss die folgenden Anforderungen an die Zugriffssteuerung erfüllen.

Eine Rolle, mit der Sie eine Anwendung erstellen, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

OWNERSHIP

Externer Agent

OWNERSHIP ist eine spezielle Berechtigung für ein Objekt, das automatisch der Rolle zugewiesen wird, die das Objekt erstellt hat, aber von der besitzenden Rolle mit dem Befehl GRANTOWNERSHIP (oder einer beliebigen Rolle mit der Berechtigung MANAGEGRANTS) auch auf eine andere Rolle übertragen werden kann.

CREATE EXTERNAL AGENT

Schema

USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen.

Das Ändern und Löschen der Anwendung erfordert die Berechtigung OWNERSHIP für das Objekt EXTERNAL AGENT.

Wenn die Rolle eines Benutzers USAGE- oder OWNERSHIP- Berechtigungen für eine Anwendung (EXTERNAL AGENT) hat, erscheint die Anwendung in Evaluations unter AI & ML in Snowsight.

Läufe

Eine Rolle, die zum Hinzufügen, Ändern oder Löschen eines Laufs zu einer Anwendung verwendet wird, muss über die Berechtigung USAGE für das Objekt EXTERNAL AGENT verfügen, das die Anwendung in Snowflake darstellt.

Beim Löschen eines Laufs werden die mit dem Lauf verbundenen Metadaten gelöscht. Die im Rahmen des Laufs erstellten Datensätze werden nicht gelöscht und bleiben gespeichert. Weitere Informationen zur Speicherung der Aufzeichnungen und Ablaufverfolgung finden Sie unter Observability-Daten.

Anweisungen zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Anzahl von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen. Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Elementen finden Sie unter Übersicht zur Zugriffssteuerung.

LLMs als Richter

AI-Observability verwendet Cortex LLMs als Richter, um die Metriken für die Bewertung Ihrer Anwendungen zu berechnen. Um diese Metriken erfolgreich berechnen zu können, benötigen Sie Berechtigungen für den Zugriff auf Cortex-LLMs. Um Benutzerrollen Zugriff auf Cortex-LLMs zu gewähren, lesen Sie bitte die erforderlichen Berechtigungen. Der Benutzer muss Zugriff auf das Modell haben, das als LLM-Richter konfiguriert ist. Das Standardmodell für LLM-Richter ist llama3.1-70b. Das Standard LLM-Richtermodell kann sich in Zukunft noch ändern.

Observability-Daten

AI-Observability-Daten sind Datensätze, die Eingaben, Ausgaben, Bewertungsergebnisse und zugehörige Ablaufverfolgungen für Ihre generativen AI-Anwendungen enthalten. Alle Datensätze werden in einer speziellen Ereignistabelle AI_OBSERVABILITY_EVENTS in Ihrem Konto unter dem Schema SNOWFLAKE.LOCAL gespeichert.

Die in die Ereignistabelle aufgenommenen AI-Observability-Daten können nicht geändert werden. Administratoren mit der Anwendungsrolle AI_OBSERVABILITY_ADMIN haben exklusiven Zugriff auf das Löschen der Daten in der Ereignistabelle SNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTS.

Auf die AI-Observability-Daten kann mit dem Trulens Python-SDK oder mit Snowsight zugegriffen werden. Die folgenden Berechtigungen sind erforderlich, um die Datensätze für eine Anwendung und die zugehörigen Läufe anzuzeigen:

  • Die Rolle des Benutzers muss die Anwendungsrolle SNOWFLAKE.AI_OBSERVABILITY_ADMIN oder SNOWFLAKE.AI_OBSERVABILITY_EVENTS_LOOKUP haben

  • Die Benutzerrolle muss über die Berechtigung USAGE für das Objekt EXTERNAL AGENT verfügen, das die Anwendung darstellt.

Um beispielsweise die Läufe für eine extern instrumentierte RAG-Anwendung anzuzeigen, benötigt die Benutzerrolle die Berechtigung USAGE auf „my-db.my-schema.rag-application1“, wobei rag-application1 das EXTERNAL AGENT-Objekt ist, das die externe RAG-Anwendung in Snowflake darstellt.

Die mit Läufen und externen Agenten verbundenen Metadaten (wie Laufname, Beschreibung, Datensatzname usw.) werden als Metadaten klassifiziert.