QueryData – Übersicht

Mit QueryData können Sie mithilfe von Konversationssprache mit den Daten in Ihrer Datenbank interagieren und Daten-Agents erstellen. QueryData erstellt Abfragen für Ihre Datenbank mithilfe von Kontextsets. Das sind Sammlungen von Code, die eindeutige Informationen zu Ihrer Datenbank enthalten. Mit diesem Kontext kann QueryData Fragen in natürlicher Sprache in genaue Abfragen für Ihre Zielanwendungsfälle übersetzen.

Wann sollte QueryData verwendet werden?

QueryData eignet sich ideal für Anwendungen wie:

  • Automatisierung des Kundenservice: Anfragen mit hohem Volumen wie „Wo ist meine Bestellung?“ oder „Wie hoch ist mein aktueller Kontostand?“ bearbeiten.
  • E-Commerce-Shopping-Assistenten: Nutzer können mit Anfragen in natürlicher Sprache wie „Zeige mir Laufschuhe unter 100 €“ durch große Produktkataloge navigieren.
  • Tools für den Außendienst: Damit können mobile Mitarbeiter in Echtzeit Inventarstände, die Verfügbarkeit von Ersatzteilen oder Details zu Servicetickets abfragen.

Funktionsweise von QueryData

Damit effektive Agent-Anwendungen erstellt werden können, muss QueryData Ihre Datenorganisation und Geschäftslogik verstehen. Sie stellen diese Informationen in Form eines Kontextsets bereit.

Sie definieren den Kontext in Dateien, die JSON-Objekte für jeden Kontexttyp enthalten. Sie erstellen diese Kontextdateien mit der Gemini CLI. Anschließend laden Sie die Kontextdatei in ein Kontextset hoch, das Sie in der Google Cloud-Konsole erstellen. So kann QueryData das spezifische Schema der Datenbank und die Geschäftslogik der Anwendung kennenlernen.

Die Kontextdatei sieht in etwa so aus:

{
  "templates": [
    {
      "nl_query": "Count Prague loan accounts",
      "sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" ='Prague'",
      "intent": "How many accounts associated with loans are located in the Prague region?",
      "manifest": "How many accounts associated with loans are located in a given city?",
      "parameterized": {
        "parameterized_intent": "How many accounts associated with loans are located in $1",
        "parameterized_sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = $1"
      }
    }
  ],
  "facets": [
    {
      "sql_snippet": "employee.\"A11\" BETWEEN 6000 AND 10000",
      "intent": "Average salary between 6000 and 10000",
      "manifest": "Average salary between a given number and a given number",
      "parameterized": {
         "parameterized_intent": "Average salary between $1 and $2",
         "parameterized_sql_snippet": "employee.\"A11\" BETWEEN $1 AND $2"
      }
    }
  ],
  "value_searches": [
    {
      "query": "SELECT $value as value, 'accounts.account_type' as columns, 'Account Type' as concept_type, 0 as distance, '{}'::text as context FROM \"accounts\" T WHERE T.\"account_type\" = $value",
      "concept_type": "Account Type",
      "description": "Exact match for account types"
    }
   ]
}

Wenn ein Endnutzer eine Frage in natürlicher Sprache stellt, priorisiert QueryData die Zuordnung der Frage zu den Vorlagen und Facetten, die vom Entwickler, der den Kontext kuratiert, geprüft wurden. Sobald QueryData eine Übereinstimmung findet, wird mit der ausgewählten Abfragevorlage und den Attributen eine Datenbankabfrage erstellt. Die Logik für den Kontextsatz führt dann diese Abfrage für die Datenbank aus, um genaue Ergebnisse zurückzugeben.

Es wird empfohlen, Wertesuchen in Ihrem Kontext zu definieren. Mit Wertesuchen kann der Agent Wertausdrücke bestimmten Werten zuordnen, die in den Spalten Ihrer Datenbank gespeichert sind. Dadurch wird das LLM auf Ihre tatsächlichen Daten gestützt, was dazu beiträgt, Unklarheiten zu beseitigen, z. B. ob sich ein Begriff auf einen District-Namen oder eine City bezieht.

Wenn der Agent keine passende Vorlage findet, verwendet er Wertesuchen, um natürlichsprachliche Formulierungen bestimmten Werten zuzuordnen, die in Ihren Datenbankspalten gespeichert sind. Dadurch wird das LLM auf Ihre tatsächlichen Daten gestützt, was dazu beiträgt, Unklarheiten zu beseitigen, z. B. ob sich ein Begriff auf ein District, ein Name oder ein City bezieht.

Der QueryData-Endpunkt in der konversationellen Analyse API ist ein agentisches Tool, das die programmatische Integration in Ihre Anwendungen ermöglicht, um SQL-Abfrage aus Fragen in natürlicher Sprache zu generieren. In einer dialogorientierten Anwendung muss der QueryData-Endpunkt innerhalb des Frameworks verwendet werden, das den Unterhaltungsverlauf und den Kontext verwaltet.

Nächste Schritte