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 externa, consulta Conecta una fuente de datos externa.

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

Sigue este procedimiento para crear un almacén de datos y, luego, 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 para crear un almacén de datos y, luego, indexar sitios web, sigue estos pasos:

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

    Aplicaciones basadas en 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 la generación de resúmenes de búsqueda, la búsqueda con preguntas de seguimiento 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 deben incluirse, 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 sitios incluidos. Por lo tanto, si incluyes example.com/docs/*, pero excluyes example.com, no se indexará ningún sitio 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 básica en sitios web, este parámetro siempre se establece en global (Global).
    • Cuando creas un almacén de datos con la indexación avanzada de sitios web, puedes seleccionar una ubicación. Dado 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 que te solicitará que actualices tu cuota.
  13. Para verificar los dominios de los patrones de URL en tu almacén de datos, sigue las instrucciones de la página Verifica los dominios de 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 mayor en la documentación de Google Cloud . La cuota que se debe aumentar es la de Cantidad de documentos en el servicio de la API de Discovery Engine.
    3. Después de enviar tu solicitud para obtener un límite de cuota más alto, vuelve a la página AI Applications y haz clic en Data Stores 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 se está indexando 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 la indexación 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 AI Applications Python.

Para autenticarte en AI Applications, 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 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.

  • Ingesta periódica: Importas datos de una o más tablas de BigQuery y estableces una frecuencia de sincronización que determina con qué frecuencia 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
Disponible de forma 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 entidades) 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.
Los datos de varias tablas se pueden combinar en un almacén de datos. Para ello, primero se deben transferir los datos de una tabla y, luego, más datos de otra fuente o tabla de BigQuery. Dado que no se admite la importación manual de datos, los datos de un almacén de datos de entidades solo pueden provenir 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 los requisitos de la CMEK. Cumple con los requisitos de la CMEK.

Importa una vez desde BigQuery

Para transferir datos desde una tabla de BigQuery, sigue estos pasos 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 para transferir datos desde BigQuery, sigue estos pasos:

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

    Aplicaciones basadas en 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 importarás?.

  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 preparaste para la transferencia 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 vas a importar datos estructurados por única vez, 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 y edición automáticas.

    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 del 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 Se completó la importación, 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 para 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 proyecto de Google Cloud .
    • DATA_STORE_ID: Es 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: Es 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 la división de documentos para la RAG, especifica el objeto documentProcessingConfig y agrégalo a tu solicitud de creación del almacén de datos. Se recomienda configurar un analizador de OCR para los PDFs si ingieres PDFs escaneados. Para obtener información sobre cómo configurar las opciones de análisis o fragmentación, consulta Analiza y fragmenta documentos.

  2. Importa datos de BigQuery.

    Si definiste un esquema, asegúrate de que los datos se ajusten a él.

    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 proyecto de Google Cloud .
    • DATA_STORE_ID: Es el ID del almacén de datos de Vertex AI Search.
    • DATASET_ID: Es el ID del conjunto de datos de BigQuery.
    • TABLE_ID: Es el ID de la tabla de BigQuery.
      • Si la tabla de BigQuery no está en PROJECT_ID, debes otorgar 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 fuente "123" al proyecto de destino "456", otorga permisos de 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 tú mismo y, al mismo tiempo, encapsular 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 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. Si especificas INCREMENTAL, se produce una actualización incremental de los datos de BigQuery en tu almacén de datos. Esta acción realiza una operación de upsert, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Si especificas FULL, se realizará una nueva base 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 de él los documentos que no están en BigQuery. 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 IDs de documentos. Si se configura como true, los IDs de documentos se generan en función de un hash de la carga útil. Ten en cuenta que es posible que los IDs de documentos generados no se mantengan coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda establecer reconciliationMode en 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 como false, debes especificar idField. De lo contrario, no se podrán importar los documentos.

    • ID_FIELD: es opcional. Especifica qué campos son los IDs de documento. En el caso de los archivos fuente 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 en custom y (2) auto_generate_ids se establece en 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, tener entre 1 y 63 caracteres, y 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 AI Applications C#.

Para autenticarte en AI Applications, 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 AI Applications Go.

Para autenticarte en AI Applications, 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 AI Applications Java.

Para autenticarte en AI Applications, 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 AI Applications Node.js.

Para autenticarte en AI Applications, 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 AI Applications Python.

Para autenticarte en AI Applications, 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 AI Applications Ruby.

Para autenticarte en AI Applications, 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 la 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 entidades.

Los datos del conjunto de datos se sincronizan periódicamente con los almacenes de datos de la entidad. Puedes especificar la sincronización diaria, 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 basadas en 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 importarás.

  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 al 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 especifica también esas tablas.

  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 haz clic en Crear.

    Ahora creaste un conector de datos que sincronizará periódicamente los datos 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 del 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 Completado, 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 que se crea el conector de datos. La siguiente sincronización se produce alrededor de 24, 72 o 120 horas después.

Próximos pasos

  • Para adjuntar tu almacén de datos a una app, crea una app y selecciona tu almacén de datos siguiendo los pasos que se indican en Crea una app de búsqueda.

  • Para obtener una vista previa de cómo aparecerán los resultados de la búsqueda después de configurar tu app y tu almacén de datos, consulta Cómo obtener resultados de la búsqueda.

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 una carpeta o un archivo de Cloud Storage, y estableces una frecuencia de sincronización que determina con qué frecuencia 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
Disponible de forma 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 asocia un almacén de datos (llamado almacén de datos de entidades) con él para el archivo o la carpeta especificados. Cada conector de datos de Cloud Storage puede tener un solo almacén de datos de entidades.
Los datos de varios archivos, carpetas y buckets se pueden combinar en un solo almacén de datos. Para ello, primero se transfieren los datos de una ubicación de Cloud Storage y, luego, se transfieren más datos de otra ubicación. Dado que no se admite la importación manual de datos, los datos de un almacén de datos de entidades solo pueden provenir 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 los requisitos de la CMEK. Cumple con los requisitos de la CMEK.

Importar 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 desde un bucket de Cloud Storage, sigue estos pasos:

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

    Aplicaciones basadas en 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 la transferencia. Luego, haz clic en Seleccionar. También puedes ingresar la ubicación directamente en el campo gs://.

  7. Selecciona el tipo de datos que importarás.

  8. Haz clic en Continuar.

  9. Si vas a importar datos estructurados por única vez, 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 y edición automáticas.

    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 elegir opciones de análisis y fragmentación para tus documentos. Para comparar los analizadores, consulta Cómo analizar documentos. Para obtener información sobre la fragmentación, consulta Fragmenta documentos para RAG.

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

    Para seleccionar un analizador, expande Opciones de procesamiento de documentos y especifica las opciones del 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 del 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 Se completó la importación, 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 para 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 proyecto de Google Cloud .
    • DATA_STORE_ID: Es 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: Es 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 la división de documentos para la RAG, especifica el objeto documentProcessingConfig y agrégalo a tu solicitud de creación del almacén de datos. Se recomienda configurar un analizador de OCR para los PDFs si ingieres PDFs escaneados. Para obtener información sobre cómo configurar las opciones de análisis o fragmentación, consulta Analiza y fragmenta 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 proyecto de Google Cloud .
    • DATA_STORE_ID: Es 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.

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

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

      Si <your-gcs-bucket> no está en PROJECT_ID, debes otorgarle a la cuenta de servicio service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com permisos de "Visualizador de objetos de Storage" 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 de 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 Vertex AI Search generará automáticamente los IDs de cada documento importado.

      • content: Sube documentos no estructurados (PDF, HTML, DOC, TXT, 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 tu archivo CSV, con cada encabezado asignado a un campo del 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 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. Si especificas INCREMENTAL, se produce una actualización incremental de los datos de Cloud Storage en tu almacén de datos. Esto realiza una operación de upsert, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Si especificas FULL, se realizará una nueva base 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 de él 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 IDs de documentos. Si se establece en true, los IDs de documentos se generan en función de un hash de la carga útil. Ten en cuenta que es posible que los IDs de documentos generados no se mantengan coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda establecer reconciliationMode en FULL para mantener IDs de documentos coherentes.

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

    • ID_FIELD: es opcional. Especifica qué campos son los IDs de documento. Para los documentos fuente 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 del 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 haya especificado. 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, tener entre 1 y 63 caracteres, y cumplir con la RFC-1034. De lo contrario, no se podrán importar los documentos.

      Ten en cuenta que el nombre del campo JSON especificado por id_field debe ser de tipo cadena, tener entre 1 y 63 caracteres, y 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 AI Applications C#.

Para autenticarte en AI Applications, 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 AI Applications Go.

Para autenticarte en AI Applications, 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 AI Applications Java.

Para autenticarte en AI Applications, 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 AI Applications Node.js.

Para autenticarte en AI Applications, 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 AI Applications Python.

Para autenticarte en AI Applications, 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 AI Applications Ruby.

Para autenticarte en AI Applications, 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 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 entidades.

Los datos se sincronizan periódicamente con el almacén de datos de la entidad. Puedes especificar la sincronización diaria, 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 basadas en 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 importarás.

  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 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 la transferencia. Luego, haz clic en Seleccionar. También puedes ingresar 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 elegir opciones de análisis y fragmentación para tus documentos. Para comparar los analizadores, consulta Cómo analizar documentos. Para obtener información sobre la fragmentación, consulta Fragmenta documentos para RAG.

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

    Para seleccionar un analizador, expande Opciones de procesamiento de documentos y especifica las opciones del analizador que deseas usar.

  14. Haz clic en Crear.

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

  15. Para verificar el estado de la transferencia, ve a la página Almacenes de datos y haz clic en el nombre del 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 Completado, 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, 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 que se crea el conector de datos. La siguiente sincronización se produce alrededor de 24, 72 o 120 horas después.

Próximos pasos

  • Para adjuntar tu almacén de datos a una app, crea una app y selecciona tu almacén de datos siguiendo los pasos que se indican en Crea una app de búsqueda.

  • Para obtener una vista previa de cómo aparecerán los resultados de la búsqueda después de configurar tu app y tu almacén de datos, consulta Cómo obtener resultados de la búsqueda.

Conéctate a Google Drive

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

  • Usar la federación de datos: Obtiene la información requerida 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 consola de Google Cloud con la misma cuenta que usas para la instancia de Google Drive que planeas conectar. Las Aplicaciones basadas en 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 externo, 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 se encuentra en versión preliminar privada. Esta función es un requisito previo para usar la función de 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 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 Drive.
    Transparencia de acceso Los registros de Transparencia de acceso registran 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 Transparencia de acceso en la documentación de la Ayuda para administradores de Google Workspace.

Usa la federación de datos

Si creas un almacén de datos sin habilitar la indexación avanzada, el sistema accede directamente al contenido de la unidad que especificaste y lo muestra sin crear una copia.

Console

Para usar la consola y hacer que los datos de Google Drive se puedan buscar, sigue estos pasos:

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

    Aplicaciones basadas en 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 para crear un 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 toda tu unidad al almacén de datos
    • Unidades compartidas específicas: Para agregar una o más unidades compartidas
    • Agrega los IDs de las unidades compartidas. Para encontrar el ID de la unidad compartida, navega a la unidad compartida 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 ella 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 Drive.
  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.

Mensajes de error

En la siguiente tabla, se describen los mensajes de error que puedes encontrar cuando trabajas con esta fuente de datos de Google, incluidos los códigos de error HTTP y los pasos sugeridos para la solución de problemas.

Código de error Mensaje de error Descripción Soluciona problemas
400 (Failed precondition) La búsqueda con credenciales de cuentas de servicio no es compatible con los almacenes de datos de Google Workspace. El motor en el que se realiza la búsqueda tiene almacenes de datos de Google Workspace, y las credenciales que se pasan son de una cuenta de servicio. No se admite la búsqueda con credenciales de cuentas de servicio en los almacenes de datos de Google Workspace. Llama a la búsqueda con las credenciales del usuario o quita los almacenes de datos de Google Workspace del motor.
400 (Failed precondition) Las cuentas personales no son compatibles con los almacenes de datos de Google Workspace. La búsqueda se llama con una credencial de cuenta personal (@gmail.com), que no es compatible con los almacenes de datos de Google Workspace. Quita los almacenes de datos de Google Workspace del motor o usa una Cuenta de Google administrada.

Usa la indexación de datos (vista previa privada)

Sigue este procedimiento si planeas usar Google Drive con la función de resumen de búsqueda y la búsqueda con preguntas de seguimiento.

Antes de comenzar

  • Debes ser administrador avanzado de Google Workspace para activar la indexación avanzada de Drive. Esto se debe a que, con la indexación avanzada de Drive, las aplicaciones basadas en 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 basadas en 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 Configura la delegación en todo el dominio, tercer paso, ya que se usará más adelante.
    Indexación avanzada: Especifica la fuente de Drive.
    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 Drive.
      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 consola de Google Cloud . En la sección Elige las unidades que quieres sincronizar, especifica la fuente de Drive para tu almacén de datos.

    • Todo: Para agregar toda tu unidad al almacén de datos
    • Unidades compartidas específicas: Para agregar una o más unidades compartidas

      • Agrega los IDs de las unidades compartidas. Para encontrar el ID de la unidad compartida, navega a la unidad compartida 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 la configuración del análisis o la 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

Conéctate a Gmail

Para buscar datos en 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 para Gmail Para obtener información sobre cómo configurar el control de acceso, consulta Usa 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 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 Gmail.
    Transparencia de acceso Los registros de Transparencia de acceso registran 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 Transparencia de acceso en la documentación de la Ayuda para administradores de Google Workspace.

Console

Para usar la consola y hacer que los datos de Gmail se puedan buscar, sigue estos pasos:

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

    Aplicaciones basadas en 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, elige Google Gmail.

    Selecciona la fuente de Google Gmail
    Selecciona la fuente de Google Gmail.
  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 nuevo
    Configura el conector nuevo.

Próximos pasos

  • Para adjuntar tu almacén de datos a una app, crea una app y selecciona tu almacén de datos siguiendo los pasos que se indican en Crea una app de búsqueda.

  • Para obtener una vista previa de cómo aparecerán los resultados de la búsqueda después de configurar tu app y tu almacén de datos, consulta Cómo obtener resultados de la búsqueda.

Conéctate a Google Sites

Para buscar datos en Google Sites, 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.

  • Configurar el control de acceso para Google Sites Para obtener información sobre cómo configurar el control de acceso, consulta Usa 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 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 Sites, consulta la documentación y la guía 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 Los registros de Transparencia de acceso registran 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 Transparencia de acceso en la documentación de la Ayuda para administradores de Google Workspace.

Console

Para usar la consola y hacer que los datos de Google Sites se puedan buscar, sigue estos pasos:

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

    Aplicaciones basadas en 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 Google Sites.

  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

  • Para adjuntar tu almacén de datos a una app, crea una app y selecciona tu almacén de datos siguiendo los pasos que se indican en Crea una app de búsqueda.

  • Para obtener una vista previa de cómo aparecerán los resultados de la búsqueda después de configurar tu app y tu almacén de datos, consulta Cómo obtener resultados de la búsqueda.

Conéctate al Calendario de Google

Para buscar datos en el 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 a Google Calendar.

  • Configura el control de acceso para Calendario de Google. Para obtener más información, 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 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 Google Calendar, consulta la documentación y la guía 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 Calendar.
    Transparencia de acceso Los registros de Transparencia de acceso registran 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 Transparencia de acceso en la documentación de la Ayuda para administradores de Google Workspace.

Console

Para usar la consola y hacer que los datos de Calendario de Google se puedan buscar, sigue estos pasos:

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

    Aplicaciones basadas en 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

Mensajes de error

En la siguiente tabla, se describen los mensajes de error que puedes encontrar cuando trabajas con esta fuente de datos de Google, incluidos los códigos de error HTTP y los pasos sugeridos para la solución de problemas.

Código de error Mensaje de error Descripción Soluciona problemas
400 (Failed precondition) La búsqueda con credenciales de cuentas de servicio no es compatible con los almacenes de datos de Google Workspace. El motor en el que se realiza la búsqueda tiene almacenes de datos de Google Workspace, y las credenciales que se pasan son de una cuenta de servicio. No se admite la búsqueda con credenciales de cuentas de servicio en los almacenes de datos de Google Workspace. Llama a la búsqueda con las credenciales del usuario o quita los almacenes de datos de Google Workspace del motor.
400 (Failed precondition) Las cuentas personales no son compatibles con los almacenes de datos de Google Workspace. La búsqueda se llama con una credencial de cuenta personal (@gmail.com), que no es compatible con los almacenes de datos de Google Workspace. Quita los almacenes de datos de Google Workspace del motor o usa una Cuenta de Google administrada.

Conéctate a Grupos de Google

Para buscar datos en 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.

  • Configurar el control de acceso para Grupos de Google Para obtener información sobre cómo configurar el control de acceso, consulta Usa el control de acceso a la fuente de datos.

  • Si usas controles de seguridad, ten en cuenta sus limitaciones relacionadas con los datos en Grupos 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 Google Groups, consulta la documentación y la guía 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 Groups.
    Transparencia de acceso Los registros de Transparencia de acceso registran 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 Transparencia de acceso en la documentación de la Ayuda para administradores de Google Workspace.

Console

Para usar la consola y hacer que los datos de Grupos de Google se puedan buscar, sigue estos pasos:

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

    Aplicaciones basadas en 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 Google Groups.

  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 adjuntar tu almacén de datos a una app, crea una app y selecciona tu almacén de datos siguiendo los pasos que se indican en Crea una app de búsqueda.

  • Para obtener una vista previa de cómo aparecerán los resultados de la búsqueda después de configurar tu app y tu almacén de datos, consulta Cómo obtener resultados de la búsqueda.

Puedes configurar la búsqueda de personas para tu organización sincronizando los datos de las personas desde Google Workspace. Después de configurar el almacén de datos de búsqueda de personas y de que se ingieran los datos en el índice de Vertex AI Search, podrás encontrar 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 externo, 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.

  • Conéctate a tu proveedor de identidad siguiendo los pasos que se indican en Conéctate a 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 documentación y la guía 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 Los registros de Transparencia de acceso registran 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 Transparencia de acceso en la documentación de la Ayuda para administradores 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 proyecto deGoogle 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 este acceso a la cuenta de servicio 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 Grant users access to this service account.
    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 sección de configuración avanzada, 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.

    Se muestra la opción 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 cuadro de diálogo Agregar un nuevo ID de cliente, haz lo siguiente:

    1. ID de cliente: Ingresa el ID de cliente.
    2. Permisos de OAuth: Ingresa https://www.googleapis.com/auth/directory.readonly.
    3. Haz clic en Autorizar.
    Configura los parámetros de configuración de la delegación de todo el dominio.
    Configura los parámetros de configuración de la delegación de todo el dominio.

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 basadas en 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 personas.
  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. Selecciona la frecuencia de sincronización para la sincronización completa y, de manera opcional, para la sincronización incremental.

    Es la configuración de frecuencia de sincronización de datos.
    Configuración de frecuencia de sincronización para la sincronización de datos completa e incremental.

    Si deseas programar sincronizaciones completas separadas de los datos de identidad y de la entidad, expande el menú en Sincronización completa y, luego, selecciona Opciones personalizadas.

    Son opciones personalizadas para la sincronización completa de datos.
    Establece programas separados para la sincronización completa de entidades y la sincronización completa de identidades.
  8. En el campo Nombre de tu almacén de datos, ingresa un nombre para tu almacén de datos.

  9. Haz clic en Crear. La sincronización puede tardar entre varios minutos y varias horas, según el tamaño de los datos.

Cómo pausar o reanudar la sincronización de datos

Puedes pausar y reanudar tanto las sincronizaciones completas como las incrementales.

  • Para pausar una sincronización, haz clic en Pausar o reanudar la sincronización.

    Si pausas una sincronización, se cancelarán todas las sincronizaciones programadas futuras. Sin embargo, si una sincronización se está ejecutando de forma activa cuando haces clic en Pausar o reanudar sincronizaciones, esa sincronización no se pausa y continúa hasta completarse.

  • Para reanudar una sincronización, haz clic en Pausar o reanudar la sincronización.

    Cuando reanudas un tipo de sincronización, el conector programa la nueva sincronización según la última hora de sincronización programada.

Pausar o reanudar la sincronización de datos
Pausa o reanuda la sincronización de 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 la entidad del almacén de datos.
    Haz clic en la pestaña de la 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 anula la selección de los atributos, como el país, para que se puedan recuperar, buscar e indexar.

  5. Haz clic en Guardar.

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

Mensajes de error

En la siguiente tabla, se describen los mensajes de error que puedes encontrar cuando sincronizas datos de personas con la indexación de datos. En esta tabla, se incluyen códigos de error de gRPC y pasos de solución de problemas sugeridos.

Código de error (gRPC) Mensaje de error Descripción Soluciona problemas
9 (Condición previa con errores) No se pudo realizar la autenticación. Los permisos de la cuenta de servicio no están configurados correctamente. Se activó la limpieza de este almacén de datos y se borraron todos los documentos. Este error se produce cuando la cuenta de servicio de Discovery Engine no tiene el rol de creador de tokens de cuenta de servicio o cuando la cuenta de servicio de delegación en todo el dominio (DWD) no tiene el alcance de autenticación correcto. Verifica que la cuenta de servicio de Discovery Engine tenga el rol de creador de tokens de cuenta de servicio y configura correctamente el alcance de autenticación de la cuenta de servicio de DWD en el administrador de Google Cloud . Vuelve a otorgar los permisos faltantes de la cuenta de servicio.
9 (Condición previa con errores) No se recuperaron resultados después de la sincronización completa. Se activó la limpieza de este almacén de datos y se borraron todos los documentos. Este error ocurre cuando se inhabilita el uso compartido de contactos en la configuración del directorio de la Consola del administrador. Verifica y habilita el uso compartido de contactos en la configuración del directorio de la Consola del administrador.
3 (Argumento no válido) No se pudo intercambiar el JWT firmado por un token de acceso. Se borró la cuenta de Google Workspace. Se activó la limpieza de este almacén de datos y se borraron todos los documentos. Este error se produce cuando se borra la cuenta de Google Workspace. Crea un conector nuevo con una cuenta activa de Google Workspace.
3 (Argumento no válido) No se encontró el ID de GAIA. No se pudo realizar la autenticación. Este error se produce cuando la cuenta de usuario es incorrecta. Verifica que la cuenta de usuario exista y, luego, ingresa las credenciales correctas.
8 (Recurso agotado) Se superó la cuota del proyecto. Aumenta la cuota de documentos para el proyecto. Este error se produce cuando se excede la cuota del proyecto. Aumenta la cuota de documentos para el proyecto. Para obtener más información, consulta Cuotas.
13 (Error interno) Se produjo un error interno. Este error se produce cuando hay un error interno. Comunícate con el equipo de asistencia al cliente.

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 de pruebas para las instancias de Cloud SQL

Cuando se transfieren datos desde Cloud SQL, primero se almacenan en un bucket de Cloud Storage. Sigue estos pasos para otorgar acceso a una instancia de Cloud SQL a 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 importar.

  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 Nuevos principales, 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 otorgar acceso a Vertex AI Search a los datos de Cloud SQL que se encuentran en otro proyecto, sigue estos pasos:

  1. Reemplaza la siguiente variable PROJECT_NUMBER por el número de tu 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 Importar datos desde Cloud SQL.

Importa datos desde Cloud SQL

Console

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

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

    Aplicaciones basadas en 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 para exportar los datos. Luego, haz clic en Seleccionar. También puedes ingresar 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 del 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 Se completó la importación, 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 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 en minúscula, dígitos, guiones bajos y guiones.
    • DISPLAY_NAME: Es el nombre visible del almacén de datos. Esto podría mostrarse 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: Es 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 en minúscula, dígitos, guiones bajos y guiones.
    • SQL_PROJECT_ID: Es el ID de tu proyecto de Cloud SQL.
    • INSTANCE_ID: Es el ID de tu instancia de Cloud SQL.
    • DATABASE_ID: Es el ID de tu base de datos de Cloud SQL.
    • TABLE_ID: Es 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. Si especificas INCREMENTAL, se produce una actualización incremental de los datos de Cloud SQL en tu almacén de datos. Esta acción realiza una operación de upsert, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Si especificas FULL, se realizará una nueva base 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 de él 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 AI Applications Python.

Para autenticarte en AI Applications, 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

  • Para adjuntar tu almacén de datos a una app, crea una app y selecciona tu almacén de datos siguiendo los pasos que se indican en Crea una app de búsqueda.

  • Para obtener una vista previa de cómo aparecerán los resultados de la búsqueda después de configurar tu app y tu almacén de datos, consulta Cómo obtener resultados de la búsqueda.

Importar desde Spanner

Para transferir datos desde 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 Vertex AI Search, ve a Importa datos desde Spanner.

Para otorgar acceso a Vertex AI Search 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 tu 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 Data Boost durante la importación, selecciona el rol Cloud Spanner > Cloud Spanner Database Reader.
    • 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 bases 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 Importar datos desde Spanner.

Importa datos desde 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 basadas en 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 deseas activar el boosting 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 del 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 Se completó la importación, 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 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: Es 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 en minúscula, dígitos, guiones bajos y guiones.
    • DISPLAY_NAME: Es el nombre visible del almacén de datos. Esto podría mostrarse en la consola de Google Cloud .
  2. Importar datos desde 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: Es 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. Indica si se debe 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. Si especificas INCREMENTAL, se realizará una actualización incremental de los datos de Spanner a tu almacén de datos. Esta operación realiza una inserción o actualización, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Si especificas FULL, se realizará 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 de él 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 IDs de documentos. Si se configura como true, los IDs de documentos se generan en función de un hash de la carga útil. Ten en cuenta que es posible que los IDs de documentos generados no sigan siendo coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda establecer reconciliationMode en FULL para mantener IDs de documentos coherentes.

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

Python

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

Para autenticarte en AI Applications, 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

  • Para adjuntar tu almacén de datos a una app, crea una app y selecciona tu almacén de datos siguiendo los pasos que se indican en Crea una app de búsqueda.

  • Para obtener una vista previa de cómo aparecerán los resultados de la búsqueda después de configurar tu app y tu almacén de datos, consulta Cómo obtener resultados de la búsqueda.

Importa desde Firestore

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

Si tus datos de Firestore se encuentran en el mismo proyecto que Vertex AI Search, ve a Importar datos de Firestore.

Si tus datos de Firestore se encuentran en un proyecto diferente al de Vertex AI Search, consulta Cómo configurar el acceso a Firestore.

Configura el acceso a Firestore desde otro proyecto

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

  1. Reemplaza la siguiente variable PROJECT_NUMBER por el número de tu 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 Nuevos principales, 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. Vuelve a tu proyecto de Vertex AI Search.

A continuación, ve a Importar 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 basadas en 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 del 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 Se completó la importación, 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 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 en minúscula, dígitos, guiones bajos y guiones.
    • DISPLAY_NAME: Es el nombre visible del almacén de datos. Esto podría mostrarse en la consola de Google Cloud .
  2. Importar 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: Es 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 en minúscula, 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. Si especificas INCREMENTAL, se produce una actualización incremental de los datos de Firestore en tu almacén de datos. Esta acción realiza una operación de upsert, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Si especificas FULL, se realizará una nueva base 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 de él los documentos que no están en Firestore. 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 IDs de documentos. Si se configura como true, los IDs de documentos se generan en función de un hash de la carga útil. Ten en cuenta que es posible que los IDs de documentos generados no sigan siendo coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda establecer reconciliationMode en FULL para mantener IDs de documentos coherentes.
    • ID_FIELD: es opcional. Especifica qué campos son los IDs de documento.

Python

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

Para autenticarte en AI Applications, 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

  • Para adjuntar tu almacén de datos a una app, crea una app y selecciona tu almacén de datos siguiendo los pasos que se indican en Crea una app de búsqueda.

  • Para obtener una vista previa de cómo aparecerán los resultados de la búsqueda después de configurar tu app y tu almacén de datos, consulta Cómo obtener resultados de la búsqueda.

Importar desde Bigtable

Para transferir datos desde Bigtable, sigue estos pasos para crear un almacén de datos y transferir datos con la API.

Configura el acceso a Bigtable

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

  1. Reemplaza la siguiente variable PROJECT_NUMBER por el número de tu 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. Vuelve a tu proyecto de Vertex AI Search.

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

Importa datos de Bigtable

REST

Para usar la línea de comandos y crear un almacén de datos, y luego 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 en minúscula, dígitos, guiones bajos y guiones.
    • DISPLAY_NAME: Es el nombre visible del almacén de datos. Esto podría mostrarse 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: Es 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 en minúscula, 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: Es el ID de tu tabla de Bigtable.
    • KEY_FIELD_NAME: Es opcional, pero se recomienda. Nombre del campo que se usará para el valor de la clave de fila después de la transferencia 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 si se incluye esa columna en columns y se especifica 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. Nombre del campo que se usará para esta columna después de la transferencia a Vertex AI Search.
    • COLUMN_ENCODING: es opcional. Es el modo de codificación de los valores para 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. Si especificas INCREMENTAL, se produce una actualización incremental de los datos de Bigtable a tu almacén de datos. Esto realiza una operación de upsert, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Si especificas FULL, se realizará una nueva base 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 de él los documentos que no están en Bigtable. El modo FULL es útil si deseas borrar automáticamente los documentos que ya no necesitas.
    • AUTO_GENERATE_IDS: es opcional. Especifica si se deben generar automáticamente IDs de documentos. Si se configura como true, los IDs de documentos se generan en función de un hash de la carga útil. Ten en cuenta que es posible que los IDs de documentos generados no sigan siendo coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda establecer reconciliationMode en 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 como false, debes especificar idField. De lo contrario, no se podrán importar los documentos.

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

Python

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

Para autenticarte en AI Applications, 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

  • Para adjuntar tu almacén de datos a una app, crea una app y selecciona tu almacén de datos siguiendo los pasos que se indican en Crea una app de búsqueda.

  • Para obtener una vista previa de cómo aparecerán los resultados de la búsqueda después de configurar tu app y tu almacén de datos, consulta Cómo obtener resultados de la búsqueda.

Importación desde AlloyDB para PostgreSQL

Para transferir datos desde AlloyDB para PostgreSQL, sigue estos pasos 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 se encuentran en el mismo proyecto que el proyecto de Vertex AI Search, ve a Importar datos de AlloyDB para PostgreSQL.

Si tus datos de AlloyDB para PostgreSQL se encuentran en un proyecto diferente al de Vertex AI Search, consulta Cómo configurar el acceso a AlloyDB para PostgreSQL.

Configura el acceso a AlloyDB para PostgreSQL desde otro proyecto

Para otorgar acceso a Vertex AI Search 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 tu 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 proyecto Google Cloud 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 Nuevos principales, 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. Vuelve a tu proyecto de Vertex AI Search.

A continuación, ve a Importar datos desde 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 basadas en 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 del 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 Se completó la importación, 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 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 en minúscula, dígitos, guiones bajos y guiones.
    • DISPLAY_NAME: Es el nombre visible del almacén de datos. Esto podría mostrarse 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: Es 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 en minúscula, dígitos, guiones bajos y guiones.
    • ALLOYDB_PROJECT_ID: Es 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. Si especificas INCREMENTAL, se produce una actualización incremental de los datos de AlloyDB para PostgreSQL en tu almacén de datos. Esta acción realiza una operación de upsert, que agrega documentos nuevos y reemplaza los existentes por documentos actualizados con el mismo ID. Si especificas FULL, se realizará una nueva base 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 de él 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 IDs de documentos. Si se configura como true, los IDs de documentos se generan en función de un hash de la carga útil. Ten en cuenta que es posible que los IDs de documentos generados no sigan siendo coherentes en varias importaciones. Si generas IDs automáticamente en varias importaciones, Google recomienda establecer reconciliationMode en FULL para mantener IDs de documentos coherentes.
    • ID_FIELD: es opcional. Especifica qué campos son los IDs de documento.

Python

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

Para autenticarte en AI Applications, 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

  • Para adjuntar tu almacén de datos a una app, crea una app y selecciona tu almacén de datos siguiendo los pasos que se indican en Crea una app de búsqueda.

  • Para obtener una vista previa de cómo aparecerán los resultados de la búsqueda después de configurar tu app y tu almacén de datos, consulta Cómo obtener resultados de la búsqueda.

Sube datos JSON estructurados con la API

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

Antes de importar tus datos, prepara los datos para la transferencia.

REST

Para usar la línea de comandos para 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 proyecto de Google Cloud .
    • DATA_STORE_ID: Es 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: Es el nombre visible del almacén de datos de Vertex AI Search que deseas crear.
  2. Importa datos estructurados.

    Existen varios enfoques que puedes usar para subir datos, incluidos 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: Es un ID único para el documento. Este ID puede tener hasta 63 caracteres y solo puede contener letras en minúscula, dígitos, guiones bajos y guiones.
      • JSON_DOCUMENT_STRING: Es 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

  • Para adjuntar tu almacén de datos a una app, crea una app y selecciona tu almacén de datos siguiendo los pasos que se indican en Crea una app de búsqueda.

  • Para obtener una vista previa de cómo aparecerán los resultados de la búsqueda después de configurar tu app y tu almacén de datos, consulta Cómo obtener resultados de la búsqueda.

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 al agente de servicio de Cloud Storage el rol de IAM de encriptador/desencriptador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) en la clave. Para obtener más información, consulta Antes de comenzar en "Claves de encriptación administradas por el cliente".

  • Si utilizas la indexación avanzada de sitios web y el Uso de documentos del almacén de datos es mucho menor de lo que esperas, revisa los patrones de URL que especificaste para la indexación y asegúrate de que los patrones de URL especificados abarquen 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 a él con los comandos de la consola Google Cloud 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.