Benutzerdefinierten Empfehlungsdatenspeicher erstellen

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

BigQuery

Sie haben zwei Möglichkeiten, Datenspeicher aus BigQuery-Tabellen zu erstellen:

  • Einmalige Aufnahme: Sie importieren Daten aus einer BigQuery-Tabelle in einen Datenspeicher. Die Daten im Datenspeicher ändern sich nur, wenn Sie sie manuell aktualisieren.

  • Regelmäßige Aufnahme: Sie importieren Daten aus einer oder mehreren BigQuery-Tabellen und legen eine Synchronisierungshäufigkeit fest, die bestimmt, wie oft die Datenspeicher mit den neuesten Daten aus dem BigQuery-Dataset aktualisiert werden.

In der folgenden Tabelle werden die beiden Möglichkeiten zum Importieren von BigQuery-Daten in Vertex AI Search-Datenspeicher verglichen.

Einmalige Aufnahme Regelmäßige Aufnahme
Allgemein verfügbar (GA) Öffentliche Vorschau
Die Daten müssen manuell aktualisiert werden. Die Daten werden automatisch alle 1, 3 oder 5 Tage aktualisiert. Daten können nicht manuell aktualisiert werden.
Vertex AI Search erstellt einen einzelnen Datenspeicher aus einer Tabelle in BigQuery. Vertex AI Search erstellt einen Datenconnector für ein BigQuery-Dataset und einen Datenspeicher (als Entitätsdatenspeicher bezeichnet) für jede angegebene Tabelle. Für jeden Datenconnector müssen die Tabellen denselben Datentyp (z. B. strukturiert) haben und sich im selben BigQuery-Dataset befinden.
Daten aus mehreren Tabellen können in einem Datenspeicher kombiniert werden, indem zuerst Daten aus einer Tabelle und dann weitere Daten aus einer anderen Quelle oder BigQuery-Tabelle aufgenommen werden. Da der manuelle Datenimport nicht unterstützt wird, können die Daten in einem Entitätsdatenspeicher nur aus einer BigQuery-Tabelle stammen.
Die Zugriffssteuerung für Datenquellen wird unterstützt. Die Zugriffssteuerung für Datenquellen wird nicht unterstützt. Die importierten Daten können Zugriffssteuerungen enthalten, diese werden jedoch nicht berücksichtigt.
Sie können einen Datenspeicher entweder über dieGoogle Cloud Console oder die API erstellen. Sie müssen die Console verwenden, um Daten-Connectors und die zugehörigen Datenspeicher für Entitäten zu erstellen.
CMEK-kompatibel. CMEK-kompatibel.

Einmaliger Import aus BigQuery

Wenn Sie Daten aus einer BigQuery-Tabelle aufnehmen möchten, gehen Sie so vor, um einen Datenspeicher zu erstellen und Daten entweder über die Google Cloud Konsole oder die API aufzunehmen.

Bevor Sie Ihre Daten importieren, lesen Sie den Artikel Daten für die Aufnahme vorbereiten.

Console

So verwenden Sie die Google Cloud Konsole zum Erfassen von Daten aus BigQuery:

  1. Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf.

    KI-Anwendungen

  2. Rufen Sie die Seite Datenspeicher auf.

  3. Klicken Sie auf Datenspeicher erstellen.

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

  5. Wählen Sie im Abschnitt Welche Art von Daten importieren Sie? den Datentyp aus, den Sie importieren möchten.

  6. Wählen Sie im Abschnitt Synchronisierungshäufigkeit die Option Einmal aus.

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

  8. Klicken Sie auf Weiter.

  9. Wenn Sie strukturierte Daten einmalig importieren:

    1. Felder Schlüsselattributen zuordnen

    2. Wenn wichtige Felder im Schema fehlen, fügen Sie sie mit Neues Feld hinzufügen hinzu.

      Weitere Informationen finden Sie unter Automatische Erkennung und Bearbeitung.

    3. Klicken Sie auf Weiter.

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

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

  12. Klicken Sie auf Erstellen.

  13. Wenn Sie den Status der Aufnahme prüfen möchten, rufen Sie die Seite Datenspeicher auf und klicken Sie auf den Namen des Datenspeichers, um Details dazu auf der Seite Daten anzeigen zu lassen. Wenn sich die Statusspalte auf dem Tab Aktivität von Wird ausgeführt in Import abgeschlossen ändert, ist die Aufnahme abgeschlossen.

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

REST

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

  1. Datenspeicher erstellen.

    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/v1/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: die ID Ihres Google Cloud Projekts.
    • DATA_STORE_ID: Die ID des Vertex AI Search-Datenspeichers, den Sie erstellen möchten. Diese ID darf nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten.
    • DATA_STORE_DISPLAY_NAME: Der Anzeigename des Vertex AI Search-Datenspeichers, den Sie erstellen möchten.
  2. 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",
        "aclEnabled": "BOOLEAN"
      },
      "reconciliationMode": "RECONCILIATION_MODE",
      "autoGenerateIds": "AUTO_GENERATE_IDS",
      "idField": "ID_FIELD",
      "errorConfig": {
        "gcsPrefix": "ERROR_DIRECTORY"
      }
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Google Cloud Projekts.
    • DATA_STORE_ID: Die ID des Vertex AI Search-Datenspeichers.
    • 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 die Berechtigungen service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com für die BigQuery-Tabelle im Projekt „123“.
    • DATA_SCHEMA: Optional. Mögliche Werte sind document und custom. Der Standardwert ist document.
      • document: Die BigQuery-Tabelle, die Sie verwenden, muss dem standardmäßigen BigQuery-Schema entsprechen, das unter Daten für die Aufnahme vorbereiten bereitgestellt wird. Sie können die ID jedes Dokuments selbst definieren, während Sie alle Daten in den jsonData-String einfügen.
      • custom: Es wird jedes BigQuery-Tabellenschema akzeptiert und Vertex AI Search generiert automatisch die IDs für jedes importierte Dokument.
    • 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 Vertex AI Search 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 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 indexiert. Mit anderen Worten: Neue und aktualisierte Dokumente werden Ihrem Datenspeicher hinzugefügt und Dokumente, die nicht in BigQuery enthalten sind, werden aus Ihrem Datenspeicher 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 auf Grundlage eines Hash der Nutzlast generiert. Beachten Sie, dass generierte Dokument-IDs bei mehreren Importvorgängen möglicherweise nicht konsistent bleiben. Wenn Sie IDs bei mehreren Importvorgängen automatisch generieren, empfiehlt Google dringend, reconciliationMode auf FULL zu setzen, 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 schlägt der Import der Dokumente fehl.

    • 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 festgelegt ist und (2) auto_generate_ids auf false festgelegt oder nicht angegeben ist. 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 schlägt der Import der Dokumente fehl.

C#

Weitere Informationen finden Sie in der Referenzdokumentation zur AI Applications C# API.

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

Datenspeicher erstellen

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

public sealed partial class GeneratedDataStoreServiceClientSnippets
{
    /// <summary>Snippet for CreateDataStore</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 CreateDataStoreRequestObject()
    {
        // Create client
        DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.Create();
        // Initialize request argument(s)
        CreateDataStoreRequest request = new CreateDataStoreRequest
        {
            ParentAsCollectionName = CollectionName.FromProjectLocationCollection("[PROJECT]", "[LOCATION]", "[COLLECTION]"),
            DataStore = new DataStore(),
            DataStoreId = "",
            CreateAdvancedSiteSearch = false,
            CmekConfigNameAsCmekConfigName = CmekConfigName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
            SkipDefaultSchemaCreation = false,
        };
        // Make the request
        Operation<DataStore, CreateDataStoreMetadata> response = dataStoreServiceClient.CreateDataStore(request);

        // Poll until the returned long-running operation is complete
        Operation<DataStore, CreateDataStoreMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        DataStore 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<DataStore, CreateDataStoreMetadata> retrievedResponse = dataStoreServiceClient.PollOnceCreateDataStore(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            DataStore retrievedResult = retrievedResponse.Result;
        }
    }
}

Dokumente importieren

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 = "",
            ForceRefreshContent = false,
        };
        // 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 AI Applications Go API.

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

Datenspeicher erstellen


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.NewDataStoreClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

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

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

Dokumente importieren


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 AI Applications Java API.

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

Datenspeicher erstellen

import com.google.cloud.discoveryengine.v1.CollectionName;
import com.google.cloud.discoveryengine.v1.CreateDataStoreRequest;
import com.google.cloud.discoveryengine.v1.DataStore;
import com.google.cloud.discoveryengine.v1.DataStoreServiceClient;

public class SyncCreateDataStore {

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

  public static void syncCreateDataStore() 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 (DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.create()) {
      CreateDataStoreRequest request =
          CreateDataStoreRequest.newBuilder()
              .setParent(CollectionName.of("[PROJECT]", "[LOCATION]", "[COLLECTION]").toString())
              .setDataStore(DataStore.newBuilder().build())
              .setDataStoreId("dataStoreId929489618")
              .setCreateAdvancedSiteSearch(true)
              .setSkipDefaultSchemaCreation(true)
              .build();
      DataStore response = dataStoreServiceClient.createDataStoreAsync(request).get();
    }
  }
}

Dokumente importieren

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")
              .setForceRefreshContent(true)
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Weitere Informationen finden Sie in der Referenzdokumentation zur AI Applications Node.js API.

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

Datenspeicher erstellen

/**
 * 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.
 */
/**
 *  Resource name of the CmekConfig to use for protecting this DataStore.
 */
// const cmekConfigName = 'abc123'
/**
 *  DataStore without CMEK protections. If a default CmekConfig is set for
 *  the project, setting this field will override the default CmekConfig as
 *  well.
 */
// const disableCmek = true
/**
 *  Required. The parent resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}`.
 */
// const parent = 'abc123'
/**
 *  Required. The DataStore google.cloud.discoveryengine.v1.DataStore  to
 *  create.
 */
// const dataStore = {}
/**
 *  Required. The ID to use for the
 *  DataStore google.cloud.discoveryengine.v1.DataStore, which will become
 *  the final component of the
 *  DataStore google.cloud.discoveryengine.v1.DataStore's resource name.
 *  This field must conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  standard with a length limit of 63 characters. Otherwise, an
 *  INVALID_ARGUMENT error is returned.
 */
// const dataStoreId = 'abc123'
/**
 *  A boolean flag indicating whether user want to directly create an advanced
 *  data store for site search.
 *  If the data store is not configured as site
 *  search (GENERIC vertical and PUBLIC_WEBSITE content_config), this flag will
 *  be ignored.
 */
// const createAdvancedSiteSearch = true
/**
 *  A boolean flag indicating whether to skip the default schema creation for
 *  the data store. Only enable this flag if you are certain that the default
 *  schema is incompatible with your use case.
 *  If set to true, you must manually create a schema for the data store before
 *  any documents can be ingested.
 *  This flag cannot be specified if `data_store.starting_schema` is specified.
 */
// const skipDefaultSchemaCreation = true

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

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

async function callCreateDataStore() {
  // Construct request
  const request = {
    parent,
    dataStore,
    dataStoreId,
  };

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

callCreateDataStore();

Dokumente importieren

/**
 * 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'
/**
 *  Optional. Whether to force refresh the unstructured content of the
 *  documents.
 *  If set to `true`, the content part of the documents will be refreshed
 *  regardless of the update status of the referencing content.
 */
// const forceRefreshContent = true

// 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 AI Applications Python API.

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

Datenspeicher erstellen


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"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  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.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(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.CreateDataStoreMetadata(operation.metadata)

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

    return operation.operation.name

Dokumente importieren


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)

Ruby

Weitere Informationen finden Sie in der Referenzdokumentation zur AI Applications Ruby API.

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

Datenspeicher erstellen

require "google/cloud/discovery_engine/v1"

##
# Snippet for the create_data_store call in the DataStoreService 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::DataStoreService::Client#create_data_store.
#
def create_data_store
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DataStoreService::Client.new

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

  # Call the create_data_store method.
  result = client.create_data_store 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

Dokumente importieren

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

Mit BigQuery verbinden und Daten regelmäßig synchronisieren

Bevor Sie Ihre Daten importieren, lesen Sie den Artikel Daten für die Aufnahme vorbereiten.

In der folgenden Anleitung wird beschrieben, wie Sie einen Datenconnector erstellen, der ein BigQuery-Dataset mit einem Vertex AI Search-Datenconnector verknüpft, und wie Sie für jeden Datenspeicher, den Sie erstellen möchten, eine Tabelle im Dataset angeben. Datenspeicher, die untergeordnete Elemente von Daten-Connectors sind, werden als Entitätsdatenspeicher bezeichnet.

Die Daten aus dem Dataset werden regelmäßig mit den Datenspeichern der Entitäten synchronisiert. Sie können die Synchronisierung täglich, alle drei Tage oder alle fünf Tage festlegen.

Console

So erstellen Sie mit der Google Cloud Console einen Connector, der Daten regelmäßig aus einem BigQuery-Dataset mit Vertex AI Search synchronisiert:

  1. Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf.

    KI-Anwendungen

  2. Klicken Sie im Navigationsmenü auf Datenspeicher.

  3. Klicken Sie auf Datenspeicher erstellen.

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

  5. Wählen Sie den Typ der Daten aus, die Sie importieren.

  6. Klicken Sie auf Regelmäßig.

  7. Wählen Sie die Synchronisierungshäufigkeit aus, also wie oft der Vertex AI Search-Connector mit dem BigQuery-Dataset synchronisiert werden soll. Sie können die Häufigkeit später ändern.

  8. Klicken Sie im Feld BigQuery-Datasetpfad auf Durchsuchen und wählen Sie das Dataset aus, das die Tabellen enthält, die Sie für den Import vorbereitet haben. Alternativ können Sie den Speicherort der Tabelle direkt in das Feld BigQuery-Pfad eingeben. Das Format für den Pfad ist projectname.datasetname.

  9. Klicken Sie im Feld Zu synchronisierende Tabellen auf Durchsuchen und wählen Sie dann eine Tabelle mit den Daten aus, die Sie für Ihren Datenspeicher benötigen.

  10. Wenn das Dataset weitere Tabellen enthält, die Sie für Datenspeicher verwenden möchten, klicken Sie auf Tabelle hinzufügen und geben Sie auch diese Tabellen an.

  11. Klicken Sie auf Weiter.

  12. Wählen Sie eine Region für Ihren Datenspeicher aus, geben Sie einen Namen für den Daten-Connector ein und klicken Sie auf Erstellen.

    Sie haben jetzt einen Data Connector erstellt, der Daten regelmäßig mit dem BigQuery-Dataset synchronisiert. Außerdem haben Sie einen oder mehrere Entitätsdatenspeicher erstellt. Die Datenspeicher haben dieselben Namen wie die BigQuery-Tabellen.

  13. Wenn Sie den Status der Aufnahme prüfen möchten, rufen Sie die Seite Datenspeicher auf und klicken Sie auf den Namen des Daten-Connectors, um Details dazu auf der Seite Daten > Tab Aktivität der Datenaufnahme anzeigen zu lassen. Wenn sich die Statusspalte auf dem Tab Aktivität von Wird ausgeführt in Erfolgreich ändert, ist die erste Aufnahme abgeschlossen.

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

Nachdem Sie Ihre Datenquelle eingerichtet und Daten zum ersten Mal importiert haben, synchronisiert der Datenspeicher Daten aus dieser Quelle in der Häufigkeit, die Sie bei der Einrichtung ausgewählt haben. Etwa eine Stunde nach dem Erstellen des Daten-Connectors erfolgt die erste Synchronisierung. Die nächste Synchronisierung erfolgt dann etwa 24, 72 oder 120 Stunden später.

Nächste Schritte

  • Wenn Sie Ihren Datenspeicher an eine App anhängen möchten, erstellen Sie eine App und wählen Sie Ihren Datenspeicher aus. Folgen Sie dazu der Anleitung unter Benutzerdefinierte Empfehlungs-App erstellen.

  • Informationen zum Abrufen von Empfehlungen nach der Einrichtung Ihrer App und Ihres Datenspeichers finden Sie unter Empfehlungen abrufen.

Cloud Storage

Sie haben zwei Möglichkeiten, Datenspeicher aus Cloud Storage-Tabellen zu erstellen:

  • Einmalige Aufnahme: Sie importieren Daten aus einem Cloud Storage-Ordner oder einer Cloud Storage-Datei in einen Datenspeicher. Die Daten im Datenspeicher ändern sich nur, wenn Sie sie manuell aktualisieren.

  • Regelmäßige Aufnahme: Sie importieren Daten aus einem Cloud Storage-Ordner oder einer Cloud Storage-Datei und legen eine Synchronisierungshäufigkeit fest, die bestimmt, wie oft der Datenspeicher mit den neuesten Daten von diesem Cloud Storage-Speicherort aktualisiert wird.

In der folgenden Tabelle werden die beiden Möglichkeiten zum Importieren von Cloud Storage-Daten in Vertex AI Search-Datenspeicher verglichen.

Einmalige Aufnahme Regelmäßige Aufnahme
Allgemein verfügbar (GA) Öffentliche Vorschau
Die Daten müssen manuell aktualisiert werden. Die Daten werden automatisch alle ein, drei oder fünf Tage aktualisiert. Daten können nicht manuell aktualisiert werden.
Vertex AI Search erstellt einen einzelnen Datenspeicher aus einem Ordner oder einer Datei in Cloud Storage. Vertex AI Search erstellt einen Datenconnector und verknüpft einen Datenspeicher (einen Entitätsdatenspeicher) damit für die angegebene Datei oder den angegebenen Ordner. Jeder Cloud Storage-Datenconnector kann einen einzelnen Entity-Datenspeicher haben.
Daten aus mehreren Dateien, Ordnern und Buckets können in einem Datenspeicher kombiniert werden, indem Sie zuerst Daten von einem Cloud Storage-Speicherort und dann weitere Daten von einem anderen Speicherort aufnehmen. Da der manuelle Datenimport nicht unterstützt wird, können die Daten in einem Entity-Datenspeicher nur aus einer Cloud Storage-Datei oder einem Cloud Storage-Ordner stammen.
Die Zugriffssteuerung für Datenquellen wird unterstützt. Weitere Informationen finden Sie unter Zugriffssteuerung für Datenquellen. Die Zugriffssteuerung für Datenquellen wird nicht unterstützt. Die importierten Daten können Zugriffssteuerungen enthalten, diese werden jedoch nicht berücksichtigt.
Sie können einen Datenspeicher entweder über dieGoogle Cloud Console oder die API erstellen. Sie müssen die Console verwenden, um Daten-Connectors und die zugehörigen Datenspeicher für Entitäten zu erstellen.
CMEK-kompatibel. CMEK-kompatibel.

Einmaliger Import aus Cloud Storage

Wenn Sie Daten aus Cloud Storage aufnehmen möchten, gehen Sie so vor, um einen Datenspeicher zu erstellen und Daten entweder über die Google Cloud Console oder die API aufzunehmen.

Bevor Sie Ihre Daten importieren, lesen Sie den Artikel Daten für die Aufnahme vorbereiten.

Console

So verwenden Sie die Console zum Erfassen von Daten aus einem Cloud Storage-Bucket:

  1. Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf.

    KI-Anwendungen

  2. Rufen Sie die Seite Datenspeicher auf.

  3. Klicken Sie auf Datenspeicher erstellen.

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

  5. Wählen Sie im Bereich Ordner oder Datei für Import auswählen die Option Ordner oder Datei aus.

  6. Klicken Sie auf Durchsuchen, wählen Sie die Daten aus, die Sie für die Aufnahme 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 Art von Daten Sie importieren.

  8. Klicken Sie auf Weiter.

  9. Wenn Sie strukturierte Daten einmalig importieren:

    1. Felder Schlüsselattributen zuordnen

    2. Wenn wichtige Felder im Schema fehlen, fügen Sie sie mit Neues Feld hinzufügen hinzu.

      Weitere Informationen finden Sie unter Automatische Erkennung und Bearbeitung.

    3. Klicken Sie auf Weiter.

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

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

  12. Optional: Wenn Sie unstrukturierte Dokumente ausgewählt haben, können Sie Parsing- und Chunking-Optionen für Ihre Dokumente auswählen. Informationen zum Vergleichen von Parsern finden Sie unter Dokumente parsen. Informationen zum Aufteilen von Dokumenten in Chunks finden Sie unter Dokumente für RAG in Chunks aufteilen.

    Für den OCR-Parser und den Layout-Parser können zusätzliche Kosten anfallen. Preise für Document AI-Funktionen

    Wenn Sie einen Parser auswählen möchten, maximieren Sie Optionen für die Dokumentverarbeitung und geben Sie die gewünschten Parseroptionen an.

  13. Klicken Sie auf Erstellen.

  14. Wenn Sie den Status der Aufnahme prüfen möchten, rufen Sie die Seite Datenspeicher auf und klicken Sie auf den Namen des Datenspeichers, um Details dazu auf der Seite Daten anzeigen zu lassen. Wenn sich die Statusspalte auf dem Tab Aktivität von Wird ausgeführt in Import abgeschlossen ändert, ist die Aufnahme abgeschlossen.

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

REST

So erstellen Sie einen Datenspeicher über die Befehlszeile und erfassen Daten aus Cloud Storage:

  1. Datenspeicher erstellen.

    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/v1/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: die ID Ihres Google Cloud Projekts.
    • DATA_STORE_ID: Die ID des Vertex AI Search-Datenspeichers, den Sie erstellen möchten. Diese ID darf nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten.
    • DATA_STORE_DISPLAY_NAME: Der Anzeigename des Vertex AI Search-Datenspeichers, 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: die ID Ihres Google Cloud Projekts.
    • DATA_STORE_ID: Die ID des Vertex AI Search-Datenspeichers.
    • INPUT_FILE_PATTERN: Ein Dateimuster in Cloud Storage, das Ihre Dokumente enthält.

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

      Ein Beispiel für unstrukturierte Dokumente ist gs://<your-gcs-bucket>/directory/*.pdf. Jede Datei, die dem Muster entspricht, 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 gewähren. 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 im Projekt „123“.

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

      • document: Unstrukturierte Daten mit Metadaten für unstrukturierte Dokumente hochladen. Jede Zeile der Datei muss eines der folgenden Formate haben. Sie können die ID jedes Dokuments 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. Vertex AI Search 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 übereinstimmenden Dateien das Limit von 100.000 Dateien nicht überschreiten.

      • csv: Fügen Sie Ihrer CSV-Datei eine Kopfzeile hinzu, in der jeder Header einem Dokumentfeld zugeordnet ist. Geben Sie den Pfad zur CSV-Datei mit dem Feld inputUris an.

    • 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 Vertex AI Search 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 in Ihrem Datenspeicher inkrementell 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 indexiert. Das bedeutet, dass Ihrem Datenspeicher neue und aktualisierte Dokumente hinzugefügt werden und Dokumente, die nicht in Cloud Storage enthalten sind, aus Ihrem Datenspeicher entfernt werden. Der Modus FULL ist hilfreich, wenn Sie Dokumente, die Sie nicht mehr benötigen, automatisch löschen lassen 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 auf Grundlage eines Hash der Nutzlast generiert. Beachten Sie, dass generierte Dokument-IDs bei mehreren Importvorgängen möglicherweise nicht konsistent bleiben. Wenn Sie IDs bei mehreren Importvorgängen automatisch generieren, empfiehlt Google dringend, reconciliationMode auf FULL zu setzen, 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 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 sein und RFC-1034 entsprechen. Andernfalls können die Dokumente nicht importiert werden.

      Der von id_field angegebene JSON-Feldname 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 AI Applications C# API.

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

Datenspeicher erstellen

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

public sealed partial class GeneratedDataStoreServiceClientSnippets
{
    /// <summary>Snippet for CreateDataStore</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 CreateDataStoreRequestObject()
    {
        // Create client
        DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.Create();
        // Initialize request argument(s)
        CreateDataStoreRequest request = new CreateDataStoreRequest
        {
            ParentAsCollectionName = CollectionName.FromProjectLocationCollection("[PROJECT]", "[LOCATION]", "[COLLECTION]"),
            DataStore = new DataStore(),
            DataStoreId = "",
            CreateAdvancedSiteSearch = false,
            CmekConfigNameAsCmekConfigName = CmekConfigName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
            SkipDefaultSchemaCreation = false,
        };
        // Make the request
        Operation<DataStore, CreateDataStoreMetadata> response = dataStoreServiceClient.CreateDataStore(request);

        // Poll until the returned long-running operation is complete
        Operation<DataStore, CreateDataStoreMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        DataStore 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<DataStore, CreateDataStoreMetadata> retrievedResponse = dataStoreServiceClient.PollOnceCreateDataStore(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            DataStore retrievedResult = retrievedResponse.Result;
        }
    }
}

Dokumente importieren

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 = "",
            ForceRefreshContent = false,
        };
        // 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 AI Applications Go API.

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

Datenspeicher erstellen


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.NewDataStoreClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

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

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

Dokumente importieren


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 AI Applications Java API.

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

Datenspeicher erstellen

import com.google.cloud.discoveryengine.v1.CollectionName;
import com.google.cloud.discoveryengine.v1.CreateDataStoreRequest;
import com.google.cloud.discoveryengine.v1.DataStore;
import com.google.cloud.discoveryengine.v1.DataStoreServiceClient;

public class SyncCreateDataStore {

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

  public static void syncCreateDataStore() 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 (DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.create()) {
      CreateDataStoreRequest request =
          CreateDataStoreRequest.newBuilder()
              .setParent(CollectionName.of("[PROJECT]", "[LOCATION]", "[COLLECTION]").toString())
              .setDataStore(DataStore.newBuilder().build())
              .setDataStoreId("dataStoreId929489618")
              .setCreateAdvancedSiteSearch(true)
              .setSkipDefaultSchemaCreation(true)
              .build();
      DataStore response = dataStoreServiceClient.createDataStoreAsync(request).get();
    }
  }
}

Dokumente importieren

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")
              .setForceRefreshContent(true)
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Weitere Informationen finden Sie in der Referenzdokumentation zur AI Applications Node.js API.

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

Datenspeicher erstellen

/**
 * 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.
 */
/**
 *  Resource name of the CmekConfig to use for protecting this DataStore.
 */
// const cmekConfigName = 'abc123'
/**
 *  DataStore without CMEK protections. If a default CmekConfig is set for
 *  the project, setting this field will override the default CmekConfig as
 *  well.
 */
// const disableCmek = true
/**
 *  Required. The parent resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}`.
 */
// const parent = 'abc123'
/**
 *  Required. The DataStore google.cloud.discoveryengine.v1.DataStore  to
 *  create.
 */
// const dataStore = {}
/**
 *  Required. The ID to use for the
 *  DataStore google.cloud.discoveryengine.v1.DataStore, which will become
 *  the final component of the
 *  DataStore google.cloud.discoveryengine.v1.DataStore's resource name.
 *  This field must conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  standard with a length limit of 63 characters. Otherwise, an
 *  INVALID_ARGUMENT error is returned.
 */
// const dataStoreId = 'abc123'
/**
 *  A boolean flag indicating whether user want to directly create an advanced
 *  data store for site search.
 *  If the data store is not configured as site
 *  search (GENERIC vertical and PUBLIC_WEBSITE content_config), this flag will
 *  be ignored.
 */
// const createAdvancedSiteSearch = true
/**
 *  A boolean flag indicating whether to skip the default schema creation for
 *  the data store. Only enable this flag if you are certain that the default
 *  schema is incompatible with your use case.
 *  If set to true, you must manually create a schema for the data store before
 *  any documents can be ingested.
 *  This flag cannot be specified if `data_store.starting_schema` is specified.
 */
// const skipDefaultSchemaCreation = true

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

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

async function callCreateDataStore() {
  // Construct request
  const request = {
    parent,
    dataStore,
    dataStoreId,
  };

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

callCreateDataStore();

Dokumente importieren

/**
 * 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'
/**
 *  Optional. Whether to force refresh the unstructured content of the
 *  documents.
 *  If set to `true`, the content part of the documents will be refreshed
 *  regardless of the update status of the referencing content.
 */
// const forceRefreshContent = true

// 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 AI Applications Python API.

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

Datenspeicher erstellen


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"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  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.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(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.CreateDataStoreMetadata(operation.metadata)

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

    return operation.operation.name

Dokumente importieren

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)

Ruby

Weitere Informationen finden Sie in der Referenzdokumentation zur AI Applications Ruby API.

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

Datenspeicher erstellen

require "google/cloud/discovery_engine/v1"

##
# Snippet for the create_data_store call in the DataStoreService 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::DataStoreService::Client#create_data_store.
#
def create_data_store
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DataStoreService::Client.new

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

  # Call the create_data_store method.
  result = client.create_data_store 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

Dokumente importieren

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

Mit Cloud Storage verbinden und regelmäßig synchronisieren

Bevor Sie Ihre Daten importieren, lesen Sie den Artikel Daten für die Aufnahme vorbereiten.

In der folgenden Anleitung wird beschrieben, wie Sie einen Daten-Connector erstellen, der einen Cloud Storage-Speicherort mit einem Vertex AI Search-Daten-Connector verknüpft, und wie Sie einen Ordner oder eine Datei an diesem Speicherort für den Datenspeicher angeben, den Sie erstellen möchten. Datenspeicher, die untergeordnete Elemente von Daten-Connectors sind, werden als Entitätsdatenspeicher bezeichnet.

Die Daten werden regelmäßig mit dem Entitätendatenspeicher synchronisiert. Sie können die Synchronisierung täglich, alle drei Tage oder alle fünf Tage festlegen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite KI-Anwendungen auf.

    KI-Anwendungen

  2. Rufen Sie die Seite Datenspeicher auf.

  3. Klicken Sie auf Datenspeicher erstellen.

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

  5. Wählen Sie aus, welche Art von Daten Sie importieren.

  6. Klicken Sie auf Regelmäßig.

  7. Wählen Sie die Häufigkeit der Synchronisierung aus, um festzulegen, wie oft der Vertex AI Search-Connector mit dem Cloud Storage-Speicherort synchronisiert werden soll. Sie können die Häufigkeit später ändern.

  8. Wählen Sie im Bereich Ordner oder Datei für Import auswählen die Option Ordner oder Datei aus.

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

  10. Klicken Sie auf Weiter.

  11. Wählen Sie eine Region für Ihren Daten-Connector aus.

  12. Geben Sie einen Namen für den Daten-Connector ein.

  13. Optional: Wenn Sie unstrukturierte Dokumente ausgewählt haben, können Sie Parsing- und Chunking-Optionen für Ihre Dokumente auswählen. Informationen zum Vergleichen von Parsern finden Sie unter Dokumente parsen. Informationen zum Aufteilen von Dokumenten in Chunks finden Sie unter Dokumente für RAG in Chunks aufteilen.

    Für den OCR-Parser und den Layout-Parser können zusätzliche Kosten anfallen. Preise für Document AI-Funktionen

    Wenn Sie einen Parser auswählen möchten, maximieren Sie Optionen für die Dokumentverarbeitung und geben Sie die gewünschten Parseroptionen an.

  14. Klicken Sie auf Erstellen.

    Sie haben jetzt einen Datenconnector erstellt, der Daten regelmäßig mit dem Cloud Storage-Speicherort synchronisiert. Sie haben auch einen Entitätsdatenspeicher mit dem Namen gcs_store erstellt.

  15. Wenn Sie den Status der Aufnahme prüfen möchten, rufen Sie die Seite Datenspeicher auf und klicken Sie auf den Namen des Daten-Connectors, um Details dazu auf der Seite Daten anzeigen zu lassen.

    Tab Datenaufnahmeaktivität Wenn sich die Statusspalte auf dem Tab Aktivität zur Datenaufnahme von Wird ausgeführt in Erfolgreich ändert, ist die erste Aufnahme abgeschlossen.

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

Nachdem Sie Ihre Datenquelle eingerichtet und Daten zum ersten Mal importiert haben, werden Daten aus dieser Quelle in der Häufigkeit synchronisiert, die Sie bei der Einrichtung ausgewählt haben. Etwa eine Stunde nach dem Erstellen des Daten-Connectors erfolgt die erste Synchronisierung. Die nächste Synchronisierung erfolgt dann etwa 24, 72 oder 120 Stunden später.

Nächste Schritte

  • Wenn Sie Ihren Datenspeicher an eine App anhängen möchten, erstellen Sie eine App und wählen Sie Ihren Datenspeicher aus. Folgen Sie dazu der Anleitung unter Benutzerdefinierte Empfehlungs-App erstellen.

  • Informationen zum Abrufen von Empfehlungen nach der Einrichtung Ihrer App und Ihres Datenspeichers finden Sie unter Empfehlungen abrufen.

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 einen Datenspeicher und importieren strukturierte JSON-Daten über die Befehlszeile:

  1. Datenspeicher erstellen.

    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: die ID Ihres Google Cloud Projekts.
    • DATA_STORE_ID: Die ID des Empfehlungsdatenspeichers, den Sie erstellen möchten. Diese ID darf nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten.
    • DATA_STORE_DISPLAY_NAME: Der Anzeigename des Empfehlungsdatenspeichers, den Sie erstellen möchten.
  2. Optional: Geben Sie Ihr eigenes Schema an. Wenn Sie ein Schema angeben, erhalten Sie in der Regel bessere Ergebnisse. Weitere Informationen finden Sie unter Schema bereitstellen oder automatisch erkennen lassen.

    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: die ID Ihres Google Cloud Projekts.
    • DATA_STORE_ID: die ID des Empfehlungsdatenspeichers.
    • 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. Dies 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. Dies 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"
      }
      ```
      
    • Mit einem JSON-Dokument aktualisieren.

      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"
      }'
      
    • Mit einem JSON-Objekt aktualisieren.

      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

Datenspeicher mit Terraform erstellen

Sie können Terraform verwenden, um einen leeren Datenspeicher zu erstellen. Nachdem der leere Datenspeicher erstellt wurde, können Sie Daten in den Datenspeicher aufnehmen. Verwenden Sie dazu die Google Cloud Console oder API-Befehle.

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.