Questa pagina introduce la ricerca con risposta e i follow-up per Gemini Enterprise e
mostra come implementarla utilizzando le chiamate ai metodi.
La ricerca con risposta e follow-up si basa sul metodo di risposta. Il metodo di risposta
dispone anche di alcune importanti funzionalità aggiuntive, come la capacità di gestire query complesse.
Termine chiave  :in questa pagina, il termine risposta  si riferisce a una risposta generata dall'AI
basata sui risultati di ricerca di una query. È essenzialmente uguale al
riepilogo , che può essere generato dal metodo di ricerca. Funzionalità del metodo di risposta 
Le caratteristiche principali del metodo di risposta sono le seguenti:
La possibilità di generare risposte a query complesse. Ad esempio, il metodo
answer può suddividere le query composte, come la seguente,
in più query più piccole per restituire risultati migliori che vengono utilizzati per
fornire risposte migliori:
"Quali sono le entrate rispettive di Google Cloud e Google Ads nel 2024?" 
"Dopo quanti anni dalla sua fondazione, Google ha raggiunto 1 miliardo di dollari
di entrate?" 
 La possibilità di combinare la ricerca e la generazione di risposte in una conversazione
a più turni chiamando il metodo di risposta in ogni turno.
La possibilità di accoppiarsi con il metodo di ricerca per ridurre la latenza della ricerca. Puoi
chiamare separatamente il metodo di ricerca e il metodo di risposta e visualizzare
i risultati di ricerca e le risposte in iframe diversi in momenti diversi. Ciò significa che puoi mostrare ai tuoi utenti i risultati di ricerca (i 10 link blu) in millisecondi. Non devi attendere la generazione delle risposte prima di
mostrare i risultati di ricerca.
 
Le funzionalità di risposta e follow-up possono essere suddivise in tre fasi della query,
ricerca e risposta:
Quando utilizzare Rispondi e quando utilizzare Cerca 
Gemini Enterprise dispone di due metodi utilizzati per eseguire query sulle app. Hanno funzionalità diverse ma
sovrapposte.
Utilizza il metodo risposta  quando:
Vuoi una risposta (o un riepilogo) dei risultati di ricerca generata dall'AI.
Vuoi effettuare ricerche in più passaggi, ovvero ricerche che mantengono il contesto per consentire
domande aggiuntive.
 
Utilizza il metodo search  quando:
Ti servono solo i risultati di ricerca, non una risposta generata.
Vuoi che vengano restituiti più di dieci risultati di ricerca ("link blu").
Hai uno dei seguenti requisiti:
I tuoi embedding 
Controlli sinonimi o reindirizzamento 
Facet 
Codici paese dell'utente 
  
Utilizza insieme i metodi di risposta e di ricerca quando:
Vuoi restituire più di dieci risultati di ricerca e  vuoi una risposta generata.
Hai problemi di latenza e vuoi restituire e visualizzare rapidamente i risultati di ricerca
prima che venga restituita la risposta generata.
 
Funzionalità della fase di query 
La funzionalità di risposta e follow-up supporta l'elaborazione delle query in linguaggio naturale.
Questa sezione descrive e illustra le varie opzioni per la riformulazione e la classificazione delle query.
Riformulazione delle query 
La riformulazione delle query è attiva per impostazione predefinita. Questa funzionalità sceglie automaticamente il modo migliore per riformulare le query
per migliorare i risultati di ricerca. Questa funzionalità può anche gestire
query che non richiedono una riformulazione.
Suddividi le query complesse in più query ed esegui query secondarie sincrone.
Ad esempio, una query complessa viene suddivisa in quattro query più piccole e più semplici.
    
      Input utente 
      Query secondarie create dalla query complessa 
     
    
      Quali lavori e hobby hanno in comune Andie Ram e Arnaud
                            Clément? 
      
        
          Andie Ram occupation 
          Arnaud Clément occupation 
          Hobby di Andie Ram 
          Hobby di Arnaud Clément 
         
       
     
Sintetizzare le query multi-turno per rendere le domande aggiuntive consapevoli del contesto
e con stato.
Ad esempio, le query sintetizzate dall'input utente'utente a ogni turno potrebbero avere questo aspetto:
    
      Input utente 
      Query sintetizzata 
     
    
      Turno 1: laptop per la scuola 
      laptop per la scuola 
     
    
      Turno 2: non mac 
      laptop per la scuola non mac 
     
    
      Turno 3: schermo più grande e ho bisogno anche di tastiera e
mouse wireless 
      laptop con schermo più grande per la scuola, non Mac, con tastiera e
mouse wireless 
     
    
      Turno 4: e uno zaino 
      laptop con schermo più grande per la scuola non mac con tastiera e
mouse wireless e uno zaino 
     
Semplifica le query lunghe per migliorare il recupero.
Ad esempio, una query lunga viene abbreviata in una query semplice.
    
      Input utente 
      Query semplificata 
     
    
       Sto cercando di capire perché il pulsante "Aggiungi al carrello"
      sul nostro sito web non funziona correttamente. Sembra che quando un
      utente fa clic sul pulsante, l'articolo non viene aggiunto al carrello e
      riceve un messaggio di errore. Ho controllato il codice e sembra
      corretto, quindi non so quale possa essere il problema. Puoi aiutarmi a risolvere questo problema? 
      Il pulsante "Aggiungi al carrello" non funziona sul sito web. 
     
Eseguire ragionamenti multi-step
Termini chiave:  i passaggi  (chiamati anche hop ) vengono
utilizzati per rispondere a domande complesse. La domanda è suddivisa in
più passaggi di recupero e inferenza delle informazioni.
 
Il ragionamento multi-step si basa sul paradigma ReAct (reason + act), che
consente agli LLM di risolvere attività complesse utilizzando il ragionamento in linguaggio naturale.
Per impostazione predefinita, il numero massimo di passaggi è cinque.
Ad esempio:
    
      Input utente 
       Due passaggi per generare la risposta 
     
    
      Dopo quanti anni dalla sua fondazione, Google ha raggiunto 1
      miliardo di dollari di entrate? 
      Passaggio 1: Step 2:  
 
Classificazione delle query 
Le opzioni di classificazione delle query servono a identificare le query ostili e quelle che non cercano risposte. Per impostazione predefinita, le opzioni di classificazione delle query sono disattivate.
Per saperne di più sulle query ostili e che non cercano risposte, consulta Ignora le query ostili  e Ignora le query che non cercano riepiloghi .
Funzionalità della fase di ricerca 
Per la ricerca, il metodo di risposta ha le stesse opzioni del metodo di ricerca. Ad esempio:
Funzionalità della fase di risposta 
Durante la fase di risposta, quando le risposte vengono generate dai risultati di ricerca, puoi attivare le stesse funzionalità del metodo di ricerca. Ad esempio:
Le funzionalità aggiuntive della fase di risposta non disponibili nel metodo di ricerca
sono:
Ottenere un punteggio di supporto per ogni affermazione (frase nella risposta generata).
Il punteggio di supporto è un valore in virgola mobile compreso nell'intervallo [0,1] che
indica quanto l'affermazione è basata sui dati nel datastore. Per ulteriori
informazioni, vedi Punteggi di supporto per il ritorno a terra .
Ottenere un punteggio di assistenza aggregato per la risposta. Il punteggio di supporto
indica in che misura la risposta si basa sui dati nel datastore. Per
maggiori informazioni, consulta Punteggi di supporto per la messa a terra dei resi .
Restituisci solo risposte ben documentate. Puoi scegliere di restituire solo le risposte che soddisfano una determinata soglia del punteggio di supporto. Per ulteriori informazioni,
vedi Mostrare solo risposte ben documentate .
Aggiungi informazioni di personalizzazione alle query in modo che le risposte possano essere
personalizzate per i singoli utenti. Per ulteriori informazioni, vedi Personalizzare
le risposte .
 
Per ricevere risposte multimodali che includono grafici o immagini oltre al testo,
sono disponibili le seguenti opzioni:
Ricevere risposte che includono grafici che tracciano i dati contenuti nelle risposte. Per saperne di più, vedi Generare grafici per le risposte .
Recupero delle immagini dal datastore. Se l'datastore contiene immagini,
il metodo di risposta può restituire un'immagine nella risposta. Le immagini dell'datastore possono essere restituite anche nei riferimenti se vengono richieste le citazioni. Per ulteriori informazioni, consulta Recuperare immagini esistenti dall'archivio
dati .
 
Cerca e rispondi (base) 
Il seguente comando mostra come chiamare il metodo answer  e restituire una risposta generata e un elenco di risultati di ricerca, con link alle fonti.
Questo comando mostra solo l'input richiesto. Le opzioni vengono lasciate
ai valori predefiniti.
  
  
  
  
  
    
  
  
  REST Per cercare e ottenere risultati con una risposta generata:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "}
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY  
Esempio di comando e risultato parziale 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{"query": { "text": "Which database is faster, bigquery or spanner?"}}'
         What is the performance of BigQuery? "
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/9ab3ef91bcfde1fcd091efe9df7c699c",
                  "uri": "https://cloud.google.com/bigquery/docs/best-practices-performance-overview",
                  "title": "Introduction to optimizing query performance | BigQuery | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "After a query begins execution, \u003cb\u003eBigQuery\u003c/b\u003e calculates how many slots each query stage uses based on the stage size and complexity and the number of slots ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/4e545c5cb69b06b251265114d9099cb4",
                  "uri": "https://cloud.google.com/bigquery/docs/query-insights",
                  "title": "Get query performance insights | BigQuery | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "This document describes how to use the query execution graph to diagnose query \u003cb\u003eperformance\u003c/b\u003e issues, and to see query \u003cb\u003eperformance\u003c/b\u003e insights. \u003cb\u003eBigQuery\u003c/b\u003e offers ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d34672d877eefe596f9c7d1a3d7076b1",
                  "uri": "https://cloud.google.com/bigquery/docs/best-practices-performance-compute",
                  "title": "Optimize query computation | BigQuery | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "After addressing the query \u003cb\u003eperformance\u003c/b\u003e insights, you can further optimize your query by performing the following tasks: Reduce data that is to be processed ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/75ce2f05833683e60ddc21a11ce0466f",
                  "uri": "https://cloud.google.com/blog/products/data-analytics/troubleshoot-and-optimize-your-bigquery-analytics-queries-with-query-execution-graph/",
                  "title": "Troubleshoot and optimize your BigQuery analytics queries with query execution graph | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "Since query \u003cb\u003eperformance\u003c/b\u003e is multi-faceted, \u003cb\u003eperformance\u003c/b\u003e insights might only provide a partial picture of the overall query \u003cb\u003eperformance\u003c/b\u003e. Execution graph. When ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          },
          {
            "searchAction": {
              "query": " What is the performance of Spanner? "
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f3d036b60379873acf7c73081c5e5b5c",
                  "uri": "https://cloud.google.com/spanner/docs/performance",
                  "title": "Performance overview | Spanner | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "These \u003cb\u003eperformance\u003c/b\u003e improvements should result in higher throughput and better latency in \u003cb\u003eSpanner\u003c/b\u003e nodes in both regional and multi-region instance configurations.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/422496248ade354c73b4c906b8eb9b5f",
                  "uri": "https://cloud.google.com/blog/products/databases/announcing-cloud-spanner-price-performance-updates",
                  "title": "Announcing Cloud Spanner price-performance updates | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "Alongside lower costs, Cloud \u003cb\u003eSpanner\u003c/b\u003e provides single-digit ms latencies and strong consistency across multiple availability zones in the same region.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/53c2a1a6990480ba4aa05cc6b4404562",
                  "uri": "https://cloud.google.com/blog/topics/developers-practitioners/understanding-cloud-spanner-performance-metrics-scale-key-visualizer",
                  "title": "Understanding Cloud Spanner performance metrics at scale with Key Visualizer | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "Designed for \u003cb\u003eperformance\u003c/b\u003e tuning and instance sizing, you can use Key Visualizer today in the web-based Cloud Console for all \u003cb\u003eSpanner\u003c/b\u003e databases at no additional ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/a6501ecd5d6391e3ade49097bab0ad3a",
                  "uri": "https://cloud.google.com/blog/products/databases/a-technical-overview-of-cloud-spanners-query-optimizer",
                  "title": "A technical overview of Cloud Spanner's query optimizer | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "... performance. Typically, a join will ... Google is continuously improving out-of-the-box \u003cb\u003eperformance of Spanner\u003c/b\u003e and reducing the need for manual tuning.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "answerQueryToken": "NMwKDAj1_d62BhC72_X_AhIkNjZkN2I4YWEtMDAwMC0yYTdiLWIxMmMtMDg5ZTA4MjhlNzY0"
}
 In questo esempio, la query è suddivisa in parti: "Qual è il rendimento di Spanner?" e "Qual è il rendimento di BigQuery?"
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Comandi della fase di query 
Questa sezione mostra come specificare le opzioni per la fase di query della chiamata al metodo
answer .
Cerca e rispondi (parafrasi disattivata) 
Il seguente comando mostra come chiamare il metodo answer  e
restituisce una risposta generata e un elenco di risultati di ricerca. La risposta potrebbe essere
diversa dalla precedente perché l'opzione di riformulazione è disattivata.
  
  
  
  
  
    
  
  
  REST Per cercare e ottenere risultati con una risposta generata senza applicare la riformulazione della query, segui questi passaggi:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "queryUnderstandingSpec": {
           "queryRephraserSpec": {
              "disable": true 
        }
    }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY  
Esempio di comando e risultato parziale 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{
      "query": { "text": "Which database is faster, bigquery or spanner?"},
      "queryUnderstandingSpec": { "queryRephraserSpec": { "disable": true  } }
    }'
    Which database is faster, bigquery or spanner? "
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/ecc0e7547253f4ca3ff3328ce89995af",
                  "uri": "https://cloud.google.com/blog/topics/developers-practitioners/how-spanner-and-bigquery-work-together-handle-transactional-and-analytical-workloads",
                  "title": "How Spanner and BigQuery work together to handle transactional and analytical workloads | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "A federated \u003cb\u003equery\u003c/b\u003e might not be as \u003cb\u003efast\u003c/b\u003e as querying local \u003cb\u003eBigQuery tables\u003c/b\u003e. There may be higher latency because of the small wait time for the source \u003cb\u003edatabase\u003c/b\u003e to ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d7e238f73608a860e00b752ef80e2941",
                  "uri": "https://cloud.google.com/blog/products/databases/cloud-spanner-gets-stronger-with-bigquery-federated-queries",
                  "title": "Cloud Spanner gets stronger with BigQuery-federated queries | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "... \u003cb\u003equick\u003c/b\u003e lookup on \u003cb\u003edata\u003c/b\u003e that's in \u003cb\u003eSpanner\u003c/b\u003e -- you can ... Set up an external \u003cb\u003edata\u003c/b\u003e source for the \u003cb\u003eSpanner\u003c/b\u003e shopping \u003cb\u003edatabase\u003c/b\u003e in \u003cb\u003eBigQuery\u003c/b\u003e. ... The \u003cb\u003equery\u003c/b\u003e is executed in ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f3d036b60379873acf7c73081c5e5b5c",
                  "uri": "https://cloud.google.com/spanner/docs/performance",
                  "title": "Performance overview | Spanner | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "The information on this page applies to both GoogleSQL and PostgreSQL \u003cb\u003edatabases\u003c/b\u003e. Note: We are in the process of rolling out \u003cb\u003eperformance\u003c/b\u003e and storage changes that ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/47b09cb5ad5e3ab3b1eb93d99ecb0896",
                  "uri": "https://cloud.google.com/blog/products/databases/rewe-uses-cloud-spanner-to-optimize-for-speed-and-performance",
                  "title": "REWE uses Cloud Spanner to optimize for speed and performance | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "As a fully managed relational \u003cb\u003edatabase\u003c/b\u003e, \u003cb\u003eSpanner\u003c/b\u003e provides unlimited scale, strong consistency, and up to 99.999% availability. By choosing this approach to ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "answerQueryToken": "M8gKCwjp_t62BhC7wOFMEiQ2NmQ3YjhhZS0wMDAwLTJhN2ItYjEyYy0wODllMDgyOGU3NjQ"
}
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Cerca e rispondi (specifica il numero massimo di passaggi) 
Il seguente comando mostra come chiamare il metodo answer  e
restituisce una risposta generata e un elenco di risultati di ricerca. La risposta è
diversa dalle precedenti perché il numero di passaggi di riformulazione è
aumentato.
  
  
  
  
  
    
  
  
  REST Per cercare e ottenere risultati con una risposta generata che consente fino a cinque passaggi di riformulazione, svolgi i seguenti passaggi:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "queryUnderstandingSpec": {
            "queryRephraserSpec": {
                "maxRephraseSteps": MAX_REPHRASE  
             }
         }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY MAX_REPHRASE 5.
  Se non è impostato o se è impostato su un valore inferiore a 1, il valore è quello predefinito,
  1.
   
Comando di esempio  
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "How much longer does it take to train a recommendations model than a search model"},
        "queryUnderstandingSpec": {
            "queryRephraserSpec": {
            "maxRephraseSteps": 5 
             }
         }
      }'
        
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Cercare e rispondere con la classificazione delle query 
Il seguente comando mostra come chiamare il metodo answer  per
verificare se una query è ostile, non cerca risposte o nessuna delle due.
La risposta include il tipo di classificazione per la query, ma la risposta stessa non è influenzata dalla classificazione.
Se vuoi modificare il comportamento della risposta in base al tipo di query, puoi
farlo nella fase di risposta. Vedi Ignorare le query
ostili  e Ignorare le query che non cercano
riepiloghi .
  
  
  
  
  
    
  
  
  REST Per determinare se una query è ostile o non cerca una risposta, segui questi passaggi:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "queryUnderstandingSpec": {
            "queryClassificationSpec": {
                "types": ["QUERY_CLASSIFICATION_TYPE "] 
             }
         }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY QUERY_CLASSIFICATION_TYPE ADVERSARIAL_QUERY,
  NON_ANSWER_SEEKING_QUERY o entrambi. 
Esempio di comando e risultato parziale 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{
      "query": {
          "text": "Hello!"},
          "queryUnderstandingSpec": {
             "queryClassificationSpec": {
             "types": ["ADVERSARIAL_QUERY", "NON_ANSWER_SEEKING_QUERY"] 
              }
          }
}'
"type": "NON_ANSWER_SEEKING_QUERY",
          "positive": true 
        }
      ]
    }
  },
  "answerQueryToken": "NMwKDAjVloK3BhCdt8u9AhIkNjZkYmFhNWItMDAwMC0yZTBkLTg0ZDAtMDg5ZTA4MmRjYjg0"
}
 In questo esempio, la query "hello" non è avversativa, ma è classificata come
non-answer-seeking.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Comandi della fase di ricerca: cerca e rispondi con le opzioni dei risultati di ricerca 
Questa sezione mostra come specificare le opzioni per la parte della fase di ricerca della chiamata al metodo answer , opzioni come l'impostazione del numero massimo di documenti restituiti, il boosting e il filtraggio, nonché come ottenere una risposta quando fornisci i tuoi risultati di ricerca.
Il seguente comando mostra come chiamare il metodo answer  e specificare varie opzioni per la modalità di restituzione del risultato di ricerca. (I risultati di ricerca sono indipendenti dalla risposta.)
  
  
  
  
  
    
  
  
  REST Per impostare varie opzioni relative a quali e come vengono restituiti i risultati di ricerca, procedi nel seguente modo:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
          "searchSpec": {
          "searchParams": {
            "maxReturnResults": MAX_RETURN_RESULTS ,
            "filter": "FILTER ",
            "boostSpec": BOOST_SPEC ,
            "orderBy": "ORDER_BY ",
            "searchResultMode": SEARCH_RESULT_MODE 
           }
         }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY MAX_RETURN_RESULTS FILTER Filtra la ricerca personalizzata per dati strutturati o non strutturati .BOOST_SPEC Aumentare la visibilità dei risultati di ricerca .ORDER_BY Documento . L'espressione orderBy è sensibile alle maiuscole.
  Se questo campo non è riconoscibile, viene restituito un INVALID_ARGUMENT.SEARCH_RESULT_MODE DOCUMENTS o CHUNKS. Per saperne di più, consulta Analizzare e dividere i documenti in blocchi  e ContentSearchSpec .
  Questo campo è disponibile solo nella versione v1alpha dell'API.
  
   
Esempio di comando e risultato 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{
      "query": {
          "text": "Does spanner database have an API?"},
          "searchSpec": {
          "searchParams": { "maxReturnResults": 3 } 
          }
    }'
     In questo esempio, il numero di documenti restituiti è limitato a tre.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Comandi della fase di risposta 
Questa sezione mostra come personalizzare la chiamata al metodo answer
Ignorare le query contraddittorie e quelle che non cercano risposte 
Il seguente comando mostra come evitare di rispondere a query ostili e
query che non cercano risposte quando chiami il metodo answer .
  
  
  
  
  
    
  
  
  REST Per saltare le query ostili o che non richiedono una risposta, segui questi passaggi:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "ignoreAdversarialQuery": true,
           "ignoreNonAnswerSeekingQuery": true 
        }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY  
Esempio di comando e risultato parziale 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
    -H "Content-Type: application/json"
    "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
    -d '{
      "query": { "text": "Hello"},
      "answerGenerationSpec": {
          "ignoreAdversarialQuery": true ,
          "ignoreNonAnswerSeekingQuery": true  }
        }'
        A summary could not be generated for your search query. Here are some search results. ",
    "steps": [
      {
        "state": "SUCCEEDED",
        "description": "Rephrase the query and search.",
        "actions": [
          {
            "searchAction": {
              "query": "Hello"
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/69e92e5b1de5b1e583fbe95f94dd4cbf",
                  "uri": "https://support.google.com/voice/thread/152245405/google-voice-is-randomly-automatically-sending-hello-replies-to-incoming-texts?hl=en",
                  "title": "Google voice is randomly/automatically sending \"Hello!\" replies to incoming texts",
                  "snippetInfo": [
                    {
                      "snippet": "There IS a new "Smart reply" feature on the Android or iOS client apps, but you'd have to a) receive a SMS/MMS, b) open it up, c) look at the three suggested ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/16d65e2af7fa854d1a00995525646dc3",
                  "uri": "https://support.google.com/voice/thread/112990484/google-voice-sending-hello-in-response-to-text-messages?hl=en",
                  "title": "Google Voice sending \"Hello,\" in response to text messages",
                  "snippetInfo": [
                    {
                      "snippet": "When I receive text messages, a reply is instantly sent out reading "\u003cb\u003eHello\u003c/b\u003e," and I cannot figure out how this is happening. I have no linked accounts, ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/b3bdde4957f588a1458c533269626d09",
                  "uri": "https://support.google.com/voice/thread/4307458/lately-an-automatic-text-response-saying-hello-is-going-out-how-do-i-stop-this?hl=en",
                  "title": "Lately an automatic text response saying, \"Hello\" is going out. How do I stop this? - Google Voice Community",
                  "snippetInfo": [
                    {
                      "snippet": "You need to find out what app is causing it and deactivate or delete it. Last edited Apr 16, 2019.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/a828eb8f442f1dfbdda06dbeb52841b0",
                  "uri": "https://support.google.com/a/thread/161821861/hello-hello-the-lost-phone?hl=en",
                  "title": "Hello.Hello the lost phone - Google Workspace Admin Community",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eHello\u003c/b\u003e the lost phone. My wife lost her phone but she cannot remember her emails pasward to help track .",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ],
    "answerSkippedReasons": [
      "NON_ANSWER_SEEKING_QUERY_IGNORED" 
    ]
  },
  "answerQueryToken": "NMwKDAjFgN-2BhDlsKaZARIkNjZkN2I0NmItMDAwMC0yZmQ5LTkwMDktZjQwMzA0M2E5YTg4"
}
 In questo esempio, la query viene considerata non orientata alla ricerca di una risposta, pertanto non viene generata alcuna risposta.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Mostra solo le risposte pertinenti 
Gemini Enterprise può valutare la pertinenza dei risultati per una
query. Se nessun risultato viene ritenuto sufficientemente pertinente, invece di generare una risposta da risultati non pertinenti o minimamente pertinenti, puoi scegliere di restituire una risposta di riserva: "We do not have a summary for your query.".
Il seguente comando mostra come restituire la risposta di riserva in caso di
risultati non pertinenti quando viene chiamato il metodo answer .
  
  
  
  
  
    
  
  
  REST Per restituire una risposta di riserva se non vengono trovati risultati pertinenti, procedi nel seguente modo:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "ignoreLowRelevantContent": true 
        }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY  
Esempio di comando e risultato 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{"query": { "text": "foobar"}, "answerGenerationSpec": {
       "ignoreLowRelevantContent": true 
    } }'
    "answerText": "We do not have a summary for your query.", 
    "steps": [
      {
        "state": "SUCCEEDED",
        "description": "Rephrase the query and search.",
        "actions": [
          {
            "searchAction": {
              "query": "foobar"
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/719b79786f0c143717c569eade5305d9",
                  "uri": "https://support.google.com/websearch/thread/261714267/google-foobar-bug-console-disappeared?hl=en",
                  "title": "Google Foobar Bug - Console Disappeared",
                  "snippetInfo": [
                    {
                      "snippet": "Google \u003cb\u003eFoobar\u003c/b\u003e Bug - Console Disappeared. After I logged in today the top bar says "The \u003cb\u003eFoobar\u003c/b\u003e Challenge will be turned down on 1 April 2024. If you run out of ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/932369826585ff45f6ab3eba01ba6933",
                  "uri": "https://support.google.com/websearch/thread/95251114/unable-to-contact-foobar-recruiter?hl=en",
                  "title": "Unable to contact Foobar Recruiter - Google Search Community",
                  "snippetInfo": [
                    {
                      "snippet": "Access is by invitation only so you will need to have the proper credentials to login. You can always reach out using the contact us button, but there is no ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/fb736a30ff90d058be755f0a04a522a8",
                  "uri": "https://support.google.com/websearch/thread/121151780/foobar-challenge-appeared-to-me-then-disappeared?hl=en",
                  "title": "Foobar challenge appeared to me then disappeared - Google Search Community",
                  "snippetInfo": [
                    {
                      "snippet": "Hi. I got the \u003cb\u003efoobar\u003c/b\u003e challenge some months ago. But then it disappeared immediately, maybe by misclick (though I don't think I misclicked).",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f56f2656b0d02b839509d0e67e60c1c9",
                  "uri": "https://support.google.com/chrome/thread/159931759/cannot-access-google-foobar-challenge?hl=en",
                  "title": "Cannot Access Google FooBar Challenge",
                  "snippetInfo": [
                    {
                      "snippet": "I knew I wouldn't have time for it today, so I just kept the tab in the background. Tonight, I went to go close all my tabs, but the page had changed. It said " ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ],
    "answerSkippedReasons": [
      "NO_RELEVANT_CONTENT"
    ]
  },
  "answerQueryToken": "M8gKCwiokvy2BhDtv8EDEiQ2NmQ5NDQxZC0wMDAwLTIxMGQtOWU2Yi1mNDAzMDQ1ZGJkMzA"
}
 In questo esempio, è stato stabilito che i risultati non erano sufficientemente pertinenti
alla query, quindi è stata restituita la risposta di riserva anziché una risposta e risultati
generati.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Restituisci i punteggi di supporto del grounding 
Il seguente comando mostra come restituire i punteggi di supporto della base per risposte
e affermazioni.
  
  
  
  
  
    
  
  
  REST Per restituire un punteggio di supporto per ogni affermazione (frase nella risposta) e un
punteggio di supporto aggregato per la risposta, procedi nel seguente modo:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "groundingSpec": {
           "includeGroundingSupports": true,
        }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY  
Esempio di comando e risultato parziale 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer"
-d '{
    "query": { "text": "What is SQL?"},
    "groundingSpec": {
       "includeGroundingSupports": true,
    }
  }'
            "groundingScore": 0.9 
    "groundingCheckRequired": true
  },
  {
    "startIndex": "42",
    "endIndex": "144",
    "sources": [
      {
        "referenceId": "1"
      }
    ]
    "groundingScore": 0.8 
    "groundingCheckRequired": true
  },
  {
    "startIndex": "267",
    "endIndex": "342",
    "sources": [
      {
        "referenceId": "2"
      }
    ]
    "groundingScore": 0.6 
    "groundingCheckRequired": true
  }
],
"references": [
  {
    "chunkInfo": {
      "content": "There are a lot of Databases available in the market such as MS Access, Oracle and many others.For you to write programs that interact with these databases easily, there has to be a way where you could get information from all these databases using the same method.For this purpose SQL was developed.It is a kind of language (simple when compared to the likes of C or C++) which enables you to ask all your queries to a database without bothering about the exact type of database.When you use this Query the database engine would first find the table called people.Then it would find a column called firstname.Next it would compare all the values in that column with 'Reena'.Finally it would return all the details wherever it finds a match for the firstname.When you write a database program in VC++ or Java or any other language for that matter, you would make a database connection to your database and then you would query the database using SQL queries.When you query the database with any SQL query the database returns a recordset.A recordset is basically a set of records (all the entries that your query returns).This recordset is received in your program and all languages have a data structure which represents a recordset.",
      "documentMetadata": {
        "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d993d922043374f5ef7ba297c158b106",
        "uri": "gs://my-bucket-123/documents/058dee0ec23a3e92f9bfd7cd29840e8f.txt"
        "structData": {
          "fields": [
            {
              "key": "cdoc_url"
              "value": { "stringValue": "058dee0ec23a3e92f9bfd7cd29840e8f" }
            },
            {
              "key": "doc_id"
              "value": { "stringValue": "d993d922043374f5ef7ba297c158b106" }
            }
          ]
        }
      }
    }
  },
  {
    "chunkInfo": {
      "content": "The Structured Query Language (SQL) is a database management programming language.SQL is a tool for accessing databases, and more specifically, relational databases, and can be used with different database products.This chapter will prepare you to learn basic database management using this language.SQLite – To implement SQL as a library, you need SQLite.SQLite is intended to provide users and programs a way to store data using a SQL interface within the program.SQLite3 can be used to manipulate SQLite databases for major Linux distros.SQL is used to access relational databases.Each database contains more or less tables which in turn contain more or less rows and columns.Hereby a single row is seen as a separate object with features represented by the tables' columns.To access a table's data you first have to connect to its database.With the same table, the query SELECT * FROM T WHERE C1 = 1 will result in all the elements of all the rows where the value of column C1 is '1' being shown.A WHERE clause specifies that a SQL statement should only affect rows that meet specified criteria.The criteria are expressed in the form of predicates.WHERE clauses are not mandatory clauses of SQL statements, but should be used to limit the number of rows affected by a SQL DML statement or returned by a query.",
      "documentMetadata": {
        "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/3825eac51ef9e934bbc558faa42f4c71",
        "uri": "gs://my-bucket-123/documents/26f5872b0719790cb966a697bfa1ea27.txt"
        "structData": {
          "fields": [
            {
              "key": "cdoc_url"
              "value": { "stringValue": "26f5872b0719790cb966a697bfa1ea27" }
            },
            {
              "key": "doc_id"
              "value": { "stringValue": "3825eac51ef9e934bbc558faa42f4c71" }
            }
          ]
        }
      }
    }
  },
  {
    "chunkInfo": {
      "content": "This chapter focuses on using Paradox as a client/server development tool.It does not talk about connecting; it is assumed you have already connected.If you are having trouble connecting to a particular SQL server, then refer to the Connection Guide for that particular server.This chapter does review what a user can do interactively with Paradox and how to use ObjectPAL with SQL servers.Structured Query Language (SQL) was developed to create a standard for accessing database information.The ANSI standard for SQL allows a user to become familiar with the commands needed to query many different types of data.After you learn ANSI SQL, you then can query many different databases.Is SQL a solid standard?Yes and no.Yes, the core ANSI SQL commands are solid and consistent from vendor to vendor.Every vendor, however, adds capability to its version of SQL.These improvements are expected because ANSI SQL does not go far enough to cover every feature of every high-end DBMS.The SQL standard is used by many companies for their high-end products.They include Oracle, Sybase, Microsoft SQL, Informix, and Interbase.Paradox also provides the capability to use standard ANSI SQL commands on local Paradox and dBASE tables.Although SQL by definition is a standard, various flavors are on the market.",
      "documentMetadata": {
        "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/b3e88db8676b87b99af1e6ecc7d8757f",
        "uri": "gs://my-bucket-123/documents/073c21335d37d8d14982cb3437a721c0.txt"
        "structData": {
          "fields": [
            {
              "key": "cdoc_url"
              "value": { "stringValue": "073c21335d37d8d14982cb3437a721c0" }
            },
            {
              "key": "doc_id"
              "value": { "stringValue": "b3e88db8676b87b99af1e6ecc7d8757f" }
            }
          ]
        }
      }
    }
  }
],
...
"steps": [
  {
    "state": "SUCCEEDED",
    "description": "Rephrase the query and search.",
    "actions": [
      {
        "searchAction": {
          "query": "What is SQL?"
        },
        "observation": {
          "searchResults": [
            {
              "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d993d922043374f5ef7ba297c158b106",
              "uri": "gs://my-bucket-123/documents/058dee0ec23a3e92f9bfd7cd29840e8f.txt",
              "chunkInfo": [
                {
                  "content": "There are a lot of Databases available in the market such as MS Access, Oracle and many others.For you to write programs that interact with these databases easily, there has to be a way where you could get information from all these databases using the same method.For this purpose SQL was developed.It is a kind of language (simple when compared to the likes of C or C++) which enables you to ask all your queries to a database without bothering about the exact type of database.When you use this Query the database engine would first find the table called people.Then it would find a column called firstname.Next it would compare all the values in that column with 'Reena'.Finally it would return all the details wherever it finds a match for the firstname.When you write a database program in VC++ or Java or any other language for that matter, you would make a database connection to your database and then you would query the database using SQL queries.When you query the database with any SQL query the database returns a recordset.A recordset is basically a set of records (all the entries that your query returns).This recordset is received in your program and all languages have a data structure which represents a recordset."
                }
              ]
            },
            {
              "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/3825eac51ef9e934bbc558faa42f4c71",
              "uri": "gs://my-bucket-123/documents/26f5872b0719790cb966a697bfa1ea27.txt",
              "chunkInfo": [
                {
                  "content": "The Structured Query Language (SQL) is a database management programming language.SQL is a tool for accessing databases, and more specifically, relational databases, and can be used with different database products.This chapter will prepare you to learn basic database management using this language.SQLite – To implement SQL as a library, you need SQLite.SQLite is intended to provide users and programs a way to store data using a SQL interface within the program.SQLite3 can be used to manipulate SQLite databases for major Linux distros.SQL is used to access relational databases.Each database contains more or less tables which in turn contain more or less rows and columns.Hereby a single row is seen as a separate object with features represented by the tables' columns.To access a table's data you first have to connect to its database.With the same table, the query SELECT * FROM T WHERE C1 = 1 will result in all the elements of all the rows where the value of column C1 is '1' being shown.A WHERE clause specifies that a SQL statement should only affect rows that meet specified criteria.The criteria are expressed in the form of predicates.WHERE clauses are not mandatory clauses of SQL statements, but should be used to limit the number of rows affected by a SQL DML statement or returned by a query."
                }
              ]
            },
            {
              "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/b3e88db8676b87b99af1e6ecc7d8757f",
              "uri": "gs://my-bucket-123/documents/073c21335d37d8d14982cb3437a721c0.txt",
              "chunkInfo": [
                {
                  "content": "This chapter focuses on using Paradox as a client/server development tool.It does not talk about connecting; it is assumed you have already connected.If you are having trouble connecting to a particular SQL server, then refer to the Connection Guide for that particular server.This chapter does review what a user can do interactively with Paradox and how to use ObjectPAL with SQL servers.Structured Query Language (SQL) was developed to create a standard for accessing database information.The ANSI standard for SQL allows a user to become familiar with the commands needed to query many different types of data.After you learn ANSI SQL, you then can query many different databases.Is SQL a solid standard?Yes and no.Yes, the core ANSI SQL commands are solid and consistent from vendor to vendor.Every vendor, however, adds capability to its version of SQL.These improvements are expected because ANSI SQL does not go far enough to cover every feature of every high-end DBMS.The SQL standard is used by many companies for their high-end products.They include Oracle, Sybase, Microsoft SQL, Informix, and Interbase.Paradox also provides the capability to use standard ANSI SQL commands on local Paradox and dBASE tables.Although SQL by definition is a standard, various flavors are on the market."
                }
              ]
            },
...
            {
              "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/3dd4014e41044c5dd6a0fe380847f369",
              "uri": "gs://my-bucket-123/documents/76245cb33a66f4fbd9030a2a11eea00d.txt",
              "chunkInfo": [
                {
                  "content": "SQL injection is a code injection technique that might destroy your database.You can read more here OWASP sql injection testing sheet.Description: SQL injection ( second order) SQL injection vulnerabilities arise when user- controllable data is incorporated sheet into database SQL queries in an unsafe manner.This sheet cheat wiki assumes you have a basic understanding of SQL injection, please go here for an introduction if you are unfamiliar.Bypass login page with sql SQL injection [ closed].Gone are the days when knowledge sheet of just sql SQL Injection or XSS could help you land a lucrative high- paying InfoSec job.There is many sheet differnet variations you would login have probably have to try to make this exploit work ( sql especially if it is sql a blind SQL exploit).SQL injection usually occurs when you ask a user for input, like their.ゲストブック/ コメントの例.Submit Text Post.Get an ad- free experience with special benefits, and directly support Reddit.get reddit premium.SQL Injection Cheat.Many web applications have an authentication system: a user provides a user name and password, the web application checks them and stores the corresponding user id in the session hash.Login # 1 Login # 2 Login # 3 Login # 4."
                }
              ]
            }
          ]
        }
      }
    ]
  }
]
}
}
 In questo esempio, per ogni citazione viene restituito un punteggio di supporto (`groundingScore`).
 
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Mostra solo risposte ben documentate 
Il seguente comando mostra come restituire solo le risposte considerate
ben fondate nel corpus , ovvero le informazioni nel datastore.
Le risposte poco fondate vengono filtrate.
Scegli una soglia di livello basso o alto per il punteggio di supporto della messa a terra. La risposta
viene restituita solo se raggiunge o supera quel livello. Puoi sperimentare con le due soglie
di filtro e senza soglia per determinare quale livello di filtro
è più probabile che fornisca i risultati migliori per i tuoi utenti.
  
  
  
  
  
    
  
  
  REST Per restituire una risposta solo se soddisfa una soglia del punteggio di supporto, procedi nel seguente modo:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "groundingSpec": {
           "filteringLevel": "FILTER_LEVEL "
        }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY FILTER_LEVEL FILTERING_LEVEL_LOW e FILTERING_LEVEL_HIGH. Se
  filteringLevel non è incluso, alla risposta non viene applicato alcun filtro del punteggio di supporto.
   
Esempio di comando e risultato parziale 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{
    "query": { "text": "When can an NCD be made?"},
    "groundingSpec": {
       "filtering_level": "FILTERING_LEVEL_HIGH"
    }
  }'
  answer_text: "We do not have a summary for your query." 
      steps {
        state: SUCCEEDED
        description: "Rephrase the query and search."
        actions {
          search_action {
            query: "test?"
          }
          observation {
            search_results {
              document: "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7f5cfde02"
              uri: "gs://my-bucket-123/data/CoverageDocumentation.pdf"
              title: "ABC345_0101"
              chunk_info {
                content: "This notice implements part of section 731 of the Medicare Prescription Drug, Improvement, and Modernization Act of 2003 by describing a method of developing, and making available to the public, guidance documents under the Medicare program… "
              }
    ...
            search_results {
              document: "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7f5cfde02"
              uri: "gs://my-bucket-123/data/CoverageDocumentation.pdf"
              title: "ABC345_0101"
              chunk_info {
                content: "For the purposes of this notice, the term guidance documents means documents prepared for our staff, potential requestors of National Coverage Determinations, and other interested parties explaining the NCD process… "
              }
            }
          }
        }
      }
      answer_skipped_reasons: LOW_GROUNDED_CONTENT 
    }
 In questo esempio, non viene restituita alcuna risposta perché non è stata raggiunta la soglia elevata.
 
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Specifica il modello di risposta 
Il seguente comando mostra come modificare la versione del modello utilizzata per generare
le risposte.
Per informazioni sui modelli supportati, consulta Versioni e ciclo di vita del modello di generazione delle risposte .
  
  
  
  
  
    
  
  
  REST Per generare una risposta utilizzando un modello diverso da quello predefinito, segui questi passaggi:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "modelSpec": {
              "modelVersion": "MODEL_VERSION ",
           }
         }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY MODEL_VERSION Versioni e ciclo di vita del modello di generazione delle risposte .
   
Esempio di comando e risultato parziale 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{"query": { "text": "Compare bigquery with spanner database?"},   "answerGenerationSpec": {
     "modelSpec": {
     "modelVersion": "preview", 
     }
   } }'
    In questo esempio, viene utilizzata la versione di anteprima del modello anziché il modello predefinito.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Specificare un preambolo personalizzato 
Il comando seguente mostra come impostare un preambolo per la risposta generata. Un
preambolo contiene istruzioni in linguaggio naturale per personalizzare la risposta. Puoi
richiedere personalizzazioni come lunghezza, livello di dettaglio, stile dell'output
(ad esempio "semplice"), lingua dell'output, focus della risposta e formato (ad esempio
tabelle, elenchi puntati e XML). Ad esempio, un preambolo potrebbe essere "Spiega come se fossi
un bambino di dieci anni".
Il preambolo può influire in modo significativo sulla qualità della risposta generata. Per informazioni su cosa scrivere nei preamboli ed esempi di preamboli
efficaci, consulta Informazioni sui preamboli personalizzati .
  
  
  
  
  
    
  
  
  REST Per generare una risposta utilizzando un modello diverso da quello predefinito, segui questi passaggi:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "promptSpec": {
               "preamble": "PREAMBLE ",
           }
        }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY PREAMBLE show the answer format in
  an ordered list o give a very detailed answer.
   
Esempio di comando e risultato 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
    -H "Content-Type: application/json"
    "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
    -d '{
          "query": { "text": "what is bigquery?"},
          "answerGenerationSpec": {
             "promptSpec": {
                "preamble": "Explain like you are a ten years old
                kid ",
     }
  }
}'
BigQuery is like a super-powered storage space for your data, but it's in the cloud, not on your computer. It's like a giant warehouse for all your information, but you don't have to build or manage it yourself. You can use BigQuery to find patterns and insights in your data, like figuring out what people like to buy or how many people visited your website. It's like having a super-smart assistant that can help you understand your data better. BigQuery is really good at working with lots of data, even billions of pieces of information. \n",
    "steps ": [
      {
        "state": "SUCCEEDED",
        "description": "Rephrase the query and search.",
        "actions": [
          {
            "searchAction": {
              "query": "What is BigQuery?"
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/2d032dc582689e8c0ecea7fc7bfa3189",
                  "uri": "https://cloud.google.com/bigquery",
                  "title": "BigQuery enterprise data warehouse | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eBigQuery\u003c/b\u003e is a fully managed, AI-ready data analytics platform that helps you maximize value from your data and is designed to be multi-engine, multi-format, ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/4474f4a5a18ecd611dedfe323dfe55d9",
                  "uri": "https://cloud.google.com/bigquery/docs/introduction",
                  "title": "BigQuery overview | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eBigQuery\u003c/b\u003e is a fully managed, AI-ready data platform that helps you manage and analyze your data with built-in features like machine learning, search, ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/c840fdef90d86328f13bbedbdbf0ac10",
                  "uri": "https://cloud.google.com/bigquery/docs/query-overview",
                  "title": "Overview of BigQuery analytics | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eBigQuery\u003c/b\u003e lets you save queries and share queries with others. When you save a query, it can be private (visible only to you), shared at the project level ( ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/5cbfab8ce1d5f6ffe45fef22900c9a00",
                  "uri": "https://cloud.google.com/curated-resources/bigquery",
                  "title": "Guides BigQuery | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eBigQuery\u003c/b\u003e is Google Cloud's fully managed and serverless enterprise data warehouse solution, designed to help you make informed decisions quickly, so you can ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "answerQueryToken": "NMwKDAi8hN-2BhC0jMCPARIkNjZkN2I4MzItMDAwMC0yMTliLTkxN2EtMDg5ZTA4MjA0YjFj"
}
 In questo esempio, il preambolo richiede una risposta più semplice di quella che potrebbe fornire il valore predefinito.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Includi citazioni 
Il comando seguente mostra come richiedere l'inclusione delle citazioni nella
risposta.
  
  
  
  
  
    
  
  
  REST Per generare una risposta utilizzando un modello diverso da quello predefinito, segui questi passaggi:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "includeCitations": INCLUDE_CITATIONS 
        }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY INCLUDE_CITATIONS false.
   
Esempio di comando e risultato parziale 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{"query": { "text": "What is SQL"},   "answerGenerationSpec": {
    "includeCitations": true
}
}'
"citations": [
      {
        "endIndex": "137",
        "sources": [
          {
            "referenceId": "0"
          },
          {
            "referenceId": "1"
          }
        ]
      },
      {
        "startIndex": "138",
        "endIndex": "437",
        "sources": [
          {
            "referenceId": "3"
          }
        ]
      },
      {
        "startIndex": "438",
        "endIndex": "575",
        "sources": [
          {
            "referenceId": "2"
          }
        ]
      },
      {
        "startIndex": "576",
        "endIndex": "742",
        "sources": [
          {
            "referenceId": "3"
          }
        ]
      }
    ],
    "references": [
      {
        "chunkInfo": {
          "content": "There may be a second table that stores visit information. A relational database uses a unique ID for each row to maintain the linked patient information across the two tables. This way, you can quickly look up the visits of each patient. Sign up for a free trial for any of Google Cloud's SQL databases, which include AlloyDB, Cloud SQL, and Spanner. Get started for free What is SQL? SQL (Structured Query Language) is a programming language used to store, retrieve, and manage data in a relational database. SQL statements are English-like, making the language accessible to software developers, data analysts, and other practitioners. Benefits of SQL databases Enterprises choose SQL databases for being: Efficient. Relational databases are incredibly efficient in managing complex queries. Fast. SQL databases can retrieve large amounts of data, quickly. This makes them highly desirable for real-time transactional data. Reliable. SQL databases provide a high degree of data integrity and are ACID-compliant. SQL database engines There are numerous SQL database engines (products) used to build software applications. Some of the most popular include PostgreSQL, MySQL, SQL Server, and Oracle. Some database engines are open source while others are commercial offerings. ",
          "relevanceScore": 0.9,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/7218ff4f57328d86059246d4af3a9953",
            "uri": "https://cloud.google.com/discover/what-are-sql-databases",
            "title": "SQL Databases | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "PostgreSQL vs. SQL Server: What's the difference? | Google Cloud Page Contents Topics PostgreSQL vs. SQL PostgreSQL vs SQL Server: What are the key differences? Trying to find the right database for your applications? When it comes to choosing a database technology, the most common SQL options to consider are PostgreSQL vs. SQL Server. While both systems share many core features, there are some key differences—the major one being that PostgreSQL is open source and SQL Server is owned by Microsoft. Today, it is more vital than ever for companies to be able to manage, store, and activate data for modern business operations. With the growing assortment of databases available to choose from, it can be overwhelming to pick the right one for your applications. The most important thing to remember is that no single database will be a good match for every project requirement, so it's critical to understand the option that will work best for your specific use case. So, what is PostgreSQL vs. SQL Server? In this short guide, we'll discuss the basic differences between PostgreSQL and SQL Server. Get started for freeStay informed What is SQL? Structured Query Language or SQL, as it's more commonly known, is a programming language used to manage, query, and retrieve data in a relational database. ",
          "relevanceScore": 0.8,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7cd9afab1282a9f57cdcee1885bb4c6",
            "uri": "https://cloud.google.com/learn/postgresql-vs-sql",
            "title": "PostgreSQL vs. SQL Server: What's the difference? | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "SQL Databases | Google Cloud Page Contents Topics What are SQL databases? What are SQL databases? A SQL database, also known as a relational database, is a system that stores and organizes data into highly structured tables of rows and columns. These databases offer Structured Query Language (SQL) to read and write the data, and are categorized as relational database management systems (RDBMS). SQL statements are used to create and update the structure of tables, read and write data, manage user permissions, and perform administrative tasks. For example, a CREATE statement is used to create a table, an INSERT statement adds a new row to a table, and a SELECT statement performs a database query. Statements that make structural or administrative changes are usually reserved for software developers and administrators, while read and write operations are performed by end-user applications. A relational database maintains the ability to link information across multiple tables. This format makes it easy to quickly gain insights about the relationships between various columns or data points in these tables. A relational database can create indexes for particular columns for faster lookups. For example, a healthcare facility might maintain a table containing rows of patient information, where each row is one patient and the columns contain data points, such as the patient's name, insurance information, and contact details. ",
          "relevanceScore": 0.8,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/7218ff4f57328d86059246d4af3a9953",
            "uri": "https://cloud.google.com/discover/what-are-sql-databases",
            "title": "SQL Databases | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "It is the standard language used by relational database management systems (RDBMS), including PostgreSQL, SQL Server, MySQL, and Oracle Database. SQL typically uses commands written in statement format for queries and other database operations, which allow users to manipulate data in relational database tables. While originally created for relational databases, SQL acts as a foundation for many of today's technology capabilities, making SQL knowledge an essential skill for many technology roles today, including data analysts, database engineers, and even backend programming. However, you will find that there are different variants of SQL depending on the database or database management system that you choose. What is Microsoft SQL Server? SQL Server is a leading RDBMS that is built on top of SQL and developed by Microsoft. It is used to manage and store data to support numerous enterprise use cases for business intelligence, transaction processing, data analytics, and machine learning services. SQL Server has a row-based table structure that allows you to connect related data elements from different tables without having to store data multiple times in a database. In general, Microsoft SQL Server is known for its high availability, fast performance when handling large workloads, and easy integration with other applications to gain business intelligence across your entire data estate. For more information, we recommend reviewing the official SQL Server documentation. ",
          "relevanceScore": 0.8,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7cd9afab1282a9f57cdcee1885bb4c6",
            "uri": "https://cloud.google.com/learn/postgresql-vs-sql",
            "title": "PostgreSQL vs. SQL Server: What's the difference? | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "Send feedback The GoogleSQL language in Spanner bookmark_borderbookmark Stay organized with collections Save and categorize content based on your preferences. Dismiss Got it GoogleSQL is the new name for Google Standard SQL! New name, same great SQL dialect. This page provides an overview of supported statements in GoogleSQL. GoogleSQL is an ANSI compliant Structured Query Language (SQL) which includes the following types of supported statements: Query statements, also known as Data Query Language (DQL) statements, are the primary method to analyze data in Spanner. They scan one or more tables or expressions and return the computed result rows. Data Definition Language (DDL) statements let you create and modify database objects such as tables, views, and database roles. Data Manipulation Language (DML) statements enable you to update, insert, and delete data from your Spanner tables. Data Access Control statements let you grant and revoke access privileges at the table and column level. Transaction Control statements allow you to manage transactions for data modifications. Was this helpful? Send feedback Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. ",
          "relevanceScore": 0.7,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/0c5c094170756eeb6bdfec6eb5c7d081",
            "uri": "https://cloud.google.com/spanner/docs/reference/standard-sql/overview",
            "title": "The GoogleSQL language in Spanner | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "FAQ Expand all What is Cloud SQL? Cloud SQL is a service that delivers fully managed relational databases in the cloud. It offers MySQL, PostgreSQL, and SQL Server database engines. How is Cloud SQL different from other cloud databases? Cloud SQL is valued for its openness, ease of use, security, cost-efficiency, and Google Cloud integration—in fact, more than 95% of Google Cloud's top 100 customers use it. If you're comparing PostgreSQL options on Google Cloud, view our comparison chart. What's the difference between the Enterprise and Enterprise Plus editions? For PostgreSQL, the Enterprise Plus edition brings enhanced availability, performance, and data protection capabilities. Specifically, it provides a 99.99% availability SLA with near-zero downtime maintenance, optimized hardware and software configurations, intelligent data caching for read-intensive transactional workloads, a configurable data cache option and 35 days of log retention. For MySQL, the Enterprise Plus edition brings enhanced availability, performance, and data protection capabilities. Specifically, it provides a 99.99% availability SLA with near-zero downtime maintenance, optimized hardware and software configurations, intelligent data caching for read-intensive transactional workloads, a configurable data cache option, 35 days of log retention and advanced disaster recovery capabilities like orchestrated failover and switchback. ",
          "relevanceScore": 0.7,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/931f2c8e19ed54a407857f1cad3b5aaa",
            "uri": "https://cloud.google.com/sql",
            "title": "Cloud SQL for MySQL, PostgreSQL, and SQL Server | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "PostgreSQL versus SQL PostgreSQL is an open-source, object-relational database (ORDBMS) designed for enterprise-level performance and is valued for its reliability and robust features. Its long history of development and its use of SQL makes it one of the most popular open source databases worldwide. Its default procedural language is an extension of pgSQL (PL/pgSQL), with procedural language extensions of Tcl, Perl, and Python included in the standard distribution (written as PL/Tcl, PL/Perl, and PL/Python). Many more languages are supported through extensions, including Java, Ruby, C, C++, Delphi, and JavaScript. For a more in-depth comparison, visit our PostgreSQL versus SQL guide. MySQL versus SQL MySQL is a popular open source relational database created in 1995 and currently sponsored by Oracle. It supports SQL queries and can be administered either through a graphical user interface (GUI) or a command line. MySQL can be deployed manually on a physical machine or through a cloud service provider. Enterprises are increasingly choosing fully managed services to reduce the maintenance burden of their databases. What is SQL Server? SQL Server is a Microsoft-owned database that runs SQL queries. Dive into the differences between PostgreSQL and SQL Server. ",
          "relevanceScore": 0.6,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/7218ff4f57328d86059246d4af3a9953",
            "uri": "https://cloud.google.com/discover/what-are-sql-databases",
            "title": "SQL Databases | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "Send feedback On this page BigQuery SQL dialects Changing from the default dialect What's next Introduction to SQL in BigQuery bookmark_borderbookmark Stay organized with collections Save and categorize content based on your preferences. Dismiss Got it GoogleSQL is the new name for Google Standard SQL! New name, same great SQL dialect. This document provides an overview of supported statements and SQL dialects in BigQuery. GoogleSQL is an ANSI compliant Structured Query Language (SQL) which includes the following types of supported statements: Query statements, also known as Data Query Language (DQL) statements, are the primary method to analyze data in BigQuery. They scan one or more tables or expressions and return the computed result rows. Procedural language statements are procedural extensions to GoogleSQL that allow you to execute multiple SQL statements in one request. Procedural statements can use variables and control-flow statements, and can have side effects. Data Definition Language (DDL) statements let you create and modify database objects such as tables, views, functions, and row-level access policies. Data Manipulation Language (DML) statements enable you to update, insert, and delete data from your BigQuery tables. Data Control Language (DCL) statements let you control BigQuery system resources such as access and capacity. Transaction Control Language (TCL) statements allow you to manage transactions for data modifications. ",
          "relevanceScore": 0.6,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/2f6fc3e29873518196cb50195d7ded45",
            "uri": "https://cloud.google.com/bigquery/docs/introduction-sql",
            "title": "Introduction to SQL in BigQuery | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "Database administration Cloud SQL pricing Connect to a Cloud SQL managed database Cloud SQL updates Configuration updates System updates What's next Home Cloud SQL Documentation Guides Was this helpful? Send feedback Cloud SQL overview bookmark_borderbookmark Stay organized with collections Save and categorize content based on your preferences. Dismiss Got it On this page Database configurations with Cloud SQL Use cases for Cloud SQL What Cloud SQL provides What is a Cloud SQL instance? Database administration Cloud SQL pricing Connect to a Cloud SQL managed database Cloud SQL updates Configuration updates System updates What's next Cloud SQL is a fully managed relational database service for MySQL, PostgreSQL, and SQL Server. This frees you from database administration tasks so that you have more time to manage your data. This page discusses basic concepts and terminology for Cloud SQL, which provides SQL data storage for Google Cloud. For a more in-depth explanation of key concepts, see the key terms and features pages. For information about how Cloud SQL databases compare with one another, see Cloud SQL feature support by database engine. Database configurations with Cloud SQL The following video shows you the benefits of using Cloud SQL. ",
          "relevanceScore": 0.6,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/4098ae11bfa400e8f1b8e9ba59d2b71b",
            "uri": "https://cloud.google.com/sql/docs/introduction",
            "title": "Cloud SQL overview"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "Cloud SQL documentation View all product documentation Cloud SQL is a fully-managed database service that helps you set up, maintain, manage, and administer your relational databases on Google Cloud Platform. You can use Cloud SQL with MySQL, PostgreSQL, or SQL Server. Not sure what database option is right for you? Learn more about our database services. Learn more about Cloud SQL. Documentation resources Find quickstarts and guides, review key references, and get help with common issues. format_list_numbered Guides Cloud SQL overview Database engine feature support MySQL PostgreSQL SQL Server find_in_page Reference gcloud commands REST API Client libraries info Resources Pricing Release notes Resources Try Cloud SQL for yourself Create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads. Try Cloud SQL free Was this helpful? Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. Last updated 2024-08-29 UTC. ",
          "relevanceScore": 0.5,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/37935181d99a6ad3b4897e673a7a7986",
            "uri": "https://cloud.google.com/sql/docs",
            "title": "Cloud SQL documentation"
          }
        }
      }
      ], 
    "steps": [
      {
        "state": "SUCCEEDED",
        "description": "Rephrase the query and search.",
        "actions": [
          {
            "searchAction": {
              "query": "What is SQL?"
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/7218ff4f57328d86059246d4af3a9953",
                  "uri": "https://cloud.google.com/discover/what-are-sql-databases",
                  "title": "SQL Databases | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eSQL\u003c/b\u003e (Structured Query Language) is a programming language used to store, retrieve, and manage data in a relational database. \u003cb\u003eSQL\u003c/b\u003e statements are English-like, ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7cd9afab1282a9f57cdcee1885bb4c6",
                  "uri": "https://cloud.google.com/learn/postgresql-vs-sql",
                  "title": "PostgreSQL vs. SQL Server: What's the difference? | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eSQL\u003c/b\u003e typically uses commands written in statement format for queries and other database operations, which allow users to manipulate data in relational database ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/3afdede140d0906c2146a2f2b3a7821e",
                  "uri": "https://cloud.google.com/blog/topics/developers-practitioners/what-cloud-sql",
                  "title": "What is Cloud SQL? | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "It is a fully managed relational database for MySQL, PostgreSQL and \u003cb\u003eSQL\u003c/b\u003e Server. It reduces maintenance cost and automates database provisioning, storage ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/0c5c094170756eeb6bdfec6eb5c7d081",
                  "uri": "https://cloud.google.com/spanner/docs/reference/standard-sql/overview",
                  "title": "The GoogleSQL language in Spanner | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eGoogleSQL\u003c/b\u003e is the new name for Google Standard \u003cb\u003eSQL\u003c/b\u003e! New name, same great \u003cb\u003eSQL\u003c/b\u003e dialect. This page provides an overview of supported statements in \u003cb\u003eGoogleSQL\u003c/b\u003e.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "answerQueryToken": "NMwKDAiFm_y2BhC_nfrYAxIkNjZkYjg3NjItMDAwMC0yZTBkLTg0ZDAtMDg5ZTA4MmRjYjg0"
}
 
  
  
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Imposta il codice lingua della risposta 
Il seguente comando mostra come impostare il codice lingua per le risposte.
  
  
  
  
  
    
  
  
  REST Per generare una risposta utilizzando un modello diverso da quello predefinito, segui questi passaggi:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "answerLanguageCode": "ANSWER_LANGUAGE_CODE "
           }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY ANSWER_LANGUAGE_CODE BCP47: Tags for
  Identifying Languages .  
Esempio di comando e risultato 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{"query": { "text": "What is SQL"},   "answerGenerationSpec": {
  "answerLanguageCode": "es" 
     }
}'
"answerText": "SQL, que significa Structured Query Language, es un lenguaje de programación utilizado para almacenar, recuperar y administrar datos en una base de datos relacional. Las instrucciones de SQL son similares al inglés, lo que hace que el lenguaje sea accesible para desarrolladores de software, analistas de datos y otros profesionales. Las bases de datos SQL se utilizan para administrar y almacenar datos para apoyar numerosos casos de uso empresariales, como la inteligencia empresarial, el procesamiento de transacciones, el análisis de datos y los servicios de aprendizaje automático. SQL es el lenguaje estándar utilizado por los sistemas de gestión de bases de datos relacionales (RDBMS), incluidos PostgreSQL, SQL Server, MySQL y Oracle Database. SQL se utiliza para crear y actualizar la estructura de las tablas, leer y escribir datos, administrar los permisos de los usuarios y realizar tareas administrativas. \n", 
    "steps": [
      {
        "state": "SUCCEEDED",
        "description": "Rephrase the query and search.",
        "actions": [
          {
            "searchAction": {
              "query": "What is SQL?"
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/7218ff4f57328d86059246d4af3a9953",
                  "uri": "https://cloud.google.com/discover/what-are-sql-databases",
                  "title": "SQL Databases | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eSQL\u003c/b\u003e (Structured Query Language) is a programming language used to store, retrieve, and manage data in a relational database. \u003cb\u003eSQL\u003c/b\u003e statements are English-like, ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7cd9afab1282a9f57cdcee1885bb4c6",
                  "uri": "https://cloud.google.com/learn/postgresql-vs-sql",
                  "title": "PostgreSQL vs. SQL Server: What's the difference? | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eSQL\u003c/b\u003e typically uses commands written in statement format for queries and other database operations, which allow users to manipulate data in relational database ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/3afdede140d0906c2146a2f2b3a7821e",
                  "uri": "https://cloud.google.com/blog/topics/developers-practitioners/what-cloud-sql",
                  "title": "What is Cloud SQL? | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "It is a fully managed relational database for MySQL, PostgreSQL and \u003cb\u003eSQL\u003c/b\u003e Server. It reduces maintenance cost and automates database provisioning, storage ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/0c5c094170756eeb6bdfec6eb5c7d081",
                  "uri": "https://cloud.google.com/spanner/docs/reference/standard-sql/overview",
                  "title": "The GoogleSQL language in Spanner | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eGoogleSQL\u003c/b\u003e is the new name for Google Standard \u003cb\u003eSQL\u003c/b\u003e! New name, same great \u003cb\u003eSQL\u003c/b\u003e dialect. This page provides an overview of supported statements in \u003cb\u003eGoogleSQL\u003c/b\u003e.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "answerQueryToken": "NMwKDAjim_y2BhDftIjEAhIkNjZkOTQ0NWQtMDAwMC0yMTBkLTllNmItZjQwMzA0NWRiZDMw"
}
 In questo esempio, anche se i documenti di origine sono in inglese, la risposta è
fornita in spagnolo.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Personalizzare le risposte 
Se sono disponibili informazioni specifiche sull'utente, ad esempio dati in un profilo, puoi specificare queste informazioni nell'oggetto endUserMetadata
Ad esempio, se un utente sta cercando informazioni sull'upgrade di un
cellulare, le informazioni del suo profilo, come il modello di smartphone attuale e
il piano cellulare, forniscono informazioni che possono personalizzare la risposta generata.
Per aggiungere informazioni personali sull'utente che esegue una query e generare una risposta che tenga conto delle informazioni personali, segui questi passaggi:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
-d '{
    "query": { "text": "QUERY "},
    "endUserSpec": {
       "endUserMetadata": [
         {
           "chunkInfo": {
              "content": "PERSONALIZED_INFO ",
              "documentMetadata":  { "title": "INFO_DESCRIPTION "}
           }
         }
       ]
    }
  }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY PERSONALIZATION_INFO This customer has a Pixel 6 Pro  purchased over a period of
  24-months  starting 2023-01-15 . This customer is on the
  Business Plus International  plan. No payment is due at this
  time. Il limite di lunghezza per questa stringa è di 8000 caratteri.INFO_DESCRIPTION Customer
  profile data, including model, plan, and billing status. Il modello
  utilizza sia questa descrizione sia le informazioni di personalizzazione
  quando genera una risposta personalizzata alla query. 
Esempio di comando e risultato 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "Can I upgrade my phone now?"},
        "answerGenerationSpec": { "includeCitations": true }
        "endUserSpec": {
           "endUserMetadata": [
             {
               "chunkInfo": {
                 "content": "This customer has a Pixel 6 Pro purchased over a period of 24-months starting 2023-01-15. This customer is on the Business Plus International plan. No payment is due at this time.",
                 "documentMetadata":  { "title": "Customer profile data, including model, plan, and billing status."}
               }
             }
           ]
        } 
      }'
"answerText": "Yes, you qualify for the yearly device upgrade because you've completed your 24-month payment plan.[1,3]  Since your account is fully paid you will not need to pay any additional monthly fees…  \n", 
    "citations": [
      {
        "end_index": 99
        "sources": [
           {
              "reference_id": "0"
           }
        ]
      },
      {
        "start_index": "100"
        "end_index": "240"
        "sources": [
           {
              "reference_id": "0"
           }
        ]
      },
      ...
    ]
    "references": [
      {
        "chunk_info": {
          "content":
          "+ "This customer has a Pixel 6 Pro purchased over a period of 24-months starting 2023-01-15. This customer is on the Business Plus International plan. No payment is due at this time.",
          "relevance_score": 0.3
          "documentMetadata":  {
            "title": "Customer profile data, including model, plan, and billing status."
          }
      {
        "chunk_info": {
          "content":
          "+ "For Cymbal Mobile upgrades, you can upgrade when you've paid off at least half of your current device's cost and have had it for 8 months…",
          "relevance_score": 0.8
          "documentMetadata":  {
            "document":
            "projects/123456/locations/us/collections/default_collection/dataStores/my-data-store/branches/0/documents/abcd1234567890"
            "uri": "https://www.example.com/help/device-upgrade"
            "title": "Upgrade eligibility"
          }
         }
      }
      ...
 In questo esempio, il modello utilizza endUserMetaData per personalizzare
la risposta. A titolo illustrativo, questo esempio include citazioni per mostrare l'importanza di endUserMetaData, che è sempre il primo riferimento citato.
  
Generare grafici per le risposte 
  
    
      
     
        Anteprima
     
       
     
    
    
      
     
       
          Questa funzionalità è soggetta
       
        ai "Termini delle Offerte pre-GA" nella sezione Termini di servizio generali dei
        Termini specifici dei
        servizi .
       
        Le funzionalità pre-GA sono disponibili "così come sono" e potrebbero avere un supporto limitato.
     
      Per saperne di più, consulta le descrizioni della fase di lancio .
  
 
   
Il metodo answer  può generare grafici e restituirli come parte della risposta a una query.
Puoi richiedere in modo specifico che una risposta includa un grafico, ad esempio "Traccia
il tasso di crescita annuo dei pagamenti delle piccole imprese negli anni con
dati disponibili". Se il sistema determina che sono presenti dati sufficienti, viene restituito un grafico. Di solito, insieme al grafico viene restituito del testo di risposta.
Inoltre, se ci sono dati sufficienti per creare un grafico, il metodo di risposta può restituire un grafico anche se la query non lo ha richiesto esplicitamente. Ad esempio,
"Qual è stato il miglioramento dei punteggi dell'IDU associato a un maggiore accesso all'acqua potabile pulita nel decennio tra il 2010 e il 2020?"
Viene generato un solo grafico per risposta. Tuttavia, il grafico potrebbe essere un grafico
composito, contenente altri grafici più piccoli. Esempio di grafico composito:
Limitazione 
Le query devono essere in inglese.
Scenari di errore comuni 
Non sempre riceverai un'immagine con la risposta. Se i dati non sono sufficienti, non è possibile generare una cifra.
Altri scenari di errore includono errori di esecuzione del codice e timeout. Se si verifica una di queste situazioni, riformula la query e riprova.
Prima di iniziare 
Prima di eseguire una query che richiede grafici generati, procedi nel seguente modo:
Procedura 
  
  
  
  
  
    
  
  
  REST Chiama il metodo answer  come segue per restituire una risposta che può
includere un grafico generato dai dati nel datastore:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
          "model_spec": {
             "model_version": "MODEL_VERSION "
         },
          "multimodalSpec": {
             "imageSource": "IMAGE_SOURCE "
             } 
        }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY MODEL_VERSION gemini-2.0-flash-001/answer_gen/v1 o successive. Per maggiori
  informazioni, consulta Versioni e ciclo di vita del modello di generazione delle risposte .
  IMAGE_SOURCE FIGURE_GENERATION_ONLY,
  o che la risposta possa includere un grafico generato o un'immagine
  esistente dagli archivi di dati , ALL_AVAILABLE_SOURCES. 
Esempio di comando e risultato parziale 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1beta/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{
    "query": { "text": "Plot composition of net cash used in investing activities"},
    "answerGenerationSpec": {
      "model_spec": {
         "model_version": "gemini-2.0-flash-001/answer_gen/v1"
         },
         "multimodalSpec": {
         "image_source": "FIGURE_GENERATION_ONLY"
         } 
    }
  }'
  "blobAttachments": [
      {
        "data": {
          "mimeType": "image/png",
          "data": "iVBORw0KGgoAAAANSUhEUgAACvAAZd8AEZFKHDp0CE5OTgCAZcuWYfr06QonIqIMXIGXiIhUITY2Vq4tLCxyNdbMzEyuk5OTtZaJiEgfZd5aMj4+Xq4zr1rztm3SMs/fXIGXiOjDGRgYyLWpqalcJyUlyfW/V7rJULVqVbl++PChDtIREemXr7766oPHPnr0CK1bt9ZeGCIiPXXlypWPGr9lyxYtJSEi0k9ly5bFzZs30bNnT0iSBEmS8PLlS1y6dAlHjhzBpUuX8PLlS/lcjx49cOPGDZQtW1bp6EREquHv7w9JkgAALVq0UDgNEWXGBl4iIlIFc3NzuY6MjMzV2ICAALkuVqyY1jIREemjzDdVb926JdeWlpZynXlr98z8/f3lunDhwtoPR0SkJzLPuYGBgXKd+bOun5/fG8dmXjE9PT1dB+mIiPTL8uXLP2hVm19++QV169aFt7e3DlIREemXDh06wMfHJ9fjwsLC0K1bN4wePVoHqYiI9EuRIkXwxx9/4MSJE3BycoKFhYXcsCtJEiwsLNC/f38cP34chw4dyrJQBBERfbxChQrJde...PrTn86//Mu/5Jhjjql1NACAAeP/AX0CwI314+qiAAAAAElFTkSuQmCC"
        },
        "attributionType": "GENERATED"
      }
      ] 
  },
  "answerQueryToken": "NMwKDAjEjOe-BhD-meX6ARIkNjdkNjBhM2QtMDAwMC0yYzU4LTgxYjctMDg5ZTA4MmNhZDgw"
 In questo esempio, nella risposta è incluso un grafico generato perché la query ha richiesto un diagramma e c'erano dati sufficienti per generare il grafico.
Le immagini dei grafici vengono restituite nell'output blobAttachments
con il attributionType di GENERATED.
 
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Recuperare le immagini esistenti dal datastore 
  
    
      
     
        Anteprima
     
       
     
    
    
      
     
       
          Questa funzionalità è soggetta
       
        ai "Termini delle Offerte pre-GA" nella sezione Termini di servizio generali dei
        Termini specifici dei
        servizi .
       
        Le funzionalità pre-GA sono disponibili "così come sono" e potrebbero avere un supporto limitato.
     
      Per saperne di più, consulta le descrizioni della fase di lancio .
  
 
   
Puoi scegliere di includere le immagini del datastore nella risposta e nei riferimenti delle citazioni . Il datastore deve essere un datastore non strutturato con l'analizzatore sintattico del layout attivato.
Quando imageSource è CORPUS_IMAGE_ONLY o ALL_AVAILABLE_SOURCES, il metodo
answer  può recuperare le immagini dall'datastore in modo
appropriato. Tuttavia, l'attivazione di questa opzione non significa che le immagini vengano sempre restituite.
Puoi inserire al massimo un'immagine per risposta. Le citazioni possono contenere più immagini.
Limitazioni 
L'app che utilizzi deve essere connessa a un datastore non strutturato.
Le immagini non possono essere restituite da siti web o da datastore strutturati.
Le query devono essere in inglese.
L'annotazione delle immagini tramite l'analizzatore del layout deve essere applicata al datastore.
Per informazioni sul parser del layout, vedi Analizzare e dividere i documenti in blocchi .
 
Procedura 
  
  
  
  
  
    
  
  
  REST Chiama il metodo answer  come segue per restituire una risposta che può
includere un'immagine dell'datastore:
Esegui questo comando curl:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
          "model_spec": {
             "model_version": "MODEL_VERSION "
          },
          includeCitations: true,
          "multimodalSpec": {
             "imageSource": "IMAGE_SOURCE "
             } 
        }
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY MODEL_VERSION gemini-2.0-flash-001/answer_gen/v1 o successive. Per maggiori
  informazioni, consulta Versioni e ciclo di vita del modello di generazione delle risposte .
  IMAGE_SOURCE CORPUS_IMAGE_ONLY, o che la risposta possa includere un'immagine
  dell'datastore o un grafico generato ,
  ALL_AVAILABLE_SOURCES. 
Esempio di comando e risultato parziale 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 "https://discoveryengine.googleapis.com/v1beta/projects/my-project-123//locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer"   -d '{
        "query": { "text": "Display the ranking of  generations from highest to lowest based on their spending on holiday items using cards."},
        "answerGenerationSpec": {"includeCitations": true,
        "model_spec": {
             "model_version": "gemini-2.0-flash-001/answer_gen/v1"
             },
             "multimodalSpec": {
      "imageSource": "CORPUS_IMAGE_ONLY"
      } 
  },
  "searchSpec": {
    "searchParams": {
      "maxReturnResults": 5
    }
  }
}'
"blobAttachments": [
      {
        "data": {
          "mimeType": "image/png",
          "data": "iVBORw0KGgoAAAANSUhEUgAABcwAAAIjCAIAAACxms+ZAAAgAElEQVR42uzdd1xTV/...Vv/F0NDQ4NOp3+waz94PJ5Op7+/ibro6fRiWPX/AaZ6/dAGW00gAAAAAElFTkSuQmCC"
        },
        "attributionType": "CORPUS"
      }
      ] 
  },
  "answerQueryToken": "M8gKCwiPuOe-BhDyhpgIEiQ2N2Q2MWI0Mi0wMDAwLTJjNTgtODFiNy0wODllMDgyY2FkODA"
}
 Le immagini vengono restituite nella sezione blobAttachments dell'output. L'immagine restituita con la risposta si trova sempre nel primo
blobAttachments. Se presente, l'altro blobAttachments
conterrà le immagini restituite nei riferimenti delle citazioni. L'immagine restituita con
la risposta può anche essere (e spesso è) restituita con una citazione. blobAttachmentIndexes è l'indice che associa
blobAttachment al testo della risposta o della citazione.
Il attributionType per le immagini restituite è sempre
CORPUS per indicare che l'immagine proviene dal datastore.
 
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Comandi per le domande aggiuntive 
I follow-up sono query multi-turno. Dopo la prima query in una sessione di follow-up, i "turni" successivi
tengono conto delle interazioni precedenti. Con i follow-up, il metodo di risposta
può anche suggerire domande correlate, che gli utenti possono scegliere invece di
inserire le proprie domande di follow-up.
Tutte le funzionalità di risposta e follow-up descritte nelle sezioni precedenti, come citazioni, filtri, SafeSearch, ignorare determinati tipi di query e utilizzare un preambolo per personalizzare le risposte, possono essere applicate insieme ai follow-up.
Esempio di sessione di follow-up 
Di seguito è riportato un esempio di sessione con follow-up. Supponiamo che tu voglia
informazioni sulle vacanze in Messico:
Turno 1: 
Tu:  Qual è il periodo migliore dell'anno per andare in vacanza in Messico?
Risposta con follow-up:  il periodo migliore per andare in vacanza in Messico è durante la stagione secca, che va da novembre ad aprile.
 Turn 2: 
Tu :qual è il tasso di cambio?
Risposta con follow-up :1 dollaro statunitense equivale a circa 17,65 pesos messicani.
 Turno 3: 
 
Senza i follow-up, la tua domanda "Qual è il tasso di cambio?" non avrebbe
risposta perché la ricerca normale non saprebbe che volevi il tasso di cambio
messicano. Allo stesso modo, senza follow-up, non ci sarebbe il contesto
necessario per fornirti le temperature specifiche per il Messico.
Quando chiedi "Qual è il periodo migliore dell'anno per andare in vacanza in
Messico?", oltre a rispondere alla tua domanda, la risposta e i follow-up possono suggerire altre
domande che potresti porre, ad esempio "Qual è il mese più economico
per andare in vacanza in Messico?" e "Quali sono i mesi turistici in Messico?".
Una volta attivata la funzionalità delle domande correlate, le domande vengono restituite come
stringhe nella risposta.
Informazioni sulle sessioni 
Per capire come funzionano i follow-up in Gemini Enterprise, devi
comprendere il concetto di sessione.
Una sessione è costituita da query di testo fornite da un utente e dalle risposte fornite da Gemini Enterprise.
Queste coppie di query e risposte sono a volte chiamate turni . Nell'esempio
precedente, il secondo turno è composto da "Qual è il tasso di cambio?"
e "1 dollaro statunitense equivale a circa 17,65 pesos messicani".
Le sessioni vengono archiviate con l'app.
Nell'app, una sessione è rappresentata dalla risorsa
sessione .
Oltre a contenere i messaggi di query e risposta, la risorsa sessione
dispone di:
Un nome univoco (l'ID sessione).
Uno stato (in corso o completato).
Uno pseudo ID utente, ovvero un ID visitatore che monitora l'utente. Può essere
assegnato in modo programmatico.
Un'ora di inizio e un'ora di fine.
Un turno, ovvero una coppia di domanda e risposta.
 
Memorizzare le informazioni della sessione e ricevere risposte 
Puoi utilizzare la riga di comando per generare risposte e risultati di ricerca
e per memorizzarli, insieme a ogni query in una sessione.
  
  
  
  
    
  
  
  REST Per utilizzare la riga di comando per creare una sessione e generare risposte dall'input dell'utente, segui questi passaggi:
Specifica l'app in cui vuoi archiviare la sessione:
curl  -X  POST  \ 
   -H  "Authorization: Bearer  $( gcloud  auth  print-access-token) "   \ 
   -H  "Content-Type: application/json"   \ 
   "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions"   \ 
   -d  '{ 
        "userPseudoId": "USER_PSEUDO_ID " 
      }' 
Sostituisci quanto segue:
PROJECT_ID 
APP_ID 
USER_PSEUDO_ID 
 
 
 Esempio di comando e risultato 
curl  -X  POST  -H  "Authorization: Bearer  $( gcloud  auth  print-access-token) " 
-H  "Content-Type: application/json" 
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/sessions" 
-d  '{ 
"userPseudoId": "test_user" 
}' 
{ 
   "name" :  "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943" ,
   "state" :  "IN_PROGRESS" ,
   "userPseudoId" :  "test_user" ,
   "startTime" :  "2024-09-13T18:47:10.465311Z" ,
   "endTime" :  "2024-09-13T18:47:10.465311Z" 
}   
 Annota l'ID sessione, i numeri alla fine del campo name: nella
risposta JSON. Nel risultato di esempio, l'ID è 5386462384953257772.
Ti servirà nel passaggio successivo.
Genera una risposta e aggiungila a una sessione nella tua app:
curl  -X  POST  \ 
   -H  "Authorization: Bearer  $( gcloud  auth  print-access-token) "   \ 
   -H  "Content-Type: application/json"   \ 
   "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer"   \ 
   -d  '{ 
        "query": { "text": "QUERY "}, 
        "session": "projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions/SESSION_ID ", 
          "searchSpec":{ "searchParams": {"filter": "FILTER "} } 
}' 
Sostituisci quanto segue:
  PROJECT_ID APP_ID QUERY SESSION_ID name:, indicate nel passaggio 2. Per una sessione, utilizza lo stesso
  ID sessione in ogni turno.
  FILTER Filtra
    la ricerca personalizzata per dati strutturati o non strutturati .
   
 
 Esempio di comando e risultato 
curl  -X  POST  -H  "Authorization: Bearer  $( gcloud  auth  print-access-token) " 
-H  "Content-Type: application/json" 
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" 
-d  '{ 
"query": { "text": "Compare bigquery with spanner database?"}, 
"session":  "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943", 
}' 
     { 
   "answer" :  { 
     "name" :  "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943/answers/4861507376861383072" ,
     "state" :  "SUCCEEDED" ,
     "answerText" :  "BigQuery and Spanner are both powerful tools that can be used together to handle transactional and analytical workloads. Spanner is a fully managed relational database optimized for transactional workloads, while BigQuery is a serverless data warehouse designed for business agility. Spanner provides seamless replication across regions in Google Cloud and processes over 1 billion requests per second at peak. BigQuery analyzes over 110 terabytes of data per second. Users can leverage federated queries to read data from Spanner and write to a native BigQuery table. \n" ,
     "steps" :  [ 
       { 
         "state" :  "SUCCEEDED" ,
         "description" :  "Rephrase the query and search." ,
         "actions" :  [ 
           { 
             "searchAction" :  { 
               "query" :  "Compare bigquery with spanner database?" 
             } ,
             "observation" :  { 
               "searchResults" :  [ 
                 { 
                   "document" :  "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/ecc0e7547253f4ca3ff3328ce89995af" ,
                   "uri" :  "https://cloud.google.com/blog/topics/developers-practitioners/how-spanner-and-bigquery-work-together-handle-transactional-and-analytical-workloads" ,
                   "title" :  "How Spanner and BigQuery work together to handle transactional and analytical workloads | Google Cloud Blog" ,
                   "snippetInfo" :  [ 
                     { 
                       "snippet" :  "Using Cloud \u003cb\u003eSpanner\u003c/b\u003e and \u003cb\u003eBigQuery\u003c/b\u003e also allows customers to build their \u003cb\u003edata\u003c/b\u003e clouds using Google Cloud, a unified, open approach to \u003cb\u003edata\u003c/b\u003e-driven transformation ..." ,
                       "snippetStatus" :  "SUCCESS" 
                     } 
                   ] 
                 } ,
                 { 
                   "document" :  "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d7e238f73608a860e00b752ef80e2941" ,
                   "uri" :  "https://cloud.google.com/blog/products/databases/cloud-spanner-gets-stronger-with-bigquery-federated-queries" ,
                   "title" :  "Cloud Spanner gets stronger with BigQuery-federated queries | Google Cloud Blog" ,
                   "snippetInfo" :  [ 
                     { 
                       "snippet" :  "As enterprises compete for market share, their need for real-time insights has given rise to increased demand for transactional \u003cb\u003edatabases\u003c/b\u003e to support \u003cb\u003edata\u003c/b\u003e ..." ,
                       "snippetStatus" :  "SUCCESS" 
                     } 
                   ] 
                 } ,
                 { 
                   "document" :  "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/e10a5a3c267dc61579e7c00fefe656eb" ,
                   "uri" :  "https://cloud.google.com/blog/topics/developers-practitioners/replicating-cloud-spanner-bigquery-scale" ,
                   "title" :  "Replicating from Cloud Spanner to BigQuery at scale | Google Cloud Blog" ,
                   "snippetInfo" :  [ 
                     { 
                       "snippet" :  "... \u003cb\u003eSpanner data\u003c/b\u003e into \u003cb\u003eBigQuery\u003c/b\u003e for analytics. In this post, you will learn how to efficiently use this feature to replicate large tables with high throughput ..." ,
                       "snippetStatus" :  "SUCCESS" 
                     } 
                   ] 
                 } ,
                 ...
                 { 
                   "document" :  "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/8100ad36e1cac149eb9fc180a41d8f25" ,
                   "uri" :  "https://cloud.google.com/blog/products/gcp/from-nosql-to-new-sql-how-spanner-became-a-global-mission-critical-database" ,
                   "title" :  "How Spanner became a global, mission-critical database | Google Cloud Blog" ,
                   "snippetInfo" :  [ 
                     { 
                       "snippet" :  "... SQL \u003cb\u003evs\u003c/b\u003e. NoSQL dichotomy may no longer be relevant."   The  \u 003cb\u 003eSpanner\u 003c/b\u 003e  SQL  query  processor,  while   recognizable  as  a  standard  implementation,  has  unique ...", 
                      " snippetStatus": " SUCCESS" 
                    } 
                  ] 
                } 
              ] 
            } 
          } 
        ] 
      } 
    ] 
  }, 
  " session": { 
    " name": " projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943", 
    " state": " IN_PROGRESS", 
    " userPseudoId": " test_user", 
    " turns": [ 
      { 
        " query": { 
          " queryId": " projects/123456/locations/global/questions/741830", 
          " text": " Compare  bigquery  with  spanner  database?" 
        }, 
        " answer": " projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943/answers/4861507376861383072" 
      } 
    ], 
    " startTime": " 2024 -09-13T18:47:10.465311Z", 
    " endTime": " 2024 -09-13T18:47:10.465311Z" 
  }, 
  " answerQueryToken": " NMwKDAjFkpK3BhDU24uZAhIkNjZlNDIyZWYtMDAwMC0yMjVmLWIxMmQtZjQwMzA0M2FkYmNj" 
}   
 Ripeti il passaggio 3 per ogni nuova query nella sessione.
 
  
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
 
Ottieni una sessione dal datastore 
Il seguente comando mostra come chiamare il metodo get
  
  
  
  
  
    
  
  
  REST Per ottenere una sessione da un datastore:
Esegui questo comando curl:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions/SESSION_ID "
 Sostituisci quanto segue:
  PROJECT_ID APP_ID SESSION_ID  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Eliminare una sessione dall'app 
Il seguente comando mostra come chiamare il metodo delete
Per impostazione predefinita, le sessioni più vecchie di 60 giorni vengono eliminate automaticamente.
Tuttavia, se vuoi eliminare una sessione specifica, ad esempio se
contiene contenuti sensibili, utilizza questa chiamata API per eliminarla.
  
  
  
  
  
    
  
  
  REST Per eliminare una sessione da un'app:
Esegui questo comando curl:
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions/SESSION_ID "
 Sostituisci quanto segue:
  PROJECT_ID APP_ID SESSION_ID  
Esempio di comando e risultato 
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943"
      
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Aggiornare una sessione 
Esistono vari motivi per cui potresti voler aggiornare una sessione. Ad esempio,
per eseguire una delle seguenti operazioni:
Contrassegnare una sessione come completata 
Unire i messaggi di una sessione a un'altra 
Modificare lo pseudo ID di un utente 
 
Il seguente comando mostra come chiamare il metodo patch
  
  
  
  
  
    
  
  
  REST Per aggiornare una sessione da un'app:
Esegui questo comando curl:
curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions/SESSION_ID ?updateMask=state" \
  -d '{
        "state": "NEW_STATE "
      }'
 Sostituisci quanto segue:
  PROJECT_ID APP_ID SESSION_ID NEW_STATE IN_PROGRESS. 
Esempio di comando e risultato 
curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943?updateMask=state"
-d '{
"state": "IN_PROGRESS"
}'
     Questo esempio cambia lo stato della sessione in aperto (in corso). Segui un pattern simile per aggiornare userPseudoId.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Elenca tutte le sessioni 
Il seguente comando mostra come chiamare il metodo list
  
  
  
  
  
    
  
  
  REST Per elencare le sessioni per un'app:
Esegui questo comando curl:
curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions"
 Sostituisci quanto segue:
  PROJECT_ID APP_ID  
Esempio di comando e risultato 
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/sessions"
     La risposta contiene un elenco di sessioni e il nextPageToken. Se non viene restituito alcun
nextPageToken, non ci sono altre sessioni da elencare. La dimensione
predefinita della pagina è 50.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Elencare le sessioni di un utente 
Il seguente comando mostra come chiamare il metodo list
  
  
  
  
  
    
  
  
  REST Per elencare le sessioni associate a un utente o a un visitatore:
Esegui questo comando curl:
curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions?filter=userPseudoId=USER_PSEUDO_ID "
 Sostituisci quanto segue:
  PROJECT_ID APP_ID USER_PSEUDO_ID  
Esempio di comando e risultato 
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/sessions?filter=userPseudoId=test_user"
     In questo esempio, è presente una sessione associata a test_user. Vengono elencate le
query e le risposte nella sessione.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Elenca le sessioni per un utente e uno stato 
Il seguente comando mostra come chiamare il metodo list
  
  
  
  
  
    
  
  
  REST Per elencare le sessioni di un utente aperte o chiuse e associate a un determinato utente o visitatore, segui questi passaggi:
Esegui questo comando curl:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions?filter=userPseudoId=USER_PSEUDO_ID %20AND%20state=STATE "
 Sostituisci quanto segue:
  PROJECT_ID APP_ID USER_PSEUDO_ID STATE STATE_UNSPECIFIED (chiusa o sconosciuta) o
  IN_PROGRESS (aperta).
   
Esempio di comando e risultato 
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/sessions?filter=userPseudoId=test_user%20AND%20state=IN_PROGRESS"
     Il risultato previsto è una risposta vuota.