Mit QueryData können Sie mithilfe von Konversationssprache mit den Daten in Ihrer Datenbank interagieren und Daten-Agents erstellen. Mit QueryData werden Abfragen für Ihre Datenbank mithilfe von Kontextsets geschrieben. 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 aktuelles Guthaben?“ 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 Sie effektive Agent-Anwendungen erstellen 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": "T.\"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": "T.\"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, werden Wertesuchen verwendet, 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, Name oder ein City bezieht.
Der QueryData-Endpunkt in der Conversational Analytics API ist ein Agent-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.Um die Entitätsauflösung zu erzwingen und gleichzeitig die strikte Sicherheit auf Zeilenebene beizubehalten, können Sie parametrisierte sichere Ansichten (Parameterized Secure Views, PSVs) verwenden. Weitere Informationen finden Sie unter Zugriff auf Anwendungsdaten mit parametrisierten sicheren Ansichten sichern und steuern.