Migrar de Vector Search 1.0

Para simplificar la transición de la versión 1.0 de la búsqueda vectorial, se ha introducido una nueva función en la API ImportDataObjects.

El proceso de migración consta de tres pasos clave:

  1. Crea una colección con un esquema coincidente. Antes de importar, debes crear una colección. Su esquema de datos debe estar estructurado para adaptarse a los datos transformados de la versión 1.0 de la búsqueda vectorial.

  2. Inicia el proceso de importación. Llama a la API ImportDataObjects, especifica la ubicación de Cloud Storage de tus datos de Vector Search 1.0 y habilita la marca de conversión detect_and_convert_vs1_json.

  3. Familiarízate con la transformación de datos. Familiarízate con la forma en que se asignan los campos de datos de Vector Search 1.0 a la nueva estructura de objeto de datos.

Crear una colección

Primero, crea una colección con un esquema de datos que refleje la estructura de tus datos de Vector Search 1.0.

curl -X POST \
  'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections?collection_id=movies' \
  -H 'Bearer $(gcloud auth print-access-token)' \
  -H 'Content-Type: application/json' \
  -d '{ \
    "data_schema": { \
      "$schema": "http://json-schema.org/draft-07/schema#", \
      "type": "object", \
      "properties": { \
        "restricts": { \
          "type": "object", \
          "properties": { \
            "genres": { \
              "type": "array", \
              "items": { \
                "type": "string" \
              } \
            }, \
            "director": { \
              "type": "array", \
              "items": { \
                "type": "string" \
              } \
            } \
          } \
        }, \
        "restricts_deny": { \
          "type": "object", \
          "properties": { \
            "genres": { \
              "type": "array", \
              "items": { \
                "type": "string" \
              } \
            } \
          } \
        }, \
        "numeric_restricts": { \
          "type": "object", \
          "properties": { \
            "year": { \
              "type": "integer" \
            }, \
            "imdb_rating": { \
              "type": "number", \
              "format": "float" \
            } \
          } \
        }, \
        "embedding_metadata": { \
          "type": "object", \
          "properties": { \
            "plot": { \
              "type": "string" \
            }, \
            "customers_review_summary": { \
              "type": "string" \
            }, \
            "critics_review_summary": { \
              "type": "string" \
            } \
          }, \
        } \
      } \
    }, \
    "vector_schema": { \
      "embedding": { \
        "dense_vector": { \
          "dimensions": 768 \
        } \
      }, \
      "sparse_embedding": { \
        "sparse_vector": {} \
      } \
    } \
  }'

Importar datos de Vector Search 1.0

A continuación, usa la API ImportDataObjects en la colección que acabas de crear. Diríjalo al segmento de Cloud Storage que contenga sus datos de Vector Search 1.0.

curl -X POST \
"https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID:importDataObjects" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{ \
    "gcs_import": { \
      "contents_uri": "gs://your-bucket/path/to/your-data.jsonl", \
      "error_uri": "gs://your-bucket/path/to/import-errors/" \
    } \
  }'

Transformación de datos

Durante el proceso de importación, los datos de Vector Search 1.0 se transformarán en objetos de datos de Vector Search 2.0. En los siguientes ejemplos se muestra cómo se asignan los campos.

Formato de archivo de Cloud Storage de Vector Search 1.0

{
    "id": "movie-789",
    "embedding": [-0.23, 0.88, 0.11, ...],
    "sparse_embedding": {"values": [0.1, 0.2], "dimensions": [1, 4]},
    "restricts": [
        {"namespace": "genres", "allow": ["science-fiction", "action"], "deny": ["horror"]},
        {"namespace": "director", "allow": ["Christopher Nolan"]}
    ],
    "numeric_restricts": [
        {"namespace": "year", "value_int": 2010},
        {"namespace": "imdb_rating", "value_float": 8.8}
    ],
    "embedding_metadata": {
        "plot": "...",
        "customers_review_summary": "...",
        "critics_review_summary": "..."
    }
}

Objeto de datos de búsqueda vectorial transformada 2.0

DataObject(
    name="/.../movie-789",
    data={
        "restricts": {
            "genres": ["science-fiction", "action"],
            "director": ["Christopher Nolan"],
        },
        "restricts_deny": {
            "genres": ["horror"]
        },
        "numeric_restricts": {
            "year": 2010,
            "imdb_rating": 8.8,
        },
        "embedding_metadata": {
            "plot": "...",
            "customers_review_summary": "...",
            "critics_review_summary": "...",
        }
    },
    vectors={
        "embedding": {"dense_vector": {"values": [-0.23, 0.88, 0.11, ...]}},
        "sparse_embedding": {"sparse_vector": {"values": [0.1, 0.2], "indices": [1, 4]}},
    }
)