Actualiza un esquema

Puedes actualizar el esquema de cualquier dato que contenga datos que admitan un esquema, como datos estructurados, datos del sitio web con datos estructurados o cualquier otro dato no estructurado con metadatos.

Puedes actualizar el esquema en la consola de Google Cloud o con el método de la API de schemas.patch. La actualización del esquema de un sitio web solo es compatible con la API de REST.

Para actualizar el esquema, puedes agregar campos nuevos, cambiar campos indexables, que se puedan buscar y anotaciones recuperables para un campo, o marca un campo como una propiedad clave, por ejemplo, title, uri y description.

Actualiza tu esquema

Puedes actualizar tu esquema en la consola de Google Cloud o con la API.

Console

Para actualizar un esquema en la consola de Google Cloud, sigue estos pasos:

  1. Revisa la sección Requisitos y limitaciones para comprobarlo. de que la actualización del esquema sea válida.

  2. Si actualizas anotaciones de campo (estableces campos como indexables, recuperables, dinámicos, con facetas, que se pueden buscar o completar), consulta Configurar la configuración de campos para conocer las limitaciones y los requisitos de cada tipo de anotación.

  3. Comprueba que completaste la transferencia de datos. De lo contrario, es posible que el esquema aún estarán disponibles para editar.

  4. En la consola de Google Cloud, ve a la página Agent Builder.

    Agent Builder

  5. En el menú de navegación, haz clic en almacenes de datos.

  6. En la columna Nombre, haz clic en el almacén de datos con el esquema que deseas. actualización.

  7. Haz clic en la pestaña Esquema para ver el esquema de tus datos.

    Es posible que esta pestaña esté vacía si es la primera vez que editas los campos.

  8. Haz clic en el botón Editar.

  9. Actualiza tu esquema:

    • Asigna propiedades clave: En la columna Key properties de tu esquema, selecciona una propiedad clave a la que quieras asignar un campo. Por ejemplo, si un campo llamado details siempre contiene la descripción de un documento y asigna ese campo a la propiedad de clave Description.

    • Actualizar la cantidad de dimensiones (avanzado): Puedes actualizar esta configuración si usas incorporaciones de vectores personalizadas con la Búsqueda de Vertex AI. Consulta Avanzado: Usa incorporaciones personalizadas.

    • Actualizar anotaciones de campo: Para actualizar las anotaciones de un campo, selecciona o anula la selección de la configuración de anotación de un campo. Las anotaciones disponibles son las siguientes: Retrievable, Indexable, Dynamic Facetable, Searchable y Completable. Algunos parámetros de configuración de campos tienen limitaciones. Consulta Establece la configuración de los campos para las descripciones y requisitos para cada tipo de anotación.

    • Agregar un campo nuevo: Si agregas campos nuevos a tu esquema antes de importar documentos nuevos con esos campos, puedes acortar el tiempo que tarda Vertex AI Agent Builder en volver a indexar tus datos después de la importación.

      1. Haz clic en Agregar campos nuevos para expandir esa sección.

      2. Haz clic en add_box Agregar nodo y especifica la configuración del campo nuevo.

        Para indicar un array, establece Array en Yes. Por ejemplo, para agregar un array de cadenas, establece type en string y Array en Yes.

        En el caso de un índice de almacén de datos de sitios web, todos los campos que agregues son arrays de forma predeterminada.

  10. Haz clic en Guardar para aplicar los cambios de esquema.

    Cambiar el esquema activa la nueva indexación. Para los almacenes de datos grandes, la reindexación puede tardar horas.

REST

Sigue estos pasos para actualizar tu esquema con la API:

  1. Revisa los Requisitos y limitaciones y la Limitación Ejemplos (solo REST) para verificar que tu esquema cambie son válidos.

    Para actualizar el esquema de los almacenes de datos con sitios web o datos no estructurados con metadatos, ve al paso 5 para llamar al método schema.patch.

  2. Si actualizas anotaciones de campos (configurando campos como indexables, recuperables, en facetas dinámicas o fáciles de buscar), revisan Establece la configuración de los campos del limitaciones y requisitos de cada tipo de anotación.

  3. Si editas un esquema detectado automáticamente, asegúrate de haber completado la transferencia de datos. De lo contrario, es posible que el esquema aún no esté disponible para su edición.

  4. Busca el ID de tu almacén de datos. Si ya tienes un almacén de datos continúe con el siguiente paso.

    1. En la consola de Google Cloud, ve a la página Agent Builder y, en el menú de navegación, haz clic en Almacenes de datos.

      Ve a la página Almacenes de datos.

    2. Haz clic en el nombre de tu almacén de datos.

    3. En la página Datos de tu almacén de datos, obtén el ID del almacén de datos.

  5. Usa el método de la API schemas.patch para proporcionar tu nuevo esquema JSON como 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/schemas/default_schema" \
    -d '{
      "structSchema": JSON_SCHEMA_OBJECT
    }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DATA_STORE_ID: Es el ID del almacén de datos de Vertex AI Search.
    • JSON_SCHEMA_OBJECT: Tu nuevo esquema JSON como un objeto JSON. Por ejemplo:

      {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "keyPropertyMapping": "title"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "keyPropertyMapping": "category"
            }
          },
          "uri": {
            "type": "string",
            "keyPropertyMapping": "uri"
          }
        }
      }
  6. Opcional: Revisa el esquema según el procedimiento Ver una definición de esquema.

C#

Para obtener más información, consulta la documentación de referencia de la API de C# del compilador de agentes de Vertex AI.

Para autenticarte en Vertex AI Agent Builder, 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.

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

public sealed partial class GeneratedSchemaServiceClientSnippets
{
    /// <summary>Snippet for UpdateSchema</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 UpdateSchemaRequestObject()
    {
        // Create client
        SchemaServiceClient schemaServiceClient = SchemaServiceClient.Create();
        // Initialize request argument(s)
        UpdateSchemaRequest request = new UpdateSchemaRequest
        {
            Schema = new Schema(),
            AllowMissing = false,
        };
        // Make the request
        Operation<Schema, UpdateSchemaMetadata> response = schemaServiceClient.UpdateSchema(request);

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

Go

Para obtener más información, consulta la documentación de referencia de la API de Go del compilador de agentes de Vertex AI.

Para autenticarte en Vertex AI Agent Builder, 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.


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

	req := &discoveryenginepb.UpdateSchemaRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#UpdateSchemaRequest.
	}
	op, err := c.UpdateSchema(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 API de Java de Vertex AI Agent Builder documentación de referencia.

Para autenticarte en Vertex AI Agent Builder, 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.

import com.google.cloud.discoveryengine.v1.Schema;
import com.google.cloud.discoveryengine.v1.SchemaServiceClient;
import com.google.cloud.discoveryengine.v1.UpdateSchemaRequest;

public class SyncUpdateSchema {

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

  public static void syncUpdateSchema() 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 (SchemaServiceClient schemaServiceClient = SchemaServiceClient.create()) {
      UpdateSchemaRequest request =
          UpdateSchemaRequest.newBuilder()
              .setSchema(Schema.newBuilder().build())
              .setAllowMissing(true)
              .build();
      Schema response = schemaServiceClient.updateSchemaAsync(request).get();
    }
  }
}

Python

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

Para autenticarte en Vertex AI Agent Builder, 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.

# 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://googleapis.dev/python/google-api-core/latest/client_options.html
from google.cloud import discoveryengine_v1


def sample_update_schema():
    # Create a client
    client = discoveryengine_v1.SchemaServiceClient()

    # Initialize request argument(s)
    request = discoveryengine_v1.UpdateSchemaRequest(
    )

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

    print("Waiting for operation to complete...")

    response = operation.result()

    # Handle the response
    print(response)

Ruby

Para obtener más información, consulta la API de Ruby de Vertex AI Agent Builder documentación de referencia.

Para autenticarte en Vertex AI Agent Builder, 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.

require "google/cloud/discovery_engine/v1"

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

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

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

Requisitos y limitaciones

Cuando actualices un esquema, asegúrate de que el esquema nuevo esté hacia atrás compatible con el esquema que estás actualizando. Para actualizar un esquema con uno nuevo que no sea retrocompatible, debes borrar todos los documentos del almacén de datos, borrar el esquema y crear uno nuevo.

La actualización de un esquema activa una nueva indexación de todos los documentos. Esto puede llevar tiempo y generar costos adicionales:

  • Hora. La reindexación de un almacén de datos de gran tamaño puede tardar horas o días.

  • Gasto. La reindexación puede generar costos, según el analizador. Por ejemplo: los almacenes de datos que usan el analizador de OCR o el analizador de diseño incurren en de los costos. Para obtener más información, consulta los precios de las funciones de Document AI.

Las actualizaciones de esquema no admiten lo siguiente:

  • Cambiar el tipo de campo Una actualización del esquema no permite cambiar el tipo del campo. Por ejemplo, un campo asociado a un número entero no se puede cambiar a una cadena.
  • Quita un campo. Una vez definido, un campo no se puede quitar. Puedes continúas agregando campos nuevos, pero no puedes quitar un campo existente.

Ejemplos de limitaciones (solo REST)

En esta sección, se muestran ejemplos de tipos de actualizaciones de esquemas válidos y no válidos. Estos En los ejemplos, se usa el siguiente esquema de JSON de ejemplo:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "description": {
      "type": "string",
      "keyPropertyMapping": "description"
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string",
        "keyPropertyMapping": "category"
      }
    }
  }
}

Ejemplos de actualizaciones compatibles

Se admiten las siguientes actualizaciones del esquema de ejemplo.

  • Agregar un campo En este ejemplo, el campo properties.uri se agregado al esquema.

    {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "properties": {
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string",
          "keyPropertyMapping": "description"
        },
        "uri": { // Added field. This is supported.
          "type": "string",
          "keyPropertyMapping": "uri"
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string",
            "keyPropertyMapping": "category"
          }
        }
      }
    }
    
  • Agregar o quitar anotaciones de propiedades clave para title y description o uri. En este ejemplo, se agregó keyPropertyMapping al campo title.

    {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "keyPropertyMapping": "title" // Added "keyPropertyMapping". This is supported.
        },
        "description": {
          "type": "string",
          "keyPropertyMapping": "description"
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string",
            "keyPropertyMapping": "category"
          }
        }
      }
    }
    

Ejemplos de actualizaciones de esquema no válidas

No se admiten las siguientes actualizaciones en el esquema de ejemplo.

  • Cambia un tipo de campo. En este ejemplo, el tipo del campo title se cambió de cadena a número. No se admite esta opción.

      {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "title": {
            "type": "number" // Changed from string. Not allowed.
          },
          "description": {
            "type": "string",
            "keyPropertyMapping": "description"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "keyPropertyMapping": "category"
            }
          }
        }
      }
    
  • Quitar un campo. En este ejemplo, se quitó el campo title. No se admite esta opción.

      {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          // "title" is removed. Not allowed.
          "description": {
            "type": "string",
            "keyPropertyMapping": "description"
          },
          "uri": {
            "type": "string",
            "keyPropertyMapping": "uri"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "keyPropertyMapping": "category"
            }
          }
        }
      }
    

¿Qué sigue?