Generischen Datenspeicher für Empfehlungen erstellen

Wenn Sie einen Datenspeicher erstellen und Daten für allgemeine Empfehlungen aufnehmen möchten, rufen Sie den Abschnitt für die Quelle auf, die Sie verwenden möchten:

Website-URLs

Console

So erstellen Sie mit der Google Cloud Console einen Datenspeicher und indexieren Daten von einer Website:

  1. Rufen Sie in der Google Cloud Console die Seite Agent Builder auf.

    Zum Agent Builder

  2. Klicken Sie im Navigationsmenü auf Datenspeicher.

  3. Klicken Sie auf Neuer Datenspeicher.

  4. Wählen Sie auf der Seite Datenquelle auswählen Websitecontent.

  5. Wählen Sie aus, ob die erweiterte Websiteindexierung für diesen Datenspeicher aktiviert werden soll. Diese Option kann später nicht mehr deaktiviert werden.

    Die erweiterte Websiteindexierung bietet zusätzliche Funktionen wie Suchsummen, Suchanfragen mit Nachfragen und extrahierte Antworten. Für die erweiterte Websiteindexierung fallen zusätzliche Kosten an. Außerdem müssen Sie die Inhaberschaft der Domain für jede Website bestätigen, die Sie indexieren. Weitere Informationen finden Sie unter Erweiterte Websiteindexierung und Preise.

  6. Geben Sie im Feld Einzuschließende Websites die URLs der Websites an, die indexiert werden sollen. Geben Sie pro Zeile eine URL ohne Kommatrennzeichen an.

  7. Optional: Geben Sie im Feld Auszuschließende Websites Websites ein, die Sie aus Ihrer App ausschließen möchten.

  8. Klicken Sie auf Weiter.

  9. Geben Sie einen Namen für den Datenspeicher ein.

  10. Wählen Sie einen Speicherort für den Datenspeicher aus. Die erweiterte Websiteindexierung muss aktiviert sein, damit Sie einen Standort auswählen können.

  11. Klicken Sie auf Erstellen. Vertex AI Agent Builder erstellt Ihren Datenspeicher und zeigt ihn auf der Seite Datenspeicher an.

  12. Klicken Sie in der Spalte Name auf den Namen des Datenspeichers, um Informationen dazu aufzurufen. Die Seite Ihres Datenspeichers wird angezeigt.

    Wenn Sie die Erweiterte Websiteindexierung aktiviert haben, wird eine Warnung angezeigt, in der Sie aufgefordert werden, die Inhaberschaft Ihrer Domain zu bestätigen. Wenn Ihr Kontingent nicht ausreicht (die Anzahl der Seiten auf den von Ihnen angegebenen Websites das Kontingent für Ihr Projekt für die Option „Anzahl der Dokumente pro Projekt“ überschreitet), wird eine zusätzliche Warnung angezeigt, in der Sie aufgefordert werden, Ihr Kontingent zu erhöhen. In den folgenden Schritten erfahren Sie, wie Sie die Domaininhaberschaft bestätigen und Ihr Kontingent erhöhen.

  13. So bestätigen Sie die Inhaberschaft Ihrer Domain:

    1. Klicken Sie auf In der Google Search Console bestätigen. Die Seite Willkommen in der Google Search Console wird angezeigt.
    2. Folgen Sie der Anleitung auf dem Bildschirm, um eine Domain oder ein URL-Präfix zu bestätigen, je nachdem, ob Sie eine ganze Domain oder ein URL-Präfix bestätigen möchten, das zu einer Domain gehört. Weitere Informationen finden Sie in der Search Console-Hilfe unter Websiteinhaberschaft bestätigen.
    3. Wenn Sie den Workflow zur Domainbestätigung abgeschlossen haben, kehren Sie zur Seite Agent Builder zurück und klicken Sie im Navigationsmenü auf Datenspeicher.
    4. Klicken Sie in der Spalte Name auf den Namen des Datenspeichers. Die Seite Ihres Datenspeichers wird angezeigt.
    5. Klicken Sie auf Status aktualisieren, um die Werte in der Spalte Status zu aktualisieren. In der Spalte Status für Ihre Website wird angezeigt, dass die Indexierung in Bearbeitung ist.
    6. Wiederholen Sie die Schritte zur Domainbestätigung für jede Website, für die eine Domainbestätigung erforderlich ist, bis die Indexierung für alle Websites beginnt. Wenn in der Spalte Status für eine URL Indexiert angezeigt wird, sind für diese URL oder dieses URL-Muster erweiterte Funktionen zur Websiteindexierung verfügbar.
  14. So erhöhen Sie Ihr Kontingent:

    1. Klicken Sie auf Kontingent aktualisieren. Der Bereich Discovery Engine API wird angezeigt. Der Tab Kontingente ist ausgewählt.
    2. Folgen Sie der Anleitung unter Höheres Kontingent anfordern in der Google Cloud-Dokumentation. Erhöhen Sie das Kontingent für Anzahl der Dokumente.
    3. Nachdem Sie die Anfrage für ein höheres Kontingentlimit gesendet haben, kehren Sie zur Seite Agent Builder zurück und klicken Sie im Navigationsmenü auf Datenspeicher.
    4. Klicken Sie in der Spalte Name auf den Namen des Datenspeichers. In der Spalte Status sehen Sie, dass die Indexierung für die Websites, die das Kontingent überschritten haben, noch nicht abgeschlossen ist. Wenn in der Spalte Status für eine URL Indexiert angezeigt wird, sind für diese URL oder dieses URL-Muster erweiterte Funktionen zur Websiteindexierung verfügbar.

Nächste Schritte

  • Wenn Sie Ihren Datenspeicher mit einer App verknüpfen möchten, erstellen Sie eine App und wählen Sie Ihren Datenspeicher aus. Folgen Sie dazu der Anleitung unter App für allgemeine Empfehlungen erstellen.

  • Eine Vorschau, wie Ihre Empfehlungen nach der Einrichtung Ihrer App und Ihres Datenspeichers angezeigt werden, finden Sie unter Empfehlungen erhalten.

BigQuery

Wenn Sie Daten aus BigQuery aufnehmen möchten, erstellen Sie mithilfe der folgenden Schritte einen Datenspeicher und nehmen Sie Daten entweder über die Google Cloud Console oder die API auf.

Lesen Sie vor dem Importieren Ihrer Daten den Hilfeartikel Daten für die Aufnahme vorbereiten.

Console

So nehmen Sie mit der Google Cloud Console Daten aus BigQuery auf:

  1. Rufen Sie in der Google Cloud Console die Seite Agent Builder auf.

    Zum Agent Builder

  2. Rufen Sie die Seite Datenspeicher auf.

  3. Klicken Sie auf Neuer Datenspeicher.

  4. Wählen Sie auf der Seite Typ die Option BigQuery aus.

  5. Klicken Sie im Feld BigQuery-Pfad auf Durchsuchen, wählen Sie eine Tabelle aus, die Sie für die Datenaufnahme vorbereitet haben, und klicken Sie dann auf Auswählen. Alternativ können Sie den Speicherort der Tabelle direkt in das Feld BigQuery-Pfad eingeben.

  6. Wählen Sie aus, welche Daten Sie importieren.

  7. Klicken Sie auf Weiter.

  8. Wenn Sie strukturierte Daten einmalig importieren:

    1. Felder Schlüsselattributen zuordnen

    2. Wenn dem Schema wichtige Felder fehlen, können Sie sie mit Neues Feld hinzufügen hinzufügen.

      Weitere Informationen finden Sie unter Automatische Erkennung und Bearbeitung.

    3. Klicken Sie auf Weiter.

  9. Wählen Sie eine Region für den Datenspeicher aus.

  10. Geben Sie einen Namen für den Datenspeicher ein.

  11. Klicken Sie auf Erstellen.

  12. Rufen Sie die Seite Datenspeicher auf und klicken Sie auf den Namen des Datenspeichers, um auf der Seite Daten Details dazu aufzurufen.

  13. Den Status der Datenaufnahme können Sie auf der Seite Datenspeicher prüfen. Klicken Sie dazu auf den Namen des Datenspeichers, um auf der Seite Daten Details dazu aufzurufen. Wenn sich der Status in der Spalte „Status“ auf dem Tab Aktivität von In Bearbeitung zu Import abgeschlossen ändert, ist die Datenaufnahme abgeschlossen.

    Je nach Größe der Daten kann die Datenaufnahme einige Minuten bis mehrere Stunden dauern.

REST

So erstellen Sie über die Befehlszeile einen Datenspeicher und importieren Daten aus BigQuery:

  1. Erstellen Sie einen Datenspeicher.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_RECOMMENDATION"]
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • DATA_STORE_ID: Die ID des Datenspeichers für Empfehlungen, den Sie erstellen möchten. Die ID darf nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten.
    • DATA_STORE_DISPLAY_NAME: Der Anzeigename des Datenspeichers für Empfehlungen, den Sie erstellen möchten.
  2. Optional: Wenn Sie strukturierte Daten mit Ihrem eigenen Schema hochladen, können Sie das Schema angeben. Wenn Sie das Schema angeben, erhalten Sie in der Regel bessere Ergebnisse. Andernfalls wird das Schema automatisch erkannt. Weitere Informationen finden Sie unter Schema angeben oder automatisch erkennen.

    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/dataStores/DATA_STORE_ID/schemas/default_schema" \
    -d '{
      "structSchema": JSON_SCHEMA_OBJECT
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • DATA_STORE_ID: die ID des Datenspeichers für Empfehlungen.
    • JSON_SCHEMA_OBJECT: Ihr JSON-Schema als JSON-Objekt, z. B.:

      {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "keyPropertyMapping": "title"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "keyPropertyMapping": "category"
            }
          },
          "uri": {
            "type": "string",
            "keyPropertyMapping": "uri"
          }
        }
      }
      
  3. Daten aus BigQuery importieren.

    Wenn Sie ein Schema definiert haben, achten Sie darauf, dass die Daten diesem Schema entsprechen.

    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/dataStores/DATA_STORE_ID/branches/0/documents:import" \
    -d '{
      "bigquerySource": {
        "projectId": "PROJECT_ID",
        "datasetId":"DATASET_ID",
        "tableId": "TABLE_ID",
        "dataSchema": "DATA_SCHEMA",
      },
      "reconciliationMode": "RECONCILIATION_MODE",
      "autoGenerateIds": "AUTO_GENERATE_IDS",
      "idField": "ID_FIELD",
      "errorConfig": {
        "gcsPrefix": "ERROR_DIRECTORY"
      }
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • DATA_STORE_ID: die ID des Datenspeichers für Empfehlungen.
    • DATASET_ID: die ID des BigQuery-Datasets.
    • TABLE_ID: Die ID der BigQuery-Tabelle.
      • Wenn sich die BigQuery-Tabelle nicht unter PROJECT_ID befindet, müssen Sie dem Dienstkonto service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com die Berechtigung „BigQuery Data Viewer“ für die BigQuery-Tabelle erteilen. Wenn Sie beispielsweise eine BigQuery-Tabelle aus dem Quellprojekt „123“ in das Zielprojekt „456“ importieren, erteilen Sie service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com-Berechtigungen für die BigQuery-Tabelle im Projekt „123“.
    • DATA_SCHEMA: Optional. Mögliche Werte sind document und custom. Der Standardwert ist document.
      • document: Die verwendete BigQuery-Tabelle muss dem Standard-BigQuery-Schema entsprechen, das unter Daten für die Datenaufnahme vorbereiten beschrieben wird. Sie können die ID jedes Dokuments selbst definieren und alle Daten in den String „jsonData“ einfügen.
      • custom: Jedes BigQuery-Tabellenschema ist zulässig. Die IDs für jedes importierte Dokument werden automatisch von Recommendations generiert.
    • ERROR_DIRECTORY: Optional. Ein Cloud Storage-Verzeichnis für Fehlerinformationen zum Import, z. B. gs://<your-gcs-bucket>/directory/import_errors. Google empfiehlt, dieses Feld leer zu lassen, damit Recommendations automatisch ein temporäres Verzeichnis erstellt.
    • RECONCILIATION_MODE: Optional. Mögliche Werte sind FULL und INCREMENTAL. Der Standardwert ist INCREMENTAL. Wenn Sie INCREMENTAL angeben, werden die Daten aus BigQuery inkrementell in Ihrem Datenspeicher aktualisiert. Dadurch wird ein Upsert-Vorgang ausgeführt, bei dem neue Dokumente hinzugefügt und vorhandene Dokumente durch aktualisierte Dokumente mit derselben ID ersetzt werden. Wenn Sie FULL angeben, werden die Dokumente in Ihrem Datenspeicher vollständig neu ausgerichtet. Mit anderen Worten: Ihrem Datenspeicher werden neue und aktualisierte Dokumente hinzugefügt und Dokumente, die nicht in BigQuery sind, werden daraus entfernt. Der Modus FULL ist hilfreich, wenn Sie Dokumente, die Sie nicht mehr benötigen, automatisch löschen möchten.
    • AUTO_GENERATE_IDS: Optional. Gibt an, ob Dokument-IDs automatisch generiert werden sollen. Wenn dieser Wert auf true gesetzt ist, werden Dokument-IDs basierend auf einem Hash der Nutzlast generiert. Die generierten Dokument-IDs bleiben bei mehreren Importen möglicherweise nicht gleich. Wenn Sie IDs bei mehreren Importen automatisch generieren, sollten Sie reconciliationMode auf FULL festlegen, um einheitliche Dokument-IDs zu erhalten.

      Geben Sie autoGenerateIds nur an, wenn bigquerySource.dataSchema auf custom festgelegt ist. Andernfalls wird der Fehler INVALID_ARGUMENT zurückgegeben. Wenn Sie autoGenerateIds nicht angeben oder auf false festlegen, müssen Sie idField angeben. Andernfalls können die Dokumente nicht importiert werden.

    • ID_FIELD: Optional. Gibt an, welche Felder die Dokument-IDs sind. Bei BigQuery-Quelldateien gibt idField den Namen der Spalte in der BigQuery-Tabelle an, die die Dokument-IDs enthält.

      Geben Sie idField nur an, wenn (1) bigquerySource.dataSchema auf custom und (2) auto_generate_ids auf false festgelegt ist oder nicht angegeben wurde. Andernfalls wird der Fehler INVALID_ARGUMENT zurückgegeben.

      Der Wert des BigQuery-Spaltennamens muss vom Typ „String“ sein, zwischen 1 und 63 Zeichen lang sein und RFC-1034 entsprechen. Andernfalls können die Dokumente nicht importiert werden.

C#

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder C# API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;

public sealed partial class GeneratedDocumentServiceClientSnippets
{
    /// <summary>Snippet for ImportDocuments</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void ImportDocumentsRequestObject()
    {
        // Create client
        DocumentServiceClient documentServiceClient = DocumentServiceClient.Create();
        // Initialize request argument(s)
        ImportDocumentsRequest request = new ImportDocumentsRequest
        {
            ParentAsBranchName = BranchName.FromProjectLocationDataStoreBranch("[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]"),
            InlineSource = new ImportDocumentsRequest.Types.InlineSource(),
            ErrorConfig = new ImportErrorConfig(),
            ReconciliationMode = ImportDocumentsRequest.Types.ReconciliationMode.Unspecified,
            UpdateMask = new FieldMask(),
            AutoGenerateIds = false,
            IdField = "",
        };
        // Make the request
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> response = documentServiceClient.ImportDocuments(request);

        // Poll until the returned long-running operation is complete
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        ImportDocumentsResponse result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> retrievedResponse = documentServiceClient.PollOnceImportDocuments(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            ImportDocumentsResponse retrievedResult = retrievedResponse.Result;
        }
    }
}

Go

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Go API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.


package main

import (
	"context"

	discoveryengine "cloud.google.com/go/discoveryengine/apiv1"
	discoveryenginepb "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := discoveryengine.NewDocumentClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &discoveryenginepb.ImportDocumentsRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#ImportDocumentsRequest.
	}
	op, err := c.ImportDocuments(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Java

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Java API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.

import com.google.cloud.discoveryengine.v1.BranchName;
import com.google.cloud.discoveryengine.v1.DocumentServiceClient;
import com.google.cloud.discoveryengine.v1.ImportDocumentsRequest;
import com.google.cloud.discoveryengine.v1.ImportDocumentsResponse;
import com.google.cloud.discoveryengine.v1.ImportErrorConfig;
import com.google.protobuf.FieldMask;

public class SyncImportDocuments {

  public static void main(String[] args) throws Exception {
    syncImportDocuments();
  }

  public static void syncImportDocuments() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (DocumentServiceClient documentServiceClient = DocumentServiceClient.create()) {
      ImportDocumentsRequest request =
          ImportDocumentsRequest.newBuilder()
              .setParent(
                  BranchName.ofProjectLocationDataStoreBranchName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
                      .toString())
              .setErrorConfig(ImportErrorConfig.newBuilder().build())
              .setUpdateMask(FieldMask.newBuilder().build())
              .setAutoGenerateIds(true)
              .setIdField("idField1629396127")
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Node.js API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.

/**
 * This snippet has been automatically generated and should be regarded as a code template only.
 * It will require modifications to work.
 * It may require correct/in-range values for request initialization.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  The Inline source for the input content for documents.
 */
// const inlineSource = {}
/**
 *  Cloud Storage location for the input content.
 */
// const gcsSource = {}
/**
 *  BigQuery input source.
 */
// const bigquerySource = {}
/**
 *  FhirStore input source.
 */
// const fhirStoreSource = {}
/**
 *  Spanner input source.
 */
// const spannerSource = {}
/**
 *  Cloud SQL input source.
 */
// const cloudSqlSource = {}
/**
 *  Firestore input source.
 */
// const firestoreSource = {}
/**
 *  AlloyDB input source.
 */
// const alloyDbSource = {}
/**
 *  Cloud Bigtable input source.
 */
// const bigtableSource = {}
/**
 *  Required. The parent branch resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}`.
 *  Requires create/update permission.
 */
// const parent = 'abc123'
/**
 *  The desired location of errors incurred during the Import.
 */
// const errorConfig = {}
/**
 *  The mode of reconciliation between existing documents and the documents to
 *  be imported. Defaults to
 *  ReconciliationMode.INCREMENTAL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL.
 */
// const reconciliationMode = {}
/**
 *  Indicates which fields in the provided imported documents to update. If
 *  not set, the default is to update all fields.
 */
// const updateMask = {}
/**
 *  Whether to automatically generate IDs for the documents if absent.
 *  If set to `true`,
 *  Document.id google.cloud.discoveryengine.v1.Document.id s are
 *  automatically generated based on the hash of the payload, where IDs may not
 *  be consistent during multiple imports. In which case
 *  ReconciliationMode.FULL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.FULL 
 *  is highly recommended to avoid duplicate contents. If unset or set to
 *  `false`, Document.id google.cloud.discoveryengine.v1.Document.id s have
 *  to be specified using
 *  id_field google.cloud.discoveryengine.v1.ImportDocumentsRequest.id_field,
 *  otherwise, documents without IDs fail to be imported.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const autoGenerateIds = true
/**
 *  The field indicates the ID field or column to be used as unique IDs of
 *  the documents.
 *  For GcsSource google.cloud.discoveryengine.v1.GcsSource  it is the key of
 *  the JSON field. For instance, `my_id` for JSON `{"my_id": "some_uuid"}`.
 *  For others, it may be the column name of the table where the unique ids are
 *  stored.
 *  The values of the JSON field or the table column are used as the
 *  Document.id google.cloud.discoveryengine.v1.Document.id s. The JSON field
 *  or the table column must be of string type, and the values must be set as
 *  valid strings conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  with 1-63 characters. Otherwise, documents without valid IDs fail to be
 *  imported.
 *  Only set this field when
 *  auto_generate_ids google.cloud.discoveryengine.v1.ImportDocumentsRequest.auto_generate_ids 
 *  is unset or set as `false`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  If it is unset, a default value `_id` is used when importing from the
 *  allowed data sources.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const idField = 'abc123'

// Imports the Discoveryengine library
const {DocumentServiceClient} = require('@google-cloud/discoveryengine').v1;

// Instantiates a client
const discoveryengineClient = new DocumentServiceClient();

async function callImportDocuments() {
  // Construct request
  const request = {
    parent,
  };

  // Run request
  const [operation] = await discoveryengineClient.importDocuments(request);
  const [response] = await operation.promise();
  console.log(response);
}

callImportDocuments();

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.



def import_documents_bigquery_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    bigquery_dataset: str,
    bigquery_table: str,
) -> str:

    from google.api_core.client_options import ClientOptions
    from google.cloud import discoveryengine

    # TODO(developer): Uncomment these variables before running the sample.
    # project_id = "YOUR_PROJECT_ID"
    # location = "YOUR_LOCATION" # Values: "global"
    # data_store_id = "YOUR_DATA_STORE_ID"
    # bigquery_dataset = "YOUR_BIGQUERY_DATASET"
    # bigquery_table = "YOUR_BIGQUERY_TABLE"

    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DocumentServiceClient(client_options=client_options)

    # The full resource name of the search engine branch.
    # e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
    parent = client.branch_path(
        project=project_id,
        location=location,
        data_store=data_store_id,
        branch="default_branch",
    )

    request = discoveryengine.ImportDocumentsRequest(
        parent=parent,
        bigquery_source=discoveryengine.BigQuerySource(
            project_id=project_id,
            dataset_id=bigquery_dataset,
            table_id=bigquery_table,
            data_schema="custom",
        ),
        # Options: `FULL`, `INCREMENTAL`
        reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
    )

    # Make the request
    operation = client.import_documents(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name


def import_documents_gcs_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    gcs_uri: str,
) -> str:
    from google.api_core.client_options import ClientOptions
    from google.cloud import discoveryengine

    # TODO(developer): Uncomment these variables before running the sample.
    # project_id = "YOUR_PROJECT_ID"
    # location = "YOUR_LOCATION" # Values: "global"
    # data_store_id = "YOUR_DATA_STORE_ID"

    # Examples:
    # - Unstructured documents
    #   - `gs://bucket/directory/file.pdf`
    #   - `gs://bucket/directory/*.pdf`
    # - Unstructured documents with JSONL Metadata
    #   - `gs://bucket/directory/file.json`
    # - Unstructured documents with CSV Metadata
    #   - `gs://bucket/directory/file.csv`
    # gcs_uri = "YOUR_GCS_PATH"

    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DocumentServiceClient(client_options=client_options)

    # The full resource name of the search engine branch.
    # e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
    parent = client.branch_path(
        project=project_id,
        location=location,
        data_store=data_store_id,
        branch="default_branch",
    )

    request = discoveryengine.ImportDocumentsRequest(
        parent=parent,
        gcs_source=discoveryengine.GcsSource(
            # Multiple URIs are supported
            input_uris=[gcs_uri],
            # Options:
            # - `content` - Unstructured documents (PDF, HTML, DOC, TXT, PPTX)
            # - `custom` - Unstructured documents with custom JSONL metadata
            # - `document` - Structured documents in the discoveryengine.Document format.
            # - `csv` - Unstructured documents with CSV metadata
            data_schema="content",
        ),
        # Options: `FULL`, `INCREMENTAL`
        reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
    )

    # Make the request
    operation = client.import_documents(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Ruby

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Ruby API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.

require "google/cloud/discovery_engine/v1"

##
# Snippet for the import_documents call in the DocumentService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1::DocumentService::Client#import_documents.
#
def import_documents
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DocumentService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1::ImportDocumentsRequest.new

  # Call the import_documents method.
  result = client.import_documents request

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Nächste Schritte

  • Wenn Sie Ihren Datenspeicher mit einer App verknüpfen möchten, erstellen Sie eine App und wählen Sie Ihren Datenspeicher aus. Folgen Sie dazu der Anleitung unter Allgemeine Empfehlungs-App erstellen.

  • Eine Vorschau, wie Ihre Empfehlungen nach der Einrichtung Ihrer App und Ihres Datenspeichers angezeigt werden, finden Sie unter Empfehlungen erhalten.

Cloud Storage

Wenn Sie Daten aus Cloud Storage aufnehmen möchten, erstellen Sie mithilfe der folgenden Schritte einen Datenspeicher und nehmen Sie Daten entweder über die Google Cloud Console oder die API auf.

Lesen Sie vor dem Importieren Ihrer Daten den Hilfeartikel Daten für die Aufnahme vorbereiten.

Console

So nehmen Sie mit der Console Daten aus einem Cloud Storage-Bucket auf:

  1. Rufen Sie in der Google Cloud Console die Seite Agent Builder auf.

    Zum Agent Builder

  2. Rufen Sie die Seite Datenspeicher auf.

  3. Klicken Sie auf Neuer Datenspeicher.

  4. Wählen Sie auf der Seite Typ die Option Cloud Storage aus.

  5. Wählen Sie im Bereich Zu importierenden Ordner oder zu importierende Datei auswählen die Option Ordner oder Datei aus.

  6. Klicken Sie auf Durchsuchen, wählen Sie die Daten aus, die Sie für die Datenaufnahme vorbereitet haben, und klicken Sie dann auf Auswählen. Alternativ können Sie den Standort direkt in das Feld gs:// eingeben.

  7. Wählen Sie aus, welche Daten Sie importieren.

  8. Klicken Sie auf Weiter.

  9. Wenn Sie strukturierte Daten einmalig importieren:

    1. Felder Schlüsselattributen zuordnen

    2. Wenn dem Schema wichtige Felder fehlen, können Sie sie mit Neues Feld hinzufügen hinzufügen.

      Weitere Informationen finden Sie unter Automatische Erkennung und Bearbeitung.

    3. Klicken Sie auf Weiter.

  10. Wählen Sie eine Region für den Datenspeicher aus.

  11. Geben Sie einen Namen für den Datenspeicher ein.

  12. Klicken Sie auf Erstellen.

  13. Rufen Sie die Seite Datenspeicher auf und klicken Sie auf den Namen des Datenspeichers, um auf der Seite Daten Details dazu aufzurufen.

  14. Den Status der Datenaufnahme können Sie auf der Seite Datenspeicher prüfen. Klicken Sie dazu auf den Namen des Datenspeichers, um auf der Seite Daten Details dazu aufzurufen. Wenn sich der Status in der Spalte „Status“ auf dem Tab Aktivität von In Bearbeitung zu Import abgeschlossen ändert, ist die Datenaufnahme abgeschlossen.

    Je nach Größe der Daten kann die Datenaufnahme einige Minuten bis mehrere Stunden dauern.

REST

So erstellen Sie mit der Befehlszeile einen Datenspeicher und nehmen Daten aus Cloud Storage auf:

  1. Erstellen Sie einen Datenspeicher.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_RECOMMENDATION"],
      "contentConfig": "CONTENT_REQUIRED"
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • DATA_STORE_ID: Die ID des Datenspeichers für Empfehlungen, den Sie erstellen möchten. Die ID darf nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten.
    • DATA_STORE_DISPLAY_NAME: Der Anzeigename des Datenspeichers für Empfehlungen, den Sie erstellen möchten.
  2. Daten aus Cloud Storage importieren.

      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/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "gcsSource": {
          "inputUris": ["INPUT_FILE_PATTERN_1", "INPUT_FILE_PATTERN_2"],
          "dataSchema": "DATA_SCHEMA",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
        "errorConfig": {
          "gcsPrefix": "ERROR_DIRECTORY"
        }
      }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • DATA_STORE_ID: die ID des Datenspeichers für Empfehlungen.
    • INPUT_FILE_PATTERN: ein Dateimuster in Cloud Storage, das Ihre Dokumente enthält.

      Für strukturierte Daten oder unstrukturierte Daten mit Metadaten für unstrukturierte Dokumente ist ein Beispiel für das Eingabedateimuster gs://<your-gcs-bucket>/directory/object.json oder ein Muster, das mit einer oder mehreren Dateien übereinstimmt, z. B. gs://<your-gcs-bucket>/directory/*.json.

      Ein Beispiel für unstrukturierte Dokumente ist gs://<your-gcs-bucket>/directory/*.pdf. Jede Datei, die mit dem Muster übereinstimmt, wird zu einem Dokument.

      Wenn <your-gcs-bucket> nicht unter PROJECT_ID aufgeführt ist, müssen Sie dem Dienstkonto service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com die Berechtigungen „Storage-Objekt-Betrachter“ für den Cloud Storage-Bucket zuweisen. Wenn Sie beispielsweise einen Cloud Storage-Bucket aus dem Quellprojekt „123“ in das Zielprojekt „456“ importieren, gewähren Sie service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com-Berechtigungen für den Cloud Storage-Bucket unter dem Projekt „123“.

    • DATA_SCHEMA: Optional. Werte sind document, custom, csv und content. Der Standardwert ist document.

      • document: Laden Sie unstrukturierte Daten mit Metadaten für unstrukturierte Dokumente hoch. Jede Zeile der Datei muss einem der folgenden Formate entsprechen. Sie können die ID jedes Dokuments so definieren:

        • { "id": "<your-id>", "jsonData": "<JSON string>", "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
        • { "id": "<your-id>", "structData": <JSON object>, "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
      • custom: JSON für strukturierte Dokumente hochladen. Die Daten sind nach einem Schema organisiert. Sie können das Schema angeben. Andernfalls wird es automatisch erkannt. Sie können den JSON-String des Dokuments in einem einheitlichen Format direkt in jede Zeile einfügen. Empfehlungen generiert dann automatisch die IDs für jedes importierte Dokument.

      • content: Unstrukturierte Dokumente (PDF, HTML, DOC, TXT, PPTX) hochladen Die ID jedes Dokuments wird automatisch als die ersten 128 Bit von SHA256(GCS_URI) generiert, die als Hexadezimalstring codiert sind. Sie können mehrere Eingabedateimuster angeben, solange die Anzahl der übereinstimmenden Dateien die Grenze von 100.000 Dateien nicht überschreitet.

      • csv: Fügen Sie Ihrer CSV-Datei eine Kopfzeile hinzu, wobei jeder Kopfzeile ein Dokumentfeld zugeordnet ist. Geben Sie im Feld inputUris den Pfad zur CSV-Datei an.

    • ERROR_DIRECTORY: Optional. Ein Cloud Storage-Verzeichnis für Fehlerinformationen zum Import, z. B. gs://<your-gcs-bucket>/directory/import_errors. Wir empfehlen, dieses Feld leer zu lassen, damit Recommendations automatisch ein temporäres Verzeichnis erstellt.

    • RECONCILIATION_MODE: Optional. Mögliche Werte sind FULL und INCREMENTAL. Der Standardwert ist INCREMENTAL. Wenn Sie INCREMENTAL angeben, werden die Daten aus Cloud Storage inkrementell in Ihrem Datenspeicher aktualisiert. Dadurch wird ein Upsert-Vorgang ausgeführt, bei dem neue Dokumente hinzugefügt und vorhandene Dokumente durch aktualisierte Dokumente mit derselben ID ersetzt werden. Wenn Sie FULL angeben, werden die Dokumente in Ihrem Datenspeicher vollständig neu ausgerichtet. Mit anderen Worten: Ihrem Datenspeicher werden neue und aktualisierte Dokumente hinzugefügt und Dokumente, die nicht in Cloud Storage vorhanden sind, werden daraus entfernt. Der Modus FULL ist hilfreich, wenn Sie Dokumente, die Sie nicht mehr benötigen, automatisch löschen möchten.

    • AUTO_GENERATE_IDS: Optional. Gibt an, ob Dokument-IDs automatisch generiert werden sollen. Wenn dieser Wert auf true gesetzt ist, werden Dokument-IDs basierend auf einem Hash der Nutzlast generiert. Die generierten Dokument-IDs bleiben bei mehreren Importen möglicherweise nicht gleich. Wenn Sie IDs bei mehreren Importen automatisch generieren, empfehlen wir Ihnen, reconciliationMode auf FULL festzulegen, um einheitliche Dokument-IDs beizubehalten.

      Geben Sie autoGenerateIds nur an, wenn gcsSource.dataSchema auf custom oder csv festgelegt ist. Andernfalls wird der Fehler INVALID_ARGUMENT zurückgegeben. Wenn Sie autoGenerateIds nicht angeben oder auf false festlegen, müssen Sie idField angeben. Andernfalls können die Dokumente nicht importiert werden.

    • ID_FIELD: Optional. Gibt an, welche Felder die Dokument-IDs sind. Bei Cloud Storage-Quelldokumenten gibt idField den Namen in den JSON-Feldern an, die Dokument-IDs sind. Wenn {"my_id":"some_uuid"} beispielsweise das Feld für die Dokument-ID in einem Ihrer Dokumente ist, geben Sie "idField":"my_id" an. Dadurch werden alle JSON-Felder mit dem Namen "my_id" als Dokument-IDs identifiziert.

      Geben Sie dieses Feld nur an, wenn (1) gcsSource.dataSchema auf custom oder csv festgelegt ist und (2) auto_generate_ids auf false festgelegt ist oder nicht angegeben ist. Andernfalls wird der Fehler INVALID_ARGUMENT zurückgegeben.

      Der Wert des Cloud Storage-JSON-Felds muss vom Typ „String“ sein, zwischen 1 und 63 Zeichen lang und RFC-1034 entsprechen. Andernfalls können die Dokumente nicht importiert werden.

      Der mit id_field angegebene JSON-Feldname muss vom Typ „String“ sein, zwischen 1 und 63 Zeichen lang und RFC-1034 entsprechen. Andernfalls können die Dokumente nicht importiert werden.

C#

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder C# API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;

public sealed partial class GeneratedDocumentServiceClientSnippets
{
    /// <summary>Snippet for ImportDocuments</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void ImportDocumentsRequestObject()
    {
        // Create client
        DocumentServiceClient documentServiceClient = DocumentServiceClient.Create();
        // Initialize request argument(s)
        ImportDocumentsRequest request = new ImportDocumentsRequest
        {
            ParentAsBranchName = BranchName.FromProjectLocationDataStoreBranch("[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]"),
            InlineSource = new ImportDocumentsRequest.Types.InlineSource(),
            ErrorConfig = new ImportErrorConfig(),
            ReconciliationMode = ImportDocumentsRequest.Types.ReconciliationMode.Unspecified,
            UpdateMask = new FieldMask(),
            AutoGenerateIds = false,
            IdField = "",
        };
        // Make the request
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> response = documentServiceClient.ImportDocuments(request);

        // Poll until the returned long-running operation is complete
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        ImportDocumentsResponse result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> retrievedResponse = documentServiceClient.PollOnceImportDocuments(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            ImportDocumentsResponse retrievedResult = retrievedResponse.Result;
        }
    }
}

Go

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Go API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.


package main

import (
	"context"

	discoveryengine "cloud.google.com/go/discoveryengine/apiv1"
	discoveryenginepb "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := discoveryengine.NewDocumentClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &discoveryenginepb.ImportDocumentsRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#ImportDocumentsRequest.
	}
	op, err := c.ImportDocuments(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Java

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Java API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.

import com.google.cloud.discoveryengine.v1.BranchName;
import com.google.cloud.discoveryengine.v1.DocumentServiceClient;
import com.google.cloud.discoveryengine.v1.ImportDocumentsRequest;
import com.google.cloud.discoveryengine.v1.ImportDocumentsResponse;
import com.google.cloud.discoveryengine.v1.ImportErrorConfig;
import com.google.protobuf.FieldMask;

public class SyncImportDocuments {

  public static void main(String[] args) throws Exception {
    syncImportDocuments();
  }

  public static void syncImportDocuments() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (DocumentServiceClient documentServiceClient = DocumentServiceClient.create()) {
      ImportDocumentsRequest request =
          ImportDocumentsRequest.newBuilder()
              .setParent(
                  BranchName.ofProjectLocationDataStoreBranchName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
                      .toString())
              .setErrorConfig(ImportErrorConfig.newBuilder().build())
              .setUpdateMask(FieldMask.newBuilder().build())
              .setAutoGenerateIds(true)
              .setIdField("idField1629396127")
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Node.js API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.

/**
 * This snippet has been automatically generated and should be regarded as a code template only.
 * It will require modifications to work.
 * It may require correct/in-range values for request initialization.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  The Inline source for the input content for documents.
 */
// const inlineSource = {}
/**
 *  Cloud Storage location for the input content.
 */
// const gcsSource = {}
/**
 *  BigQuery input source.
 */
// const bigquerySource = {}
/**
 *  FhirStore input source.
 */
// const fhirStoreSource = {}
/**
 *  Spanner input source.
 */
// const spannerSource = {}
/**
 *  Cloud SQL input source.
 */
// const cloudSqlSource = {}
/**
 *  Firestore input source.
 */
// const firestoreSource = {}
/**
 *  AlloyDB input source.
 */
// const alloyDbSource = {}
/**
 *  Cloud Bigtable input source.
 */
// const bigtableSource = {}
/**
 *  Required. The parent branch resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}`.
 *  Requires create/update permission.
 */
// const parent = 'abc123'
/**
 *  The desired location of errors incurred during the Import.
 */
// const errorConfig = {}
/**
 *  The mode of reconciliation between existing documents and the documents to
 *  be imported. Defaults to
 *  ReconciliationMode.INCREMENTAL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL.
 */
// const reconciliationMode = {}
/**
 *  Indicates which fields in the provided imported documents to update. If
 *  not set, the default is to update all fields.
 */
// const updateMask = {}
/**
 *  Whether to automatically generate IDs for the documents if absent.
 *  If set to `true`,
 *  Document.id google.cloud.discoveryengine.v1.Document.id s are
 *  automatically generated based on the hash of the payload, where IDs may not
 *  be consistent during multiple imports. In which case
 *  ReconciliationMode.FULL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.FULL 
 *  is highly recommended to avoid duplicate contents. If unset or set to
 *  `false`, Document.id google.cloud.discoveryengine.v1.Document.id s have
 *  to be specified using
 *  id_field google.cloud.discoveryengine.v1.ImportDocumentsRequest.id_field,
 *  otherwise, documents without IDs fail to be imported.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const autoGenerateIds = true
/**
 *  The field indicates the ID field or column to be used as unique IDs of
 *  the documents.
 *  For GcsSource google.cloud.discoveryengine.v1.GcsSource  it is the key of
 *  the JSON field. For instance, `my_id` for JSON `{"my_id": "some_uuid"}`.
 *  For others, it may be the column name of the table where the unique ids are
 *  stored.
 *  The values of the JSON field or the table column are used as the
 *  Document.id google.cloud.discoveryengine.v1.Document.id s. The JSON field
 *  or the table column must be of string type, and the values must be set as
 *  valid strings conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  with 1-63 characters. Otherwise, documents without valid IDs fail to be
 *  imported.
 *  Only set this field when
 *  auto_generate_ids google.cloud.discoveryengine.v1.ImportDocumentsRequest.auto_generate_ids 
 *  is unset or set as `false`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  If it is unset, a default value `_id` is used when importing from the
 *  allowed data sources.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const idField = 'abc123'

// Imports the Discoveryengine library
const {DocumentServiceClient} = require('@google-cloud/discoveryengine').v1;

// Instantiates a client
const discoveryengineClient = new DocumentServiceClient();

async function callImportDocuments() {
  // Construct request
  const request = {
    parent,
  };

  // Run request
  const [operation] = await discoveryengineClient.importDocuments(request);
  const [response] = await operation.promise();
  console.log(response);
}

callImportDocuments();

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.



def import_documents_bigquery_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    bigquery_dataset: str,
    bigquery_table: str,
) -> str:

    from google.api_core.client_options import ClientOptions
    from google.cloud import discoveryengine

    # TODO(developer): Uncomment these variables before running the sample.
    # project_id = "YOUR_PROJECT_ID"
    # location = "YOUR_LOCATION" # Values: "global"
    # data_store_id = "YOUR_DATA_STORE_ID"
    # bigquery_dataset = "YOUR_BIGQUERY_DATASET"
    # bigquery_table = "YOUR_BIGQUERY_TABLE"

    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DocumentServiceClient(client_options=client_options)

    # The full resource name of the search engine branch.
    # e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
    parent = client.branch_path(
        project=project_id,
        location=location,
        data_store=data_store_id,
        branch="default_branch",
    )

    request = discoveryengine.ImportDocumentsRequest(
        parent=parent,
        bigquery_source=discoveryengine.BigQuerySource(
            project_id=project_id,
            dataset_id=bigquery_dataset,
            table_id=bigquery_table,
            data_schema="custom",
        ),
        # Options: `FULL`, `INCREMENTAL`
        reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
    )

    # Make the request
    operation = client.import_documents(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name


def import_documents_gcs_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    gcs_uri: str,
) -> str:
    from google.api_core.client_options import ClientOptions
    from google.cloud import discoveryengine

    # TODO(developer): Uncomment these variables before running the sample.
    # project_id = "YOUR_PROJECT_ID"
    # location = "YOUR_LOCATION" # Values: "global"
    # data_store_id = "YOUR_DATA_STORE_ID"

    # Examples:
    # - Unstructured documents
    #   - `gs://bucket/directory/file.pdf`
    #   - `gs://bucket/directory/*.pdf`
    # - Unstructured documents with JSONL Metadata
    #   - `gs://bucket/directory/file.json`
    # - Unstructured documents with CSV Metadata
    #   - `gs://bucket/directory/file.csv`
    # gcs_uri = "YOUR_GCS_PATH"

    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DocumentServiceClient(client_options=client_options)

    # The full resource name of the search engine branch.
    # e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
    parent = client.branch_path(
        project=project_id,
        location=location,
        data_store=data_store_id,
        branch="default_branch",
    )

    request = discoveryengine.ImportDocumentsRequest(
        parent=parent,
        gcs_source=discoveryengine.GcsSource(
            # Multiple URIs are supported
            input_uris=[gcs_uri],
            # Options:
            # - `content` - Unstructured documents (PDF, HTML, DOC, TXT, PPTX)
            # - `custom` - Unstructured documents with custom JSONL metadata
            # - `document` - Structured documents in the discoveryengine.Document format.
            # - `csv` - Unstructured documents with CSV metadata
            data_schema="content",
        ),
        # Options: `FULL`, `INCREMENTAL`
        reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
    )

    # Make the request
    operation = client.import_documents(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Ruby

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Ruby API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

In diesem Beispiel werden unstrukturierte Daten entweder aus BigQuery oder Cloud Storage in einen vorhandenen Datenspeicher aufgenommen.

require "google/cloud/discovery_engine/v1"

##
# Snippet for the import_documents call in the DocumentService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1::DocumentService::Client#import_documents.
#
def import_documents
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DocumentService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1::ImportDocumentsRequest.new

  # Call the import_documents method.
  result = client.import_documents request

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Nächste Schritte

  • Wenn Sie Ihren Datenspeicher mit einer App verknüpfen möchten, erstellen Sie eine App und wählen Sie Ihren Datenspeicher aus. Folgen Sie dazu der Anleitung unter Allgemeine Empfehlungs-App erstellen.

  • Eine Vorschau, wie Ihre Empfehlungen nach der Einrichtung Ihrer App und Ihres Datenspeichers angezeigt werden, finden Sie unter Empfehlungen erhalten.

Strukturierte JSON-Daten mit der API hochladen

So laden Sie ein JSON-Dokument oder -Objekt direkt über die API hoch:

Bevor Sie Ihre Daten importieren, müssen Sie sie für die Aufnahme vorbereiten.

REST

So erstellen Sie mit der Befehlszeile einen Datenspeicher und importieren strukturierte JSON-Daten:

  1. Erstellen Sie einen Datenspeicher.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_RECOMMENDATION"]
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • DATA_STORE_ID: Die ID des Datenspeichers für Empfehlungen, den Sie erstellen möchten. Die ID darf nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten.
    • DATA_STORE_DISPLAY_NAME: Der Anzeigename des Datenspeichers für Empfehlungen, den Sie erstellen möchten.
  2. Optional: Geben Sie ein eigenes Schema an. Wenn Sie ein Schema angeben, erhalten Sie in der Regel bessere Ergebnisse. Weitere Informationen finden Sie unter Schema angeben oder automatisch erkennen.

    curl -X PATCH \
    -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/dataStores/DATA_STORE_ID/schemas/default_schema" \
    -d '{
      "structSchema": JSON_SCHEMA_OBJECT
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
    • DATA_STORE_ID: die ID des Datenspeichers für Empfehlungen.
    • JSON_SCHEMA_OBJECT: Ihr JSON-Schema als JSON-Objekt, z. B.:

      {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "keyPropertyMapping": "title"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "keyPropertyMapping": "category"
            }
          },
          "uri": {
            "type": "string",
            "keyPropertyMapping": "uri"
          }
        }
      }
      
  3. Importieren Sie strukturierte Daten, die dem definierten Schema entsprechen.

    Es gibt verschiedene Möglichkeiten, Daten hochzuladen:

    • Laden Sie ein JSON-Dokument hoch.

      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/dataStores/DATA_STORE_ID/branches/0/documents?documentId=DOCUMENT_ID" \
      -d '{
        "jsonData": "JSON_DOCUMENT_STRING"
      }'
      

      Ersetzen Sie JSON_DOCUMENT_STRING durch das JSON-Dokument als einzelnen String. Dieser muss dem JSON-Schema entsprechen, das Sie im vorherigen Schritt angegeben haben, z. B.:

      ```none
      { \"title\": \"test title\", \"categories\": [\"cat_1\", \"cat_2\"], \"uri\": \"test uri\"}
      ```
      
    • Laden Sie ein JSON-Objekt hoch.

      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/dataStores/DATA_STORE_ID/branches/0/documents?documentId=DOCUMENT_ID" \
      -d '{
        "structData": JSON_DOCUMENT_OBJECT
      }'
      

      Ersetzen Sie JSON_DOCUMENT_OBJECT durch das JSON-Dokument als JSON-Objekt. Dieser muss dem JSON-Schema entsprechen, das Sie im vorherigen Schritt angegeben haben, z. B.:

      ```json
      {
        "title": "test title",
        "categories": [
          "cat_1",
          "cat_2"
        ],
        "uri": "test uri"
      }
      ```
      
    • Aktualisieren Sie die Daten mit einem JSON-Dokument.

      curl -X PATCH \
      -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/dataStores/DATA_STORE_ID/branches/0/documents/DOCUMENT_ID" \
      -d '{
        "jsonData": "JSON_DOCUMENT_STRING"
      }'
      
    • Aktualisieren Sie mit einem JSON-Objekt.

      curl -X PATCH \
      -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/dataStores/DATA_STORE_ID/branches/0/documents/DOCUMENT_ID" \
      -d '{
        "structData": JSON_DOCUMENT_OBJECT
      }'
      

Nächste Schritte

  • Wenn Sie Ihren Datenspeicher mit einer App verknüpfen möchten, erstellen Sie eine App und wählen Sie Ihren Datenspeicher aus. Folgen Sie dazu der Anleitung unter Allgemeine Empfehlungs-App erstellen.

  • Eine Vorschau, wie Ihre Empfehlungen nach der Einrichtung Ihrer App und Ihres Datenspeichers angezeigt werden, finden Sie unter Empfehlungen erhalten.

Datenspeicher mit Terraform erstellen

Sie können mit Terraform einen leeren Datenspeicher erstellen. Nachdem der leere Datenspeicher erstellt wurde, können Sie Daten mithilfe der Google Cloud Console oder API-Befehle in den Datenspeicher aufnehmen.

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Informationen zum Erstellen eines leeren Datenspeichers mit Terraform finden Sie unter google_discovery_engine_data_store.