Migre do Vector Search 1.0

Para simplificar a transição da pesquisa vetorial 1.0, foi introduzida uma nova funcionalidade na API ImportDataObjects.

O processo de migração envolve três passos principais:

  1. Crie uma coleção com um esquema correspondente. Antes de importar, tem de criar uma coleção. O respetivo esquema de dados tem de ser estruturado para acomodar os dados de pesquisa vetorial 1.0 transformados.

  2. Inicie o processo de importação. Chame a API ImportDataObjects, especificando a localização do Cloud Storage dos seus dados de pesquisa vetorial 1.0 e ativando a flag de conversão detect_and_convert_vs1_json.

  3. Compreenda a transformação de dados. Familiarize-se com a forma como os campos de dados da pesquisa vetorial 1.0 são mapeados para a nova estrutura de objetos de dados.

Crie uma coleção

Primeiro, crie uma coleção com um esquema de dados que reflita a estrutura dos seus dados de pesquisa vetorial 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": {} \
      } \
    } \
  }'

Importe os seus dados da pesquisa vetorial 1.0

Em seguida, use a API ImportDataObjects na coleção criada recentemente. Indique o contentor do Cloud Storage que contém os seus dados da Pesquisa vetorial 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/" \
    } \
  }'

Transformação de dados

Durante o processo de importação, os seus dados da pesquisa vetorial 1.0 são transformados em objetos de dados da pesquisa vetorial 2.0. Os exemplos seguintes ilustram como os campos são mapeados.

Formato de ficheiro do Cloud Storage da pesquisa vetorial 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 dados de pesquisa vetorial transformado 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]}},
    }
)