Crea un almacén de datos de búsqueda

Para crear un almacén de datos y transferir datos para la búsqueda, ve a la sección de la fuente que planeas usar:

Para sincronizar datos desde una fuente de datos de terceros, consulta Cómo conectar una fuente de datos de terceros.

Crea un almacén de datos con el contenido del sitio web

Usa el siguiente procedimiento para crear un almacén de datos y indexar sitios web.

Para usar un almacén de datos de sitios web después de crearlo, debes adjuntarlo a una app que tenga activadas las funciones empresariales. Puedes activar la edición Enterprise para una app cuando la creas. Esto genera costos adicionales. Consulta Cómo crear una app de búsqueda y Acerca de las funciones avanzadas.

Console

Para usar la consola de Google Cloud y crear un almacén de datos y indexar sitios web, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. En el menú de navegación, haz clic en Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

  4. En la página Fuente, selecciona Contenido de sitios web.

  5. Elige si quieres activar la indexación avanzada de sitios web para este almacén de datos. Esta opción no se puede activar o desactivar más adelante.

    La indexación avanzada de sitios web proporciona funciones adicionales, como el resumen de búsquedas, la búsqueda con preguntas adicionales y las respuestas extractivas. La indexación avanzada de sitios web genera un costo adicional y requiere que verifiques la propiedad del dominio de cualquier sitio web que indexes. Para obtener más información, consulta Indexación avanzada de sitios web y Precios.

  6. En el campo Sitios que se deben incluir, ingresa los patrones de URL que coincidan con los sitios web que deseas incluir en tu almacén de datos. Incluye un patrón de URL por línea, sin separadores de comas. Por ejemplo: example.com/docs/*.

  7. Opcional: En el campo Sitios para excluir, ingresa los patrones de URL que deseas excluir de tu almacén de datos.

    Los sitios excluidos tienen prioridad sobre los incluidos. Por lo tanto, si incluyes example.com/docs/*, pero excluyes example.com, no se indexarán sitios web. Para obtener más información, consulta Datos del sitio web.

  8. Haz clic en Continuar.

  9. Selecciona una ubicación para tu almacén de datos.

    • Cuando creas un almacén de datos de búsqueda de sitios web básico, este siempre se establece en global (Global).
    • Cuando creas un almacén de datos con indexación avanzada de sitios web, puedes seleccionar una ubicación. Debido a que los sitios web que se indexan deben ser públicos, Google recomienda que selecciones global (Global) como tu ubicación. Esto garantiza la máxima disponibilidad de todos los servicios de búsqueda y respuesta, y elimina las limitaciones de los almacenes de datos regionales.
  10. Ingresa un nombre para tu almacén de datos.

  11. Haz clic en Crear. Vertex AI Search crea tu almacén de datos y lo muestra en la página Almacenes de datos.

  12. Para ver información sobre tu almacén de datos, haz clic en su nombre en la columna Nombre. Aparecerá la página de tu almacén de datos.

    • Si activaste la Indexación avanzada de sitios web, aparecerá una advertencia que te solicitará que verifiques los dominios de tu almacén de datos.
    • Si tienes un déficit de cuota (la cantidad de páginas en los sitios web que especificaste supera la cuota de "Cantidad de documentos por proyecto" de tu proyecto), aparecerá una advertencia adicional para que actualices tu cuota.
  13. Para verificar los dominios de los patrones de URL en tu almacén de datos, sigue las instrucciones que se indican en la página Cómo verificar los dominios de los sitios web.

  14. Para actualizar tu cuota, sigue estos pasos:

    1. Haz clic en Actualizar cuota. Aparecerá la página IAM y administración de la consola de Google Cloud .
    2. Sigue las instrucciones que se indican en Solicita un límite de cuota más alto en la Google Cloud documentación. La cuota que se aumentará es Cantidad de documentos en el servicio de la API de Discovery Engine.
    3. Después de enviar tu solicitud de un límite de cuota más alto, vuelve a la página Aplicaciones de IA y haz clic en Almacenes de datos en el menú de navegación.
    4. Haz clic en el nombre de tu almacén de datos en la columna Nombre. La columna Estado indica que la indexación está en curso para los sitios web que superaron la cuota. Cuando la columna Estado de una URL muestra Indexada, las funciones de indexación avanzada de sitios web están disponibles para esa URL o patrón de URL.

    Para obtener más información, consulta Cuota para el indexado de páginas web en la página "Cuotas y límites".

Python

Para obtener más información, consulta la documentación de referencia de la API de Python de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos


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

Importa sitios web

#     from google.api_core.client_options import ClientOptions
#
#     from google.cloud import discoveryengine_v1 as 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"
#     # NOTE: Do not include http or https protocol in the URI pattern
#     # uri_pattern = "cloud.google.com/generative-ai-app-builder/docs/*"
#
#     #  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.SiteSearchEngineServiceClient(
#         client_options=client_options
#     )
#
#     # The full resource name of the data store
#     # e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}
#     site_search_engine = client.site_search_engine_path(
#         project=project_id, location=location, data_store=data_store_id
#     )
#
#     # Target Site to index
#     target_site = discoveryengine.TargetSite(
#         provided_uri_pattern=uri_pattern,
#         # Options: INCLUDE, EXCLUDE
#         type_=discoveryengine.TargetSite.Type.INCLUDE,
#         exact_match=False,
#     )
#
#     # Make the request
#     operation = client.create_target_site(
#         parent=site_search_engine,
#         target_site=target_site,
#     )
#
#     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.CreateTargetSiteMetadata(operation.metadata)
#
#     # Handle the response
#     print(response)
#     print(metadata)

Próximos pasos

Importa desde BigQuery

Vertex AI Search admite la búsqueda en los datos de BigQuery.

Puedes crear almacenes de datos a partir de tablas de BigQuery de dos maneras:

  • Transferencia única: Importas datos de una tabla de BigQuery a un almacén de datos. Los datos del almacén de datos no cambian, a menos que actualices los datos de forma manual.

  • Transferencia periódica: Importas datos de una o más tablas de BigQuery y configuras una frecuencia de sincronización que determina la frecuencia con la que se actualizan los almacenes de datos con los datos más recientes del conjunto de datos de BigQuery.

En la siguiente tabla, se comparan las dos formas en que puedes importar datos de BigQuery a los almacenes de datos de Vertex AI Search.

Transferencia única Transferencia periódica
Disponibilidad general (DG). Versión preliminar pública.
Los datos se deben actualizar de forma manual. Los datos se actualizan automáticamente cada 1, 3 o 5 días. Los datos no se pueden actualizar manualmente.
Vertex AI Search crea un solo almacén de datos a partir de una tabla en BigQuery. Vertex AI Search crea un conector de datos para un conjunto de datos de BigQuery y un almacén de datos (llamado almacén de datos de entidad) para cada tabla especificada. Para cada conector de datos, las tablas deben tener el mismo tipo de datos (por ejemplo, estructurados) y estar en el mismo conjunto de datos de BigQuery.
Para combinar datos de varias tablas en un almacén de datos, primero debes transferir datos de una tabla y, luego, más datos de otra fuente o tabla de BigQuery. Debido a que no se admite la importación manual de datos, los datos de un almacén de datos de entidades solo se pueden obtener de una tabla de BigQuery.
Se admite el control de acceso a la fuente de datos. No se admite el control de acceso a la fuente de datos. Los datos importados pueden contener controles de acceso, pero estos no se respetarán.
Puedes crear un almacén de datos con la consola deGoogle Cloud o la API. Debes usar la consola para crear conectores de datos y sus almacenes de datos de entidades.
Cumple con CMEK. Cumple con CMEK.

Importa una vez desde BigQuery

Para transferir datos de una tabla de BigQuery, sigue los pasos que se indican a continuación para crear un almacén de datos y transferir datos con la Google Cloud consola o la API.

Antes de importar tus datos, consulta Prepara los datos para la transferencia.

Console

Para usar la consola de Google Cloud y transferir datos de BigQuery, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. Ve a la página Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

  4. En la página Fuente, selecciona BigQuery.

  5. Selecciona el tipo de datos que importarás en la sección ¿Qué tipo de datos estás importando?.

  6. Selecciona Una vez en la sección Frecuencia de sincronización.

  7. En el campo Ruta de acceso de BigQuery, haz clic en Explorar, selecciona una tabla que hayas preparado para transferir y, luego, haz clic en Seleccionar. Como alternativa, ingresa la ubicación de la tabla directamente en el campo Ruta de BigQuery.

  8. Haz clic en Continuar.

  9. Si realizas una importación única de datos estructurados, haz lo siguiente:

    1. Asigna campos a propiedades clave.

    2. Si faltan campos importantes en el esquema, usa Agregar campo nuevo para agregarlos.

      Para obtener más información, consulta Acerca de la detección automática y la edición.

    3. Haz clic en Continuar.

  10. Elige una región para tu almacén de datos.

  11. Ingresa un nombre para tu almacén de datos.

  12. Haz clic en Crear.

  13. Para verificar el estado de la transferencia, ve a la página Almacenes de datos y haz clic en el nombre de tu almacén de datos para ver los detalles en la página Datos. Cuando la columna de estado de la pestaña Actividad cambie de En curso a Importación completada, se habrá completado la transferencia.

    Según el tamaño de tus datos, la transferencia puede tardar varios minutos o varias horas.

REST

Para usar la línea de comandos y crear un almacén de datos y, luego, importar datos desde BigQuery, sigue estos pasos.

  1. Crea un almacén de datos.

    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_SEARCH"]
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
    • DATA_STORE_ID: El ID del almacén de datos de Vertex AI Search que deseas crear. Este ID solo puede contener letras en minúscula, dígitos, guiones bajos y guiones.
    • DATA_STORE_DISPLAY_NAME: El nombre visible del almacén de datos de Vertex AI Search que deseas crear.

    Opcional: Si subes datos no estructurados y deseas configurar el análisis de documentos o activar el fragmento de documentos para RAG, especifica el objeto documentProcessingConfig y, luego, inclúyelo en tu solicitud de creación de almacén de datos. Se recomienda configurar un analizador de OCR para PDFs si transfieres PDFs escaneados. Para obtener información sobre cómo configurar opciones de análisis o división, consulta Cómo analizar y dividir documentos.

  2. Importa datos de BigQuery.

    Si definiste un esquema, asegúrate de que los datos cumplan con ese esquema.

    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"
      }
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
    • DATA_STORE_ID: El ID del almacén de datos de Vertex AI Search.
    • DATASET_ID: El ID del conjunto de datos de BigQuery.
    • TABLE_ID: El ID de la tabla de BigQuery.
      • Si la tabla de BigQuery no está en PROJECT_ID, debes otorgarle a la cuenta de servicio service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com permiso de "Visualizador de datos de BigQuery" para la tabla de BigQuery. Por ejemplo, si importas una tabla de BigQuery del proyecto de origen "123" al proyecto de destino "456", otorga permisos service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com para la tabla de BigQuery en el proyecto "123".
    • DATA_SCHEMA: es opcional. Los valores son document y custom. El valor predeterminado es document.
      • document: La tabla de BigQuery que uses debe cumplir con el esquema predeterminado de BigQuery que se proporciona en Cómo preparar los datos para la transferencia. Puedes definir el ID de cada documento por tu cuenta, mientras unes todos los datos en la cadena jsonData.
      • custom: Se acepta cualquier esquema de tabla de BigQuery, y Vertex AI Search genera automáticamente los IDs de cada documento que se importa.
    • ERROR_DIRECTORY: es opcional. Un directorio de Cloud Storage para obtener información sobre los errores de la importación (por ejemplo, gs://<your-gcs-bucket>/directory/import_errors). Google recomienda dejar este campo vacío para permitir que Vertex AI Search cree automáticamente un directorio temporal.
    • RECONCILIATION_MODE: es opcional. Los valores son FULL y INCREMENTAL. El valor predeterminado es INCREMENTAL. Especificar INCREMENTAL provoca una actualización incremental de los datos de BigQuery a tu almacén de datos. Esto realiza una operación de inserción y actualización, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Especificar FULL causa una rebase completa de los documentos en tu almacén de datos. En otras palabras, los documentos nuevos y actualizados se agregan a tu almacén de datos, y los documentos que no están en BigQuery se quitan de tu almacén de datos. El modo FULL es útil si quieres borrar automáticamente los documentos que ya no necesitas.
    • AUTO_GENERATE_IDS: es opcional. Especifica si se deben generar automáticamente los IDs de documento. Si se establece en true, los IDs de los documentos se generan en función de un hash de la carga útil. Ten en cuenta que los IDs de documentos generados pueden no mantenerse coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda configurar reconciliationMode como FULL para mantener IDs de documentos coherentes.

      Especifica autoGenerateIds solo cuando bigquerySource.dataSchema se establece en custom. De lo contrario, se muestra un error INVALID_ARGUMENT. Si no especificas autoGenerateIds o lo configuras en false, debes especificar idField. De lo contrario, los documentos no se importarán.

    • ID_FIELD: es opcional. Especifica qué campos son los IDs de los documentos. En el caso de los archivos de origen de BigQuery, idField indica el nombre de la columna en la tabla de BigQuery que contiene los IDs de documentos.

      Especifica idField solo cuando: (1) bigquerySource.dataSchema se establece como custom y (2) auto_generate_ids se establece como false o no se especifica. De lo contrario, se muestra un error INVALID_ARGUMENT.

      El valor del nombre de la columna de BigQuery debe ser de tipo cadena, debe tener entre 1 y 63 caracteres y debe cumplir con RFC-1034. De lo contrario, no se podrán importar los documentos.

C#

Para obtener más información, consulta la documentación de referencia de la API de C# de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos

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;
        }
    }
}

Importar documentos

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

Para obtener más información, consulta la documentación de referencia de la API de Go de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos


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
}

Importar documentos


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

Para obtener más información, consulta la documentación de referencia de la API de Java de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos

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();
    }
  }
}

Importar documentos

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

Para obtener más información, consulta la documentación de referencia de la API de Node.js de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos

/**
 * 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();

Importar documentos

/**
 * 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

Para obtener más información, consulta la documentación de referencia de la API de Python de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos


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

Importar documentos


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

Para obtener más información, consulta la documentación de referencia de la API de Ruby de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos

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

Importar documentos

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

Conéctate a BigQuery con sincronización periódica

Antes de importar tus datos, consulta Prepara los datos para la transferencia.

En el siguiente procedimiento, se describe cómo crear un conector de datos que asocie un conjunto de datos de BigQuery con un conector de datos de Vertex AI Search y cómo especificar una tabla en el conjunto de datos para cada almacén de datos que desees crear. Los almacenes de datos que son secundarios de los conectores de datos se denominan almacenes de datos de entidad.

Los datos del conjunto de datos se sincronizan periódicamente con los almacenes de datos de la entidad. Puedes especificar la sincronización a diario, cada tres días o cada cinco días.

Console

Para usar la consola de Google Cloud y crear un conector que sincronice periódicamente los datos de un conjunto de datos de BigQuery con Vertex AI Search, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. En el menú de navegación, haz clic en Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

  4. En la página Fuente, selecciona BigQuery.

  5. Selecciona el tipo de datos que deseas importar.

  6. Haz clic en Periódico.

  7. Selecciona la frecuencia de sincronización, es decir, la frecuencia con la que deseas que el conector de Vertex AI Search se sincronice con el conjunto de datos de BigQuery. Puedes cambiar la frecuencia más adelante.

  8. En el campo Ruta de acceso del conjunto de datos de BigQuery, haz clic en Explorar, selecciona el conjunto de datos que contiene las tablas que preparaste para la transferencia. Como alternativa, ingresa la ubicación de la tabla directamente en el campo Ruta de BigQuery. El formato de la ruta es projectname.datasetname.

  9. En el campo Tablas para sincronizar, haz clic en Explorar y, luego, selecciona una tabla que contenga los datos que deseas para tu almacén de datos.

  10. Si hay tablas adicionales en el conjunto de datos que deseas usar para los almacenes de datos, haz clic en Agregar tabla y especifícalas también.

  11. Haz clic en Continuar.

  12. Elige una región para tu almacén de datos, ingresa un nombre para tu conector de datos y, luego, haz clic en Crear.

    Ahora creaste un conector de datos, que sincronizará los datos de forma periódica con el conjunto de datos de BigQuery. Además, creaste uno o más almacenes de datos de entidades. Los almacenes de datos tienen los mismos nombres que las tablas de BigQuery.

  13. Para verificar el estado de la transferencia, ve a la página Almacenes de datos y haz clic en el nombre de tu conector de datos para ver los detalles en la página Datos > pestaña Actividad de transferencia de datos. Cuando la columna de estado de la pestaña Actividad cambie de En curso a Correcto, se habrá completado la primera transferencia.

    Según el tamaño de tus datos, la transferencia puede tardar varios minutos o varias horas.

Después de configurar tu fuente de datos y de importar datos por primera vez, el almacén de datos sincroniza los datos de esa fuente con la frecuencia que selecciones durante la configuración. La primera sincronización se produce aproximadamente una hora después de crear el conector de datos. La siguiente sincronización se produce alrededor de 24, 72 o 120 horas después.

Próximos pasos

Importar desde Cloud Storage

Puedes crear almacenes de datos a partir de tablas de Cloud Storage de dos maneras:

  • Transferencia única: Importas datos de una carpeta o un archivo de Cloud Storage a un almacén de datos. Los datos del almacén de datos no cambian, a menos que actualices los datos de forma manual.

  • Transferencia periódica: Importas datos desde un archivo o una carpeta de Cloud Storage y configuras una frecuencia de sincronización que determina la frecuencia con la que se actualiza el almacén de datos con los datos más recientes de esa ubicación de Cloud Storage.

En la siguiente tabla, se comparan las dos formas en que puedes importar datos de Cloud Storage a los almacenes de datos de Vertex AI Search.

Transferencia única Transferencia periódica
Disponibilidad general (DG). Versión preliminar pública.
Los datos se deben actualizar de forma manual. Los datos se actualizan automáticamente cada uno, tres o cinco días. Los datos no se pueden actualizar manualmente.
Vertex AI Search crea un solo almacén de datos a partir de una carpeta o un archivo en Cloud Storage. Vertex AI Search crea un conector de datos y lo asocia con un almacén de datos (llamado almacén de datos de entidad) para el archivo o la carpeta que se especifica. Cada conector de datos de Cloud Storage puede tener un almacén de datos de entidad única.
Para combinar datos de varios archivos, carpetas y buckets en un almacén de datos, primero transfiere datos de una ubicación de Cloud Storage y, luego, más datos de otra ubicación. Debido a que no se admite la importación manual de datos, los datos de un almacén de datos de la entidad solo se pueden obtener de un archivo o una carpeta de Cloud Storage.
Se admite el control de acceso a la fuente de datos. Para obtener más información, consulta Control de acceso a la fuente de datos. No se admite el control de acceso a la fuente de datos. Los datos importados pueden contener controles de acceso, pero estos no se respetarán.
Puedes crear un almacén de datos con la consola deGoogle Cloud o la API. Debes usar la consola para crear conectores de datos y sus almacenes de datos de entidades.
Cumple con CMEK. Cumple con CMEK.

Importa una vez desde Cloud Storage

Para transferir datos desde Cloud Storage, sigue estos pasos para crear un almacén de datos y transferir datos con la consola de Google Cloud o la API.

Antes de importar tus datos, consulta Prepara los datos para la transferencia.

Console

Para usar la consola y transferir datos de un bucket de Cloud Storage, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. Ve a la página Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

  4. En la página Fuente, selecciona Cloud Storage.

  5. En la sección Selecciona una carpeta o un archivo que desees importar, selecciona Carpeta o Archivo.

  6. Haz clic en Explorar y elige los datos que preparaste para transferir. Luego, haz clic en Seleccionar. Como alternativa, ingresa la ubicación directamente en el campo gs://.

  7. Selecciona el tipo de datos que deseas importar.

  8. Haz clic en Continuar.

  9. Si realizas una importación única de datos estructurados, haz lo siguiente:

    1. Asigna campos a propiedades clave.

    2. Si faltan campos importantes en el esquema, usa Agregar campo nuevo para agregarlos.

      Para obtener más información, consulta Acerca de la detección automática y la edición.

    3. Haz clic en Continuar.

  10. Elige una región para tu almacén de datos.

  11. Ingresa un nombre para tu almacén de datos.

  12. Opcional: Si seleccionaste documentos no estructurados, puedes seleccionar opciones de análisis y fragmentación para tus documentos. Para comparar analizadores, consulta Cómo analizar documentos. Para obtener información sobre el corte, consulta Cómo dividir documentos para RAG.

    El analizador de OCR y el analizador de diseño pueden generar costos adicionales. Consulta Documenta los precios de las funciones de IA.

    Para seleccionar un analizador, expande Document processing options y especifica las opciones de analizador que deseas usar.

  13. Haz clic en Crear.

  14. Para verificar el estado de la transferencia, ve a la página Almacenes de datos y haz clic en el nombre de tu almacén de datos para ver los detalles en la página Datos. Cuando la columna de estado de la pestaña Actividad cambie de En curso a Importación completada, se habrá completado la transferencia.

    Según el tamaño de tus datos, la transferencia puede tardar varios minutos o varias horas.

REST

Para usar la línea de comandos y crear un almacén de datos y transferir datos desde Cloud Storage, sigue estos pasos.

  1. Crea un almacén de datos.

    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_SEARCH"]
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
    • DATA_STORE_ID: El ID del almacén de datos de Vertex AI Search que deseas crear. Este ID solo puede contener letras en minúscula, dígitos, guiones bajos y guiones.
    • DATA_STORE_DISPLAY_NAME: El nombre visible del almacén de datos de Vertex AI Search que deseas crear.

    Opcional: Si subes datos no estructurados y deseas configurar el análisis de documentos o activar el fragmento de documentos para RAG, especifica el objeto documentProcessingConfig y, luego, inclúyelo en tu solicitud de creación de almacén de datos. Se recomienda configurar un analizador de OCR para PDFs si transfieres PDFs escaneados. Para obtener información sobre cómo configurar opciones de análisis o división, consulta Cómo analizar y dividir documentos.

  2. Importar datos desde Cloud Storage.

      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"
        }
      }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
    • DATA_STORE_ID: El ID del almacén de datos de Vertex AI Search.
    • INPUT_FILE_PATTERN: Es un patrón de archivo en Cloud Storage que contiene tus documentos.

      Para datos estructurados o no estructurados con metadatos, un ejemplo del patrón de archivo de entrada es gs://<your-gcs-bucket>/directory/object.json y un ejemplo de coincidencia de patrones con uno o más archivos es gs://<your-gcs-bucket>/directory/*.json.

      Para los documentos no estructurados, un ejemplo es gs://<your-gcs-bucket>/directory/*.pdf. Cada archivo que coincida con el patrón se convierte en un documento.

      Si <your-gcs-bucket> no está debajo de PROJECT_ID, debes otorgarle a la cuenta de servicio service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com los permisos de “Visualizador de objetos de almacenamiento” para el bucket de Cloud Storage. Por ejemplo, si importas un bucket de Cloud Storage del proyecto de origen "123" al proyecto de destino "456", otorga permisos service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com en el bucket de Cloud Storage del proyecto "123".

    • DATA_SCHEMA: es opcional. Los valores son document, custom, csv y content. El valor predeterminado es document.

      • document: Sube datos no estructurados con metadatos para documentos no estructurados. Cada línea del archivo debe seguir uno de los siguientes formatos. Puedes definir el ID de cada documento:

        • { "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: Sube JSON para documentos estructurados. Los datos se organizan según un esquema. Puedes especificar el esquema. De lo contrario, se detectará automáticamente. Puedes colocar la cadena JSON del documento en un formato coherente directamente en cada línea, y la Búsqueda de Vertex AI genera automáticamente los IDs de cada documento importado.

      • content: Sube documentos no estructurados (PDF, HTML, DOC, TXT y PPTX). El ID de cada documento se genera automáticamente como los primeros 128 bits de SHA256(GCS_URI) codificados como una cadena hexadecimal. Puedes especificar varios patrones de archivos de entrada, siempre y cuando los archivos coincidentes no superen el límite de 100,000 archivos.

      • csv: Incluye una fila de encabezado en el archivo CSV, con cada encabezado asignado a un campo de documento. Especifica la ruta de acceso al archivo CSV con el campo inputUris.

    • ERROR_DIRECTORY: es opcional. Un directorio de Cloud Storage para obtener información sobre los errores de la importación (por ejemplo, gs://<your-gcs-bucket>/directory/import_errors) Google recomienda dejar este campo vacío para permitir que Vertex AI Search cree automáticamente un directorio temporal.

    • RECONCILIATION_MODE: es opcional. Los valores son FULL y INCREMENTAL. El valor predeterminado es INCREMENTAL. Especificar INCREMENTAL provoca una actualización incremental de los datos de Cloud Storage a tu almacén de datos. Esto realiza una operación de inserción y actualización, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Especificar FULL causa una rebase completa de los documentos en tu almacén de datos. En otras palabras, se agregan documentos nuevos y actualizados a tu almacén de datos, y se quitan los documentos que no están en Cloud Storage. El modo FULL es útil si quieres borrar automáticamente los documentos que ya no necesitas.

    • AUTO_GENERATE_IDS: es opcional. Especifica si se deben generar automáticamente los IDs de documento. Si se establece en true, los IDs de los documentos se generan en función de un hash de la carga útil. Ten en cuenta que los IDs de documentos generados pueden no mantenerse coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda configurar reconciliationMode como FULL para mantener IDs de documentos coherentes.

      Especifica autoGenerateIds solo cuando gcsSource.dataSchema se establece como custom o csv. De lo contrario, se muestra un error INVALID_ARGUMENT. Si no especificas autoGenerateIds o lo configuras en false, debes especificar idField. De lo contrario, los documentos no se importarán.

    • ID_FIELD: es opcional. Especifica qué campos son los IDs de los documentos. En el caso de los documentos de origen de Cloud Storage, idField especifica el nombre en los campos JSON que son IDs de documentos. Por ejemplo, si {"my_id":"some_uuid"} es el campo de ID de documento en uno de tus documentos, especifica "idField":"my_id". Esto identifica todos los campos JSON con el nombre "my_id" como IDs de documentos.

      Especifica este campo solo cuando: (1) gcsSource.dataSchema esté configurado como custom o csv, y (2) auto_generate_ids esté configurado como false o no se especifique. De lo contrario, se muestra un error INVALID_ARGUMENT.

      Ten en cuenta que el valor del campo JSON de Cloud Storage debe ser de tipo cadena, debe tener entre 1 y 63 caracteres y debe cumplir con la RFC-1034. De lo contrario, no se importarán los documentos.

      Ten en cuenta que el nombre del campo JSON especificado por id_field debe ser de tipo cadena, debe tener entre 1 y 63 caracteres y debe cumplir con la RFC-1034. De lo contrario, no se importarán los documentos.

C#

Para obtener más información, consulta la documentación de referencia de la API de C# de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos

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;
        }
    }
}

Importar documentos

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

Para obtener más información, consulta la documentación de referencia de la API de Go de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos


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
}

Importar documentos


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

Para obtener más información, consulta la documentación de referencia de la API de Java de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos

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();
    }
  }
}

Importar documentos

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

Para obtener más información, consulta la documentación de referencia de la API de Node.js de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos

/**
 * 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();

Importar documentos

/**
 * 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

Para obtener más información, consulta la documentación de referencia de la API de Python de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos


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

Importar documentos

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

Para obtener más información, consulta la documentación de referencia de la API de Ruby de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos

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

Importar documentos

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

Cómo conectarse a Cloud Storage con sincronización periódica

Antes de importar tus datos, consulta Prepara los datos para la transferencia.

En el siguiente procedimiento, se describe cómo crear un conector de datos que asocie una ubicación de Cloud Storage con un conector de datos de Vertex AI Search y cómo especificar una carpeta o un archivo en esa ubicación para el almacén de datos que deseas crear. Los almacenes de datos que son secundarios de los conectores de datos se denominan almacenes de datos de entidad.

Los datos se sincronizan periódicamente con el almacén de datos de la entidad. Puedes especificar la sincronización a diario, cada tres días o cada cinco días.

Console

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. Ve a la página Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

  4. En la página Fuente, selecciona Cloud Storage.

  5. Selecciona el tipo de datos que deseas importar.

  6. Haz clic en Periódico.

  7. Selecciona la frecuencia de sincronización, es decir, la frecuencia con la que deseas que el conector de búsqueda de Vertex AI se sincronice con la ubicación de Cloud Storage. Puedes cambiar la frecuencia más adelante.

  8. En la sección Selecciona una carpeta o un archivo que desees importar, selecciona Carpeta o Archivo.

  9. Haz clic en Explorar y elige los datos que preparaste para transferir. Luego, haz clic en Seleccionar. Como alternativa, ingresa la ubicación directamente en el campo gs://.

  10. Haz clic en Continuar.

  11. Elige una región para tu conector de datos.

  12. Ingresa un nombre para tu conector de datos.

  13. Opcional: Si seleccionaste documentos no estructurados, puedes seleccionar opciones de análisis y fragmentación para tus documentos. Para comparar analizadores, consulta Cómo analizar documentos. Para obtener información sobre el corte, consulta Cómo dividir documentos para RAG.

    El analizador de OCR y el analizador de diseño pueden generar costos adicionales. Consulta Documenta los precios de las funciones de IA.

    Para seleccionar un analizador, expande Document processing options y especifica las opciones de analizador que deseas usar.

  14. Haz clic en Crear.

    Ahora creaste un conector de datos, que sincronizará los datos de forma periódica con la ubicación de Cloud Storage. También creaste un almacén de datos de entidades, que se llama gcs_store.

  15. Para verificar el estado de la transferencia, ve a la página Almacenes de datos y haz clic en el nombre de tu conector de datos para ver los detalles en la página Datos.

    Pestaña Actividad de transferencia de datos. Cuando la columna de estado de la pestaña Actividad de transferencia de datos cambie de En curso a Se realizó correctamente, se completará la primera transferencia.

    Según el tamaño de tus datos, la transferencia puede tardar varios minutos o varias horas.

Después de configurar tu fuente de datos y de importar datos por primera vez, los datos se sincronizan desde esa fuente con la frecuencia que selecciones durante la configuración. La primera sincronización se produce aproximadamente una hora después de crear el conector de datos. La siguiente sincronización se produce alrededor de 24, 72 o 120 horas después.

Próximos pasos

Cómo conectarse a Google Drive

Para buscar datos de Google Drive, usa uno de los siguientes métodos para crear un conector con la consola de Google Cloud :

  • Usa la integración de datos: Obtén la información necesaria directamente de la fuente de datos especificada. Los datos no se copian en el índice de Vertex AI Search.

Antes de comenzar:

  • Debes acceder a la Google Cloud consola con la misma cuenta que usas para la instancia de Google Drive que planeas conectar. Las aplicaciones de IA usan tu ID de cliente de Google Workspace para conectarse a Google Drive.
  • Determina el proveedor de identidad para que los usuarios accedan a la app. Si usas un proveedor de identidad de terceros, un administrador debe federar tu proveedor de identidad con Google Workspace. La federación requiere planificación y configuración. Para obtener más información, consulta Cómo usar el control de acceso a la fuente de datos.
  • La búsqueda avanzada de Google Drive está en versión preliminar privada. Esta función es un requisito para usar el resumen de búsqueda y la búsqueda con preguntas adicionales con un almacén de datos de Google Drive. Para usar esta función, sigue los pasos que se indican en Cómo usar la indexación avanzada de Drive.
  • Si usas controles de seguridad, ten en cuenta sus limitaciones relacionadas con los datos en Google Drive, como se explica en la siguiente tabla:

    Control de seguridad Ten en cuenta lo siguiente
    Residencia de datos (DRZ) Las aplicaciones de IA solo garantizan la residencia de datos en Google Cloud. Para obtener información sobre la residencia de los datos y Google Drive, consulta la documentación y la guía de cumplimiento de Google Workspace, por ejemplo, Elige la región donde se almacenan los datos y Soberanía digital.
    Claves de encriptación administradas por el cliente (CMEK) Tus claves solo encriptan datos dentro de Google Cloud. Los controles de Cloud Key Management Service no se aplican a los datos almacenados en Google Drive.
    Transparencia de acceso La Transparencia de acceso registra las acciones que realiza el personal de Google en el proyecto Google Cloud . También deberás revisar los registros de Transparencia de acceso que creó Google Workspace. Para obtener más información, consulta Eventos de registro de la Transparencia de acceso en la documentación de ayuda del Administrador de Google Workspace.

Usa la federación de datos

Si creas un almacén de datos sin habilitar el indexado avanzado, el sistema accederá directamente al contenido de la unidad que especificaste y lo mostrará sin crear una copia.

Console

Para usar la consola y hacer que los datos de Google Drive sean aptos para la búsqueda, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. En el menú de navegación, haz clic en Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

    Muestra el botón Crear almacén de datos.
    Crea un almacén de datos nuevo.
  4. En la página Selecciona una fuente de datos, elige Google Drive.

    Selecciona una fuente de datos.
    Selecciona una fuente de datos.
  5. Especifica la fuente de Drive para tu almacén de datos.

    • Todo: Para agregar todo el viaje al almacén de datos.
    • Unidades compartidas específicas: Para agregar una o más unidades compartidas.
    • Agrega los IDs de la unidad compartida. Para encontrar el ID de la unidad compartida, navega a la unidad y copia el ID de la URL. La URL sigue este formato: https://drive.google.com/corp/drive/DRIVE_ID.

    • Carpetas compartidas específicas: Para agregar una o más carpetas compartidas.

      • Agrega los IDs de las carpetas compartidas. Para encontrar el ID de la carpeta compartida, navega a la carpeta compartida y copia el ID de la URL. La URL sigue este formato: https://drive.google.com/corp/drive/folders/FOLDER_ID.
    Especifica la fuente de la unidad.
    Especifica la fuente de la unidad.
  6. Haz clic en Continuar.

  7. Elige una región para tu almacén de datos.

  8. Ingresa un nombre para tu almacén de datos.

  9. Haz clic en Crear.

    Configura el conector de datos.
    Configura el conector de datos.

Usa la indexación de datos (versión preliminar privada)

Sigue este procedimiento si planeas usar Google Drive con la búsqueda con resúmenes y la búsqueda con seguimientos.

Antes de comenzar:

  • Debes ser administrador avanzado de Google Workspace para activar el indexado avanzado de Drive. Esto se debe a que, con la indexación avanzada de Drive, las aplicaciones de IA indexan los datos de Google Drive.

Console

Para usar la consola y crear un almacén de datos de Google Drive con indexación avanzada de Google Drive, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. En el menú de navegación, haz clic en Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

  4. En la página Selecciona una fuente de datos, elige Google Drive.

  5. Selecciona Indexación avanzada de Drive.

  6. Ingresa la dirección de correo electrónico de tu administrador avanzado de Google Workspace.

    • Asegúrate de anotar el ID de cliente en la sección Configurar delegación en todo el dominio, tercer paso, ya que se usará más adelante.
    Indexación avanzada: Especifica la fuente de la unidad.
    Especifica la fuente de la unidad para la indexación avanzada.
  7. Configura la delegación de todo el dominio:

    1. Ve a la página Delegación de todo el dominio de la Consola del administrador de Google Workspace y accede con tu cuenta de administrador avanzado.
    2. Haz clic en Agregar nueva.

      Indexación avanzada: Especifica la fuente de la unidad.
      Agrega una nueva delegación de todo el dominio.
    3. Ingresa el ID de cliente que anotaste anteriormente.

    4. Ingresa los siguientes permisos de OAuth.

      https://www.googleapis.com/auth/drive.readonly,
      https://www.googleapis.com/auth/admin.directory.user.readonly,
      https://www.googleapis.com/auth/admin.directory.group.readonly,
      https://www.googleapis.com/auth/admin.directory.domain.readonly,
      https://www.googleapis.com/auth/admin.reports.audit.readonly
      
      Indexación avanzada: Ingresa los permisos de OAuth.
      Ingresa los permisos de OAuth.
    5. Haz clic en Autorizar.

  8. Regresa a la Google Cloud consola. En la sección Elige las unidades que deseas sincronizar, especifica la fuente de la unidad para tu almacén de datos.

    • Todo: Para agregar todo el viaje al almacén de datos.
    • Unidades compartidas específicas: Para agregar una o más unidades compartidas.

      • Agrega los IDs de la unidad compartida. Para encontrar el ID de la unidad compartida, navega a la unidad y copia el ID de la URL. La URL sigue este formato: https://drive.google.com/corp/drive/DRIVE_ID.
      Elige las unidades que quieres sincronizar.
      Elige las unidades que quieres sincronizar.
  9. Haz clic en Continuar.

  10. Elige una región para tu almacén de datos.

  11. Ingresa un nombre para tu almacén de datos.

  12. Opcional: Para modificar las configuraciones de análisis o división de documentos, en la sección Opciones de procesamiento de documentos, selecciona Habilitar la configuración de procesamiento de documentos.

  13. Haz clic en Crear. Según el tamaño de tus datos, la transferencia puede tardar varios minutos o varias horas. Espera al menos una hora antes de usar tu almacén de datos para realizar búsquedas.

Próximos pasos

Cómo conectarte a Gmail

Para buscar datos de Gmail, sigue estos pasos para crear un almacén de datos y transferir datos con la consola de Google Cloud .

Antes de comenzar:

  • Debes acceder a la consola de Google Cloud con la misma cuenta que usas para la instancia de Google Workspace que planeas conectar. Vertex AI Search usa tu ID de cliente de Google Workspace para conectarse a Gmail.

  • Configurar el control de acceso de Gmail Para obtener información sobre cómo configurar el control de acceso, consulta Cómo usar el control de acceso a la fuente de datos.

  • Si usas controles de seguridad, ten en cuenta sus limitaciones relacionadas con los datos en Gmail, como se explica en la siguiente tabla:

    Control de seguridad Ten en cuenta lo siguiente
    Residencia de datos (DRZ) Las aplicaciones de IA solo garantizan la residencia de datos en Google Cloud. Para obtener información sobre la residencia de los datos y Gmail, consulta la documentación y la guía de cumplimiento de Google Workspace, por ejemplo, Elige la región donde se almacenan los datos y Soberanía digital.
    Claves de encriptación administradas por el cliente (CMEK) Tus claves solo encriptan datos dentro de Google Cloud. Los controles de Cloud Key Management Service no se aplican a los datos almacenados en Gmail.
    Transparencia de acceso La Transparencia de acceso registra las acciones que realiza el personal de Google en el proyecto Google Cloud . También deberás revisar los registros de Transparencia de acceso que creó Google Workspace. Para obtener más información, consulta Eventos de registro de la Transparencia de acceso en la documentación de ayuda del Administrador de Google Workspace.

Console

Para usar la consola y hacer que los datos de Gmail sean aptos para la búsqueda, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. En el menú de navegación, haz clic en Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

    Crear un almacén de datos nuevo
    Crea un almacén de datos nuevo.
  4. En la página Selecciona una fuente de datos, selecciona Gmail de Google.

    Selecciona la fuente de Gmail de Google
    Selecciona la fuente de Gmail de Google.
  5. Elige una región para tu almacén de datos.

  6. Ingresa un nombre para tu almacén de datos.

  7. Haz clic en Crear.

    Configura el nuevo conector
    Configura el nuevo conector.

Próximos pasos

Cómo conectarse a Google Sites

Para buscar datos de Sitios de Google, sigue estos pasos para crear un conector con la consola de Google Cloud .

Antes de comenzar:

  • Debes acceder a la consola de Google Cloud con la misma cuenta que usas para la instancia de Google Workspace que planeas conectar. Vertex AI Search usa tu ID de cliente de Google Workspace para conectarse a Google Sites.

  • Configura el control de acceso de Google Sites. Para obtener información sobre cómo configurar el control de acceso, consulta Cómo usar el control de acceso a la fuente de datos.

  • Si usas controles de seguridad, ten en cuenta sus limitaciones relacionadas con los datos en Google Sites, como se indica en la siguiente tabla:

    Control de seguridad Ten en cuenta lo siguiente
    Residencia de datos (DRZ) Las aplicaciones de IA solo garantizan la residencia de datos en Google Cloud. Para obtener información sobre la residencia de los datos y Google Sites, consulta la guía y la documentación de cumplimiento de Google Workspace, por ejemplo, Elige la región en la que se almacenan los datos y Soberanía digital.
    Claves de encriptación administradas por el cliente (CMEK) Tus claves solo encriptan datos dentro de Google Cloud. Los controles de Cloud Key Management Service no se aplican a los datos almacenados en Google Sites.
    Transparencia de acceso La Transparencia de acceso registra las acciones que realiza el personal de Google en el proyecto Google Cloud . También deberás revisar los registros de Transparencia de acceso que creó Google Workspace. Para obtener más información, consulta Eventos de registro de la Transparencia de acceso en la documentación de ayuda del Administrador de Google Workspace.

Console

Para usar la consola y hacer que los datos de Google Sites sean aptos para la búsqueda, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. Ve a la página Almacenes de datos.

  3. Haz clic en Nuevo almacén de datos.

  4. En la página Fuente, selecciona Sitios de Google.

  5. Elige una región para tu almacén de datos.

  6. Ingresa un nombre para tu almacén de datos.

  7. Haz clic en Crear.

Próximos pasos

Cómo conectarse al Calendario de Google

Para buscar datos del Calendario de Google, sigue estos pasos para crear un conector con la consola de Google Cloud .

Antes de comenzar:

  • Debes acceder a la consola de Google Cloud con la misma cuenta que usas para la instancia de Google Workspace que planeas conectar. Vertex AI Search usa tu ID de cliente de Google Workspace para conectarse al Calendario de Google.

  • Configura el control de acceso del Calendario de Google. Para obtener más información, consulta Cómo usar el control de acceso de la fuente de datos.

  • Si usas controles de seguridad, ten en cuenta sus limitaciones relacionadas con los datos del Calendario de Google, como se explica en la siguiente tabla:

    Control de seguridad Ten en cuenta lo siguiente
    Residencia de datos (DRZ) Las aplicaciones de IA solo garantizan la residencia de datos en Google Cloud. Para obtener información sobre la residencia de los datos y el Calendario de Google, consulta la guía y la documentación de cumplimiento de Google Workspace, por ejemplo, Elige la región en la que se almacenan los datos y Soberanía digital.
    Claves de encriptación administradas por el cliente (CMEK) Tus claves solo encriptan datos dentro de Google Cloud. Los controles de Cloud Key Management Service no se aplican a los datos almacenados en el Calendario de Google.
    Transparencia de acceso La Transparencia de acceso registra las acciones que realiza el personal de Google en el proyecto Google Cloud . También deberás revisar los registros de Transparencia de acceso que creó Google Workspace. Para obtener más información, consulta Eventos de registro de la Transparencia de acceso en la documentación de ayuda del Administrador de Google Workspace.

Console

Para usar la consola y hacer que los datos del Calendario de Google sean aptos para la búsqueda, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. En el menú de navegación, haz clic en Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

    El botón Crear almacén de datos.
    Crea un almacén de datos nuevo.
  4. En la página Selecciona una fuente de datos, elige Calendario de Google.

    Selecciona la fuente de datos del Calendario de Google.
    Selecciona la fuente de datos del Calendario de Google.
  5. Elige una región para tu almacén de datos.

  6. Ingresa un nombre para tu almacén de datos.

  7. Haz clic en Crear.

    Configura el conector de datos.
    Configura el conector de datos.

Próximos pasos

Cómo conectarse a Grupos de Google

Para buscar datos de Grupos de Google, sigue estos pasos para crear un conector con la consola de Google Cloud .

Antes de comenzar:

  • Debes acceder a la consola de Google Cloud con la misma cuenta que usas para la instancia de Google Workspace que planeas conectar. Vertex AI Search usa tu ID de cliente de Google Workspace para conectarse a Grupos de Google.

  • Configura el control de acceso de Grupos de Google. Para obtener información sobre cómo configurar el control de acceso, consulta Cómo usar el control de acceso a la fuente de datos.

  • Si usas controles de seguridad, ten en cuenta sus limitaciones relacionadas con los datos en Google Grupos, como se explica en la siguiente tabla:

    Control de seguridad Ten en cuenta lo siguiente
    Residencia de datos (DRZ) Las aplicaciones de IA solo garantizan la residencia de datos en Google Cloud. Para obtener información sobre la residencia de los datos y Google Groups, consulta la guía y la documentación de cumplimiento de Google Workspace, por ejemplo, Elige la región en la que se almacenan los datos y Soberanía digital.
    Claves de encriptación administradas por el cliente (CMEK) Tus claves solo encriptan datos dentro de Google Cloud. Los controles de Cloud Key Management Service no se aplican a los datos almacenados en Grupos de Google.
    Transparencia de acceso La Transparencia de acceso registra las acciones que realiza el personal de Google en el proyecto Google Cloud . También deberás revisar los registros de Transparencia de acceso que creó Google Workspace. Para obtener más información, consulta Eventos de registro de la Transparencia de acceso en la documentación de ayuda del Administrador de Google Workspace.

Console

Para usar la consola y hacer que los datos de Grupos de Google sean aptos para la búsqueda, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. Ve a la página Almacenes de datos.

  3. Haz clic en Nuevo almacén de datos.

  4. En la página Fuente, selecciona Grupos de Google.

  5. Elige una región para tu almacén de datos.

  6. Ingresa un nombre para tu almacén de datos.

  7. Haz clic en Crear. Según el tamaño de tus datos, la transferencia puede tardar varios minutos o varias horas. Espera al menos una hora antes de usar tu almacén de datos para realizar búsquedas.

Próximos pasos

Para configurar la búsqueda de personas de tu organización, sincroniza los datos de las personas desde Google Workspace. Después de configurar el almacén de datos de la búsqueda de personas y transferir los datos a su índice, podrás encontrar a las personas en tu directorio.

Antes de comenzar

  • Determina el proveedor de identidad para que los usuarios accedan a la app. Si usas un proveedor de identidad de terceros, un administrador debe federar tu proveedor de identidad con Google Workspace. La federación requiere planificación y configuración. Para obtener más información, consulta Cómo usar el control de acceso a la fuente de datos.
  • Un administrador de Google Workspace debe habilitar la búsqueda de personas en los datos de Google Workspace:

    1. Accede a la Consola del administrador de Google con una cuenta de administrador.
    2. Ve a Directorio > Configuración del directorio.
    3. Activa Uso compartido de contactos.
  • Accede a la Google Cloud consola con la misma cuenta desde la que planeas conectar Google Workspace.

  • Conecta con tu proveedor de identidad siguiendo los pasos que se indican en Conecta con tu proveedor de identidad y especifica Google Identity como tu proveedor. Para obtener información sobre el directorio de Google Workspace, consulta Descripción general: Configura y administra el directorio en la documentación de Google Workspace.

  • Si usas controles de seguridad, ten en cuenta sus limitaciones relacionadas con los datos en Google Workspace, como se explica en la siguiente tabla:

    Control de seguridad Ten en cuenta lo siguiente
    Residencia de datos (DRZ) Las aplicaciones de IA solo garantizan la residencia de datos en Google Cloud. Para obtener información sobre la residencia de los datos y Google Workspace, consulta la guía y la documentación de cumplimiento de Google Workspace, por ejemplo, Elige la región en la que se almacenan los datos y Soberanía digital.
    Claves de encriptación administradas por el cliente (CMEK) Tus claves solo encriptan datos dentro de Google Cloud. Los controles de Cloud Key Management Service no se aplican a los datos almacenados en Google Workspace.
    Transparencia de acceso La Transparencia de acceso registra las acciones que realiza el personal de Google en el proyecto Google Cloud . También deberás revisar los registros de Transparencia de acceso que creó Google Workspace. Para obtener más información, consulta Eventos de registro de la Transparencia de acceso en la documentación de ayuda del Administrador de Google Workspace.

Antes de crear el almacén de datos de personas, debes configurar una cuenta de servicio y la delegación para todo el dominio.

Configura la cuenta de servicio

  1. Crea una cuenta de servicio en un proyectoGoogle Cloud dentro de la organización.

  2. Opcional: Omite el paso Otorga a esta cuenta de servicio acceso al proyecto (opcional).

    Muestra la sección Otorga a esta cuenta de servicio acceso al proyecto (opcional) que se debe omitir.
    Omite el paso Otorga a esta cuenta de servicio acceso al proyecto (opcional).
  3. Otorga acceso a la cuenta de servicio de Discovery Engine (service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com) como Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator) y haz clic en Guardar.

    Muestra cómo configurar la sección Otorga a los usuarios acceso a esta cuenta de servicio.
    Otorga acceso a la cuenta de servicio de Discovery Engine.
  4. Después de crear la cuenta de servicio, haz clic en la pestaña Detalles de la cuenta de servicio y, luego, en Configuración avanzada.

  5. Copia el ID de cliente para la delegación de todo el dominio.

    Muestra el ID de cliente en la configuración avanzada, en la sección de delegación de todo el dominio.
    Copia el ID de cliente.

Configura la delegación de todo el dominio

  1. Accede al espacio de trabajo del administrador de Google.
  2. Navega a Seguridad > Control de acceso y datos > Controles de API.
  3. Haz clic en Administrar la delegación de todo el dominio.

    Muestra Administrar la delegación de todo el dominio.
    Haz clic en Administrar la delegación de todo el dominio.
  4. Haz clic en Agregar nueva.

    Destaca el vínculo para agregar uno nuevo
    Haz clic en Agregar nuevo.
  5. En el diálogo Agregar un nuevo ID de cliente, haz lo siguiente:

    1. ID de cliente: Ingresa el ID de cliente.
    2. Alcances de OAuth: Ingresa https://www.googleapis.com/auth/directory.readonly.
    3. Haz clic en Autorizar.
    Configura la configuración de la delegación de todo el dominio.
    Configura la configuración de delegación de todo el dominio.
  6. Si personalizaste los datos de las personas (también conocidos como atributos personalizados) y quieres que estos datos aparezcan en los resultados de la búsqueda, sigue estos pasos:

    1. Haz clic en Directorio > Usuarios > Más opciones > Administrar atributos personalizados.

      Administra los atributos de datos de personas personalizados.
      Haz clic en Administrar atributos personalizados.

    2. Establece la Visibilidad del atributo personalizado en Visible para la organización para que se pueda buscar.

      Establece la visibilidad del atributo personalizado en Visible para la organización.
      Establece la visibilidad del atributo personalizado en Visible para la organización para que se pueda buscar.

Crea un almacén de datos de búsqueda de personas

Para usar la consola y transferir los datos de personas, sigue estos pasos:

Console

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. Ve a la página Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

  4. En la página Fuente, haz clic en Búsqueda de personas.

    Selecciona el almacén de datos de Búsqueda de personas.
    Selecciona el almacén de datos de Búsqueda de contactos.
  5. Configura los detalles de autenticación:

    1. Ingresa el correo electrónico de la cuenta que recupera los datos de las personas. Si prefieres no usar una cuenta de administrador, puedes usar una cuenta alternativa que tenga acceso a los datos del directorio de la organización.
    2. Ingresa el correo electrónico de la cuenta de servicio que creaste en la sección Configura la cuenta de servicio.
    3. Haz clic en Continuar.
    Configura los detalles de autenticación.
    Configura los detalles de autenticación.
  6. Elige una región para tu almacén de datos.

  7. En el campo Nombre de tu almacén de datos, ingresa un nombre para tu almacén de datos.

  8. Haz clic en Crear. La sincronización puede tardar desde varios minutos hasta horas, según el tamaño de los datos.

Personaliza los resultados de la búsqueda

Para incluir o excluir información personal de los resultados de la búsqueda, sigue estos pasos:

  1. En tu almacén de datos, haz clic en la pestaña Entidad y, luego, en Usuarios.

    Haz clic en la pestaña de entidad del almacén de datos.
    Haz clic en la pestaña de entidad del almacén de datos.
  2. En la página Usuarios, haz clic en la pestaña Esquema.

  3. Haz clic en Editar.

    Edita el esquema del almacén de datos.
    Edita el esquema del almacén de datos.
  4. Selecciona o borra los atributos, como el país, para que no se puedan recuperar, buscar ni indexar.

  5. Haz clic en Guardar.

    Guarda los cambios que realizaste en el esquema.
    Guarda los cambios realizados en el esquema.

Próximos pasos

Importar desde Cloud SQL

Para transferir datos desde Cloud SQL, sigue estos pasos para configurar el acceso a Cloud SQL, crear un almacén de datos y transferir datos.

Configura el acceso al bucket de etapa para instancias de Cloud SQL

Cuando se transfieren datos desde Cloud SQL, primero se transfieren a un bucket de Cloud Storage. Sigue estos pasos para otorgar acceso a una instancia de Cloud SQL a los buckets de Cloud Storage.

  1. En la consola de Google Cloud , ve a la página SQL.

    SQL

  2. Haz clic en la instancia de Cloud SQL desde la que planeas realizar la importación.

  3. Copia el identificador de la cuenta de servicio de la instancia, que se parece a una dirección de correo electrónico, por ejemplo, p9876-abcd33f@gcp-sa-cloud-sql.iam.gserviceaccount.com.

  4. Ir a la página IAM y administración

    IAM y administración

  5. Haz clic en Otorgar acceso.

  6. En Principales nuevas, ingresa el identificador de la cuenta de servicio de la instancia y selecciona el rol Cloud Storage > Administrador de almacenamiento.

  7. Haz clic en Guardar.

Siguiente:

Configura el acceso a Cloud SQL desde otro proyecto

Para otorgarle a Vertex AI Search acceso a los datos de Cloud SQL que se encuentran en un proyecto diferente, sigue estos pasos:

  1. Reemplaza la siguiente variable PROJECT_NUMBER por el número de proyecto de Vertex AI Search y, luego, copia el contenido del bloque de código. Este es el identificador de tu cuenta de servicio de Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Ir a la página IAM y administración

    IAM y administración

  3. Cambia a tu proyecto de Cloud SQL en la página IAM y administración y haz clic en Otorgar acceso.

  4. En Principales nuevas, ingresa el identificador de la cuenta de servicio y selecciona el rol Cloud SQL > Visualizador de Cloud SQL.

  5. Haz clic en Guardar.

A continuación, ve a Importa datos desde Cloud SQL.

Importa datos desde Cloud SQL

Console

Para usar la consola y transferir datos de Cloud SQL, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. Ve a la página Almacenes de datos.

  3. Haz clic en Nuevo almacén de datos.

  4. En la página Fuente, selecciona Cloud SQL.

  5. Especifica el ID del proyecto, el ID de la instancia, el ID de la base de datos y el ID de la tabla de los datos que planeas importar.

  6. Haz clic en Explorar y elige una ubicación intermedia de Cloud Storage a la que exportar los datos. Luego, haz clic en Seleccionar. Como alternativa, ingresa la ubicación directamente en el campo gs://.

  7. Selecciona si quieres activar la exportación sin servidores. La exportación sin servidores genera un costo adicional. Para obtener información sobre la exportación sin servidores, consulta Cómo minimizar el impacto en el rendimiento de las exportaciones en la documentación de Cloud SQL.

  8. Haz clic en Continuar.

  9. Elige una región para tu almacén de datos.

  10. Ingresa un nombre para tu almacén de datos.

  11. Haz clic en Crear.

  12. Para verificar el estado de la transferencia, ve a la página Almacenes de datos y haz clic en el nombre de tu almacén de datos para ver los detalles en la página Datos. Cuando la columna de estado de la pestaña Actividad cambie de En curso a Importación completada, se habrá completado la transferencia.

    Según el tamaño de tus datos, la transferencia puede tardar varios minutos o varias horas.

REST

Para usar la línea de comandos y crear un almacén de datos y transferir datos desde Cloud SQL, sigue estos pasos:

  1. Crea un almacén de datos.

    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": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto.
    • DATA_STORE_ID: Es el ID del almacén de datos. El ID solo puede contener letras minúsculas, dígitos, guiones bajos y guiones.
    • DISPLAY_NAME: Es el nombre visible del almacén de datos. Es posible que esto se muestre en la consola de Google Cloud .
  2. Importa datos desde Cloud SQL.

      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 '{
        "cloudSqlSource": {
          "projectId": "SQL_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
          "gcsStagingDir": "STAGING_DIRECTORY"
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID de tu proyecto de Vertex AI Search.
    • DATA_STORE_ID: Es el ID del almacén de datos. El ID solo puede contener letras minúsculas, dígitos, guiones bajos y guiones.
    • SQL_PROJECT_ID: El ID de tu proyecto de Cloud SQL.
    • INSTANCE_ID: El ID de tu instancia de Cloud SQL.
    • DATABASE_ID: El ID de tu base de datos de Cloud SQL
    • TABLE_ID: El ID de tu tabla de Cloud SQL.
    • STAGING_DIRECTORY: es opcional. Un directorio de Cloud Storage, por ejemplo, gs://<your-gcs-bucket>/directory/import_errors.
    • RECONCILIATION_MODE: es opcional. Los valores son FULL y INCREMENTAL. El valor predeterminado es INCREMENTAL. Especificar INCREMENTAL provoca una actualización incremental de los datos de Cloud SQL a tu almacén de datos. Esto realiza una operación de inserción y actualización, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Especificar FULL causa una rebase completa de los documentos en tu almacén de datos. En otras palabras, se agregan documentos nuevos y actualizados a tu almacén de datos, y se quitan los documentos que no están en Cloud SQL. El modo FULL es útil si quieres borrar automáticamente los documentos que ya no necesitas.

Python

Para obtener más información, consulta la documentación de referencia de la API de Python de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos


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

Importar documentos

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"
# sql_project_id = "YOUR_SQL_PROJECT_ID"
# sql_instance_id = "YOUR_SQL_INSTANCE_ID"
# sql_database_id = "YOUR_SQL_DATABASE_ID"
# sql_table_id = "YOUR_SQL_TABLE_ID"

#  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,
    cloud_sql_source=discoveryengine.CloudSqlSource(
        project_id=sql_project_id,
        instance_id=sql_instance_id,
        database_id=sql_database_id,
        table_id=sql_table_id,
    ),
    # 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)

Próximos pasos

Importa desde Spanner

Para transferir datos de Spanner, sigue estos pasos para crear un almacén de datos y transferir datos con la consola de Google Cloud o la API.

Configura el acceso a Spanner desde otro proyecto

Si tus datos de Spanner están en el mismo proyecto que la Búsqueda de Vertex AI, ve a Importa datos desde Spanner.

Para otorgarle a Vertex AI Search acceso a los datos de Spanner que se encuentran en un proyecto diferente, sigue estos pasos:

  1. Reemplaza la siguiente variable PROJECT_NUMBER por el número de proyecto de Vertex AI Search y, luego, copia el contenido de este bloque de código. Este es el identificador de tu cuenta de servicio de Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Ir a la página IAM y administración

    IAM y administración

  3. Cambia a tu proyecto de Spanner en la página IAM y administración y haz clic en Otorgar acceso.

  4. En Principales nuevas, ingresa el identificador de la cuenta de servicio y selecciona una de las siguientes opciones:

    • Si no usarás el aumento de datos durante la importación, selecciona el rol Cloud Spanner > Lector de bases de datos de Cloud Spanner.
    • Si planeas usar Data Boost durante la importación, selecciona el rol Cloud Spanner > Administrador de bases de datos de Cloud Spanner o un rol personalizado con los permisos de Lector de base de datos de Cloud Spanner y spanner.databases.useDataBoost. Para obtener información sobre Data Boost, consulta la descripción general de Data Boost en la documentación de Spanner.
  5. Haz clic en Guardar.

A continuación, ve a Importa datos desde Spanner.

Importa datos de Spanner

Console

Para usar la consola y transferir datos de Spanner, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. Ve a la página Almacenes de datos.

  3. Haz clic en Nuevo almacén de datos.

  4. En la página Fuente, selecciona Cloud Spanner.

  5. Especifica el ID del proyecto, el ID de la instancia, el ID de la base de datos y el ID de la tabla de los datos que planeas importar.

  6. Selecciona si quieres activar el aumento de datos. Para obtener información sobre Data Boost, consulta la descripción general de Data Boost en la documentación de Spanner.

  7. Haz clic en Continuar.

  8. Elige una región para tu almacén de datos.

  9. Ingresa un nombre para tu almacén de datos.

  10. Haz clic en Crear.

  11. Para verificar el estado de la transferencia, ve a la página Almacenes de datos y haz clic en el nombre de tu almacén de datos para ver los detalles en la página Datos. Cuando la columna de estado de la pestaña Actividad cambie de En curso a Importación completada, se habrá completado la transferencia.

    Según el tamaño de tus datos, la transferencia puede tardar varios minutos o varias horas.

REST

Para usar la línea de comandos y crear un almacén de datos y transferir datos desde Spanner, sigue estos pasos:

  1. Crea un almacén de datos.

    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": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
      "contentConfig": "CONTENT_REQUIRED",
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID de tu proyecto de Vertex AI Search.
    • DATA_STORE_ID: Es el ID del almacén de datos. El ID solo puede contener letras minúsculas, dígitos, guiones bajos y guiones.
    • DISPLAY_NAME: Es el nombre visible del almacén de datos. Es posible que esto se muestre en la consola de Google Cloud .
  2. Importa datos de Spanner.

      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 '{
        "cloudSpannerSource": {
          "projectId": "SPANNER_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
          "enableDataBoost": "DATA_BOOST_BOOLEAN"
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID de tu proyecto de Vertex AI Search.
    • DATA_STORE_ID: Es el ID del almacén de datos.
    • SPANNER_PROJECT_ID: Es el ID de tu proyecto de Spanner.
    • INSTANCE_ID: Es el ID de tu instancia de Spanner.
    • DATABASE_ID: Es el ID de tu base de datos de Spanner.
    • TABLE_ID: Es el ID de tu tabla de Spanner.
    • DATA_BOOST_BOOLEAN: es opcional. Si quieres activar Data Boost. Para obtener información sobre Data Boost, consulta la descripción general de Data Boost en la documentación de Spanner.
    • RECONCILIATION_MODE: es opcional. Los valores son FULL y INCREMENTAL. El valor predeterminado es INCREMENTAL. Especificar INCREMENTAL provoca una actualización incremental de los datos de Spanner a tu almacén de datos. Esto realiza una operación de inserción y actualización, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Especificar FULL provoca una rebase completa de los documentos en tu almacén de datos. En otras palabras, se agregan documentos nuevos y actualizados a tu almacén de datos, y se quitan los documentos que no están en Spanner. El modo FULL es útil si quieres borrar automáticamente los documentos que ya no necesitas.
    • AUTO_GENERATE_IDS: es opcional. Especifica si se deben generar automáticamente los IDs de documento. Si se establece en true, los IDs de los documentos se generan en función de un hash de la carga útil. Ten en cuenta que los IDs de documentos generados pueden no mantenerse coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda configurar reconciliationMode como FULL para mantener IDs de documentos coherentes.

    • ID_FIELD: es opcional. Especifica qué campos son los IDs de los documentos.

Python

Para obtener más información, consulta la documentación de referencia de la API de Python de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos


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

Importar documentos

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"
# spanner_project_id = "YOUR_SPANNER_PROJECT_ID"
# spanner_instance_id = "YOUR_SPANNER_INSTANCE_ID"
# spanner_database_id = "YOUR_SPANNER_DATABASE_ID"
# spanner_table_id = "YOUR_SPANNER_TABLE_ID"

#  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,
    spanner_source=discoveryengine.SpannerSource(
        project_id=spanner_project_id,
        instance_id=spanner_instance_id,
        database_id=spanner_database_id,
        table_id=spanner_table_id,
    ),
    # 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)

Próximos pasos

Importa desde Firestore

Para transferir datos de Firestore, sigue los pasos que se indican a continuación para crear un almacén de datos y transferir datos con la consola de Google Cloud o la API.

Si tus datos de Firestore están en el mismo proyecto que Vertex AI Search, ve a Importa datos desde Firestore.

Si tus datos de Firestore están en un proyecto diferente al de Vertex AI Search, ve a Configurar el acceso a Firestore.

Configura el acceso a Firestore desde otro proyecto

Para otorgarle a Vertex AI Search acceso a los datos de Firestore que se encuentran en un proyecto diferente, sigue estos pasos:

  1. Reemplaza la siguiente variable PROJECT_NUMBER por el número de proyecto de Vertex AI Search y, luego, copia el contenido de este bloque de código. Este es el identificador de tu cuenta de servicio de Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Ir a la página IAM y administración

    IAM y administración

  3. Cambia a tu proyecto de Firestore en la página IAM y administración y haz clic en Otorgar acceso.

  4. En Principales nuevas, ingresa el identificador de la cuenta de servicio de la instancia y selecciona el rol Datastore > Administrador de importación y exportación de Cloud Datastore.

  5. Haz clic en Guardar.

  6. Regresa a tu proyecto de Vertex AI Search.

A continuación, ve a Importa datos de Firestore.

Importa datos de Firestore

Console

Para usar la consola y transferir datos de Firestore, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. Ve a la página Almacenes de datos.

  3. Haz clic en Nuevo almacén de datos.

  4. En la página Fuente, selecciona Firestore.

  5. Especifica el ID del proyecto, el ID de la base de datos y el ID de la colección de los datos que planeas importar.

  6. Haz clic en Continuar.

  7. Elige una región para tu almacén de datos.

  8. Ingresa un nombre para tu almacén de datos.

  9. Haz clic en Crear.

  10. Para verificar el estado de la transferencia, ve a la página Almacenes de datos y haz clic en el nombre de tu almacén de datos para ver los detalles en la página Datos. Cuando la columna de estado de la pestaña Actividad cambie de En curso a Importación completada, se habrá completado la transferencia.

    Según el tamaño de tus datos, la transferencia puede tardar varios minutos o varias horas.

REST

Para usar la línea de comandos y crear un almacén de datos y transferir datos desde Firestore, sigue estos pasos:

  1. Crea un almacén de datos.

    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": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto.
    • DATA_STORE_ID: Es el ID del almacén de datos. El ID solo puede contener letras minúsculas, dígitos, guiones bajos y guiones.
    • DISPLAY_NAME: Es el nombre visible del almacén de datos. Es posible que esto se muestre en la consola de Google Cloud .
  2. Importa datos de Firestore.

      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 '{
        "firestoreSource": {
          "projectId": "FIRESTORE_PROJECT_ID",
          "databaseId": "DATABASE_ID",
          "collectionId": "COLLECTION_ID",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID de tu proyecto de Vertex AI Search.
    • DATA_STORE_ID: Es el ID del almacén de datos. El ID solo puede contener letras minúsculas, dígitos, guiones bajos y guiones.
    • FIRESTORE_PROJECT_ID: Es el ID de tu proyecto de Firestore.
    • DATABASE_ID: Es el ID de tu base de datos de Firestore.
    • COLLECTION_ID: Es el ID de tu colección de Firestore.
    • RECONCILIATION_MODE: es opcional. Los valores son FULL y INCREMENTAL. El valor predeterminado es INCREMENTAL. Especificar INCREMENTAL provoca una actualización incremental de los datos de Firestore a tu almacén de datos. Esto realiza una operación de inserción y actualización, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Especificar FULL causa una rebase completa de los documentos en tu almacén de datos. En otras palabras, los documentos nuevos y actualizados se agregan a tu almacén de datos, y los documentos que no están en Firestore se quitan de tu almacén de datos. El modo FULL es útil si quieres borrar automáticamente los documentos que ya no necesitas.
    • AUTO_GENERATE_IDS: es opcional. Especifica si se deben generar automáticamente los IDs de documento. Si se establece en true, los IDs de los documentos se generan en función de un hash de la carga útil. Ten en cuenta que los IDs de documentos generados pueden no mantenerse coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda configurar reconciliationMode como FULL para mantener IDs de documentos coherentes.
    • ID_FIELD: es opcional. Especifica qué campos son los IDs de los documentos.

Python

Para obtener más información, consulta la documentación de referencia de la API de Python de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos


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

Importar documentos

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"
# firestore_project_id = "YOUR_FIRESTORE_PROJECT_ID"
# firestore_database_id = "YOUR_FIRESTORE_DATABASE_ID"
# firestore_collection_id = "YOUR_FIRESTORE_COLLECTION_ID"

#  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,
    firestore_source=discoveryengine.FirestoreSource(
        project_id=firestore_project_id,
        database_id=firestore_database_id,
        collection_id=firestore_collection_id,
    ),
    # 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)

Próximos pasos

Importa desde Bigtable

Para transferir datos de Bigtable, sigue los pasos que se indican a continuación para crear un almacén de datos y transferir datos con la API.

Configura el acceso a Bigtable

Para otorgarle a Vertex AI Search acceso a los datos de Bigtable que se encuentran en un proyecto diferente, sigue estos pasos:

  1. Reemplaza la siguiente variable PROJECT_NUMBER por el número de proyecto de Vertex AI Search y, luego, copia el contenido de este bloque de código. Este es el identificador de tu cuenta de servicio de Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Ir a la página IAM y administración

    IAM y administración

  3. Cambia a tu proyecto de Bigtable en la página IAM y administración y haz clic en Otorgar acceso.

  4. En Principales nuevas, ingresa el identificador de la cuenta de servicio de la instancia y selecciona el rol Bigtable > Lector de Bigtable.

  5. Haz clic en Guardar.

  6. Regresa a tu proyecto de Vertex AI Search.

A continuación, ve a Importa datos de Bigtable.

Importa datos de Bigtable

REST

Para usar la línea de comandos y crear un almacén de datos y transferir datos desde Bigtable, sigue estos pasos:

  1. Crea un almacén de datos.

    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": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto.
    • DATA_STORE_ID: Es el ID del almacén de datos. El ID solo puede contener letras minúsculas, dígitos, guiones bajos y guiones.
    • DISPLAY_NAME: Es el nombre visible del almacén de datos. Es posible que esto se muestre en la consola de Google Cloud .
  2. Importa datos de Bigtable.

      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 '{
        "bigtableSource ": {
          "projectId": "BIGTABLE_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "tableId": "TABLE_ID",
          "bigtableOptions": {
            "keyFieldName": "KEY_FIELD_NAME",
            "families": {
              "key": "KEY",
              "value": {
                "fieldName": "FIELD_NAME",
                "encoding": "ENCODING",
                "type": "TYPE",
                "columns": [
                  {
                    "qualifier": "QUALIFIER",
                    "fieldName": "FIELD_NAME",
                    "encoding": "COLUMN_ENCODING",
                    "type": "COLUMN_VALUES_TYPE"
                  }
                ]
              }
             }
             ...
          }
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID de tu proyecto de Vertex AI Search.
    • DATA_STORE_ID: Es el ID del almacén de datos. El ID solo puede contener letras minúsculas, dígitos, guiones bajos y guiones.
    • BIGTABLE_PROJECT_ID: Es el ID de tu proyecto de Bigtable.
    • INSTANCE_ID: Es el ID de tu instancia de Bigtable.
    • TABLE_ID: El ID de tu tabla de Bigtable.
    • KEY_FIELD_NAME: Es opcional, pero se recomienda. Es el nombre del campo que se usará para el valor de clave de fila después de transferir los datos a Vertex AI Search.
    • KEY: Obligatorio. Es un valor de cadena para la clave de la familia de columnas.
    • ENCODING: es opcional. Es el modo de codificación de los valores cuando el tipo no es STRING.Se puede anular para una columna específica enumerando esa columna en columns y especificando una codificación para ella.
    • COLUMN_TYPE: es opcional. Es el tipo de valores de esta familia de columnas.
    • QUALIFIER: Obligatorio. Es el calificador de la columna.
    • FIELD_NAME: Es opcional, pero se recomienda. Es el nombre del campo que se usará para esta columna después de transferirla a Vertex AI Search.
    • COLUMN_ENCODING: es opcional. Es el modo de codificación de los valores de una columna específica cuando el tipo no es STRING.
    • RECONCILIATION_MODE: es opcional. Los valores son FULL y INCREMENTAL. El valor predeterminado es INCREMENTAL. Especificar INCREMENTAL provoca una actualización incremental de los datos de Bigtable a tu almacén de datos. Esto realiza una operación de inserción y actualización, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Especificar FULL causa una rebase completa de los documentos en tu almacén de datos. En otras palabras, los documentos nuevos y actualizados se agregan a tu almacén de datos, y los documentos que no están en Bigtable se quitan de tu almacén de datos. El modo FULL es útil si quieres borrar automáticamente los documentos que ya no necesitas.
    • AUTO_GENERATE_IDS: es opcional. Especifica si se deben generar automáticamente los IDs de documento. Si se establece en true, los IDs de los documentos se generan en función de un hash de la carga útil. Ten en cuenta que los IDs de documentos generados pueden no mantenerse coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda configurar reconciliationMode como FULL para mantener IDs de documentos coherentes.

      Especifica autoGenerateIds solo cuando bigquerySource.dataSchema se configura como custom. De lo contrario, se muestra un error INVALID_ARGUMENT. Si no especificas autoGenerateIds o lo configuras en false, debes especificar idField. De lo contrario, no se importarán los documentos.

    • ID_FIELD: es opcional. Especifica qué campos son los IDs de los documentos.

Python

Para obtener más información, consulta la documentación de referencia de la API de Python de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos


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

Importar documentos

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"
# bigtable_project_id = "YOUR_BIGTABLE_PROJECT_ID"
# bigtable_instance_id = "YOUR_BIGTABLE_INSTANCE_ID"
# bigtable_table_id = "YOUR_BIGTABLE_TABLE_ID"

#  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",
)

bigtable_options = discoveryengine.BigtableOptions(
    families={
        "family_name_1": discoveryengine.BigtableOptions.BigtableColumnFamily(
            type_=discoveryengine.BigtableOptions.Type.STRING,
            encoding=discoveryengine.BigtableOptions.Encoding.TEXT,
            columns=[
                discoveryengine.BigtableOptions.BigtableColumn(
                    qualifier="qualifier_1".encode("utf-8"),
                    field_name="field_name_1",
                ),
            ],
        ),
        "family_name_2": discoveryengine.BigtableOptions.BigtableColumnFamily(
            type_=discoveryengine.BigtableOptions.Type.INTEGER,
            encoding=discoveryengine.BigtableOptions.Encoding.BINARY,
        ),
    }
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    bigtable_source=discoveryengine.BigtableSource(
        project_id=bigtable_project_id,
        instance_id=bigtable_instance_id,
        table_id=bigtable_table_id,
        bigtable_options=bigtable_options,
    ),
    # 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)

Próximos pasos

Cómo importar desde AlloyDB para PostgreSQL

Para transferir datos de AlloyDB para PostgreSQL, sigue los pasos que se indican a continuación para crear un almacén de datos y transferir datos con la consola de Google Cloud o la API.

Si tus datos de AlloyDB para PostgreSQL están en el mismo proyecto que el proyecto de Búsqueda de Vertex AI, ve a Importa datos desde AlloyDB para PostgreSQL.

Si tus datos de AlloyDB para PostgreSQL están en un proyecto diferente al de tu proyecto de búsqueda de Vertex AI, ve a Configura el acceso a AlloyDB para PostgreSQL.

Configura el acceso a AlloyDB para PostgreSQL desde otro proyecto

Para otorgarle a Vertex AI Search acceso a los datos de AlloyDB para PostgreSQL que se encuentran en un proyecto diferente, sigue estos pasos:

  1. Reemplaza la siguiente variable PROJECT_NUMBER por el número de proyecto de Vertex AI Search y, luego, copia el contenido de este bloque de código. Este es el identificador de tu cuenta de servicio de Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Cambia al Google Cloud proyecto en el que residen tus datos de AlloyDB para PostgreSQL.

  3. Ir a la página IAM.

    IAM

  4. Haz clic en Otorgar acceso.

  5. En Principales nuevas, ingresa el identificador de la cuenta de servicio de Vertex AI Search y selecciona el rol Cloud AlloyDB > Administrador de Cloud AlloyDB.

  6. Haz clic en Guardar.

  7. Regresa a tu proyecto de Vertex AI Search.

A continuación, ve a Importa datos de AlloyDB para PostgreSQL.

Importa datos de AlloyDB para PostgreSQL

Console

Para usar la consola y transferir datos de AlloyDB para PostgreSQL, sigue estos pasos:

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones de IA

  2. En el menú de navegación, haz clic en Almacenes de datos.

  3. Haz clic en Crear almacén de datos.

  4. En la página Fuente, selecciona AlloyDB.

  5. Especifica el ID del proyecto, el ID de la ubicación, el ID del clúster, el ID de la base de datos y el ID de la tabla de los datos que planeas importar.

  6. Haz clic en Continuar.

  7. Elige una región para tu almacén de datos.

  8. Ingresa un nombre para tu almacén de datos.

  9. Haz clic en Crear.

  10. Para verificar el estado de la transferencia, ve a la página Almacenes de datos y haz clic en el nombre de tu almacén de datos para ver los detalles en la página Datos. Cuando la columna de estado de la pestaña Actividad cambie de En curso a Importación completada, se habrá completado la transferencia.

    Según el tamaño de tus datos, la transferencia puede tardar varios minutos o varias horas.

REST

Para usar la línea de comandos y crear un almacén de datos y transferir datos desde AlloyDB para PostgreSQL, sigue estos pasos:

  1. Crea un almacén de datos.

    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/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto.
    • DATA_STORE_ID: Es el ID del almacén de datos. El ID solo puede contener letras minúsculas, dígitos, guiones bajos y guiones.
    • DISPLAY_NAME: Es el nombre visible del almacén de datos. Es posible que esto se muestre en la consola de Google Cloud .
  2. Importa datos de AlloyDB para PostgreSQL.

      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 '{
        "alloydbSource": {
          "projectId": "ALLOYDB_PROJECT_ID",
          "locationId": "LOCATION_ID",
          "clusterId": "CLUSTER_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID de tu proyecto de Vertex AI Search.
    • DATA_STORE_ID: Es el ID del almacén de datos. El ID solo puede contener letras minúsculas, dígitos, guiones bajos y guiones.
    • ALLOYDB_PROJECT_ID: El ID de tu proyecto de AlloyDB para PostgreSQL.
    • LOCATION_ID: Es el ID de tu ubicación de AlloyDB para PostgreSQL.
    • CLUSTER_ID: Es el ID de tu clúster de AlloyDB para PostgreSQL.
    • DATABASE_ID: Es el ID de tu base de datos de AlloyDB para PostgreSQL.
    • TABLE_ID: Es el ID de tu tabla de AlloyDB para PostgreSQL.
    • RECONCILIATION_MODE: es opcional. Los valores son FULL y INCREMENTAL. El valor predeterminado es INCREMENTAL. Especificar INCREMENTAL provoca una actualización incremental de los datos de AlloyDB para PostgreSQL a tu almacén de datos. Esto realiza una operación de inserción y actualización, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Especificar FULL causa una rebase completa de los documentos en tu almacén de datos. En otras palabras, se agregan documentos nuevos y actualizados a tu almacén de datos, y se quitan los documentos que no están en AlloyDB para PostgreSQL. El modo FULL es útil si quieres borrar automáticamente los documentos que ya no necesitas.
    • AUTO_GENERATE_IDS: es opcional. Especifica si se deben generar automáticamente los IDs de documento. Si se establece en true, los IDs de los documentos se generan en función de un hash de la carga útil. Ten en cuenta que los IDs de documentos generados pueden no mantenerse coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda configurar reconciliationMode como FULL para mantener IDs de documentos coherentes.
    • ID_FIELD: es opcional. Especifica qué campos son los IDs de los documentos.

Python

Para obtener más información, consulta la documentación de referencia de la API de Python de aplicaciones de IA.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Crea un almacén de datos


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

Importar documentos

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as 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"
# alloy_db_project_id = "YOUR_ALLOY_DB_PROJECT_ID"
# alloy_db_location_id = "YOUR_ALLOY_DB_LOCATION_ID"
# alloy_db_cluster_id = "YOUR_ALLOY_DB_CLUSTER_ID"
# alloy_db_database_id = "YOUR_ALLOY_DB_DATABASE_ID"
# alloy_db_table_id = "YOUR_ALLOY_DB_TABLE_ID"

# 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,
    alloy_db_source=discoveryengine.AlloyDbSource(
        project_id=alloy_db_project_id,
        location_id=alloy_db_location_id,
        cluster_id=alloy_db_cluster_id,
        database_id=alloy_db_database_id,
        table_id=alloy_db_table_id,
    ),
    # 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)

Próximos pasos

Sube datos JSON estructurados con la API

Para subir directamente un documento o objeto JSON con la API, sigue estos pasos.

Antes de importar tus datos, prepáralos para la transferencia.

REST

Para usar la línea de comandos y crear un almacén de datos y, luego, importar datos JSON estructurados, sigue estos pasos.

  1. Crea un almacén de datos.

    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_SEARCH"]
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
    • DATA_STORE_ID: El ID del almacén de datos de Vertex AI Search que deseas crear. Este ID solo puede contener letras en minúscula, dígitos, guiones bajos y guiones.
    • DATA_STORE_DISPLAY_NAME: El nombre visible del almacén de datos de Vertex AI Search que deseas crear.
  2. Importa datos estructurados.

    Existen algunos enfoques que puedes usar para subir datos, como los siguientes:

    • Sube un documento JSON.

      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"
      }'
      

      Reemplaza lo siguiente:

      • DOCUMENT_ID: Un ID único para el documento. Este ID puede tener hasta 63 caracteres y contener solo letras en minúscula, cifras, guiones bajos y guiones.
      • JSON_DOCUMENT_STRING: El documento JSON como una sola cadena. Debe cumplir con el esquema JSON que proporcionaste en el paso anterior, por ejemplo:

        { \"title\": \"test title\", \"categories\": [\"cat_1\", \"cat_2\"], \"uri\": \"test uri\"}
        
    • Sube un objeto JSON.

      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
      }'
      

      Reemplaza JSON_DOCUMENT_OBJECT por el documento JSON como un objeto JSON. Debe cumplir con el esquema JSON que proporcionaste en el paso anterior, por ejemplo:

      ```json
      {
        "title": "test title",
        "categories": [
          "cat_1",
          "cat_2"
        ],
        "uri": "test uri"
      }
      ```
      
    • Actualiza con un documento JSON.

      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"
      }'
      
    • Actualiza con un objeto JSON.

      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
      }'
      

Próximos pasos

Solucionar problemas de transferencia de datos

Si tienes problemas con la transferencia de datos, revisa estas sugerencias:

  • Si usas claves de encriptación administradas por el cliente y la importación de datos falla (con el mensaje de error The caller does not have permission), asegúrate de que se haya otorgado el rol de IAM de encriptador/desencriptador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) en la clave al agente de servicio de Cloud Storage. Para obtener más información, consulta Antes de comenzar en "Claves de encriptación administradas por el cliente".

  • Si usas la indexación avanzada de sitios web y el Uso de documentos del almacén de datos es mucho menor de lo esperado, revisa los patrones de URL que especificaste para la indexación y asegúrate de que cubran las páginas que deseas indexar y expándelos si es necesario. Por ejemplo, si usaste *.en.example.com/*, es posible que debas agregar *.example.com/* a los sitios que deseas indexar.

Crea un almacén de datos con Terraform

Puedes usar Terraform para crear un almacén de datos vacío. Después de crear el almacén de datos vacío, puedes transferir datos al almacén con los comandos de la Google Cloud consola o de la API.

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Para crear un almacén de datos vacío con Terraform, consulta google_discovery_engine_data_store.