Para optimizar la transición desde la versión 1.0 de Vector Search, se introdujo una nueva función en la API de ImportDataObjects.
El proceso de migración consta de tres pasos clave:
Crea una colección con un esquema coincidente. Antes de importar, debes crear una colección. Su esquema de datos debe estar estructurado para admitir los datos transformados de Vector Search 1.0.
Inicia el proceso de importación. Llama a la API de
ImportDataObjectsy especifica la ubicación de Cloud Storage de tus datos de Vector Search 1.0 y habilita la marca de conversióndetect_and_convert_vs1_json.Comprende la transformación de datos. Familiarízate con la forma en que tus campos de datos de la versión 1.0 de la Búsqueda de vectores se asignan a la nueva estructura de objetos de datos.
Cree 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": {} \
} \
} \
}'
Importa tus datos de la Búsqueda de vectores 1.0
A continuación, usa la API de ImportDataObjects en la colección que acabas de crear.
Dirígelo al bucket de Cloud Storage que contiene tus 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, tus datos de Vector Search 1.0 se transformarán en objetos de datos de Vector Search 2.0. En los siguientes ejemplos, se ilustra 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 la Búsqueda de vectores 2.0 transformada
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]}},
}
)