Para preparar tu aplicación para la producción a gran escala y el rendimiento, debes crear índices de colección. Sin un índice, las búsquedas de ANN son lentas porque realizan un análisis de fuerza bruta. Crear un índice hace que las búsquedas en los campos de vectores indexados sean muy rápidas.
Elegir una métrica de distancia
Elegir la métrica de distancia adecuada para tu índice es fundamental para obtener resultados de búsqueda de similitud precisos y relevantes. La elección óptima depende principalmente de las características de tus inserciones de vectores y de la naturaleza de tus datos. La regla más importante es usar la métrica de distancia con la que se ha entrenado tu modelo de inserciones. Los modelos de inserción se optimizan para generar representaciones vectoriales en las que la similitud se capta mejor mediante un cálculo de distancia específico. Si usas otra métrica, los resultados de búsqueda pueden ser incorrectos o no óptimos.
Consulta la documentación de tu modelo de inserción: esta es la forma más fiable de determinar la métrica de distancia prevista.
Ten en cuenta tu caso práctico: para encontrar texto o imágenes semánticamente similares, la similitud del coseno suele ser la mejor opción. Si es importante la "fuerza" o la "intensidad" representadas por la magnitud del vector, considera la distancia L2.
Analiza tus vectores: determina si tus vectores están normalizados. Si es así, puedes usar la similitud del coseno o el producto escalar y esperar una clasificación similar.
Si tienes en cuenta estos factores, podrás seleccionar la métrica de distancia más adecuada para tu índice, lo que te permitirá obtener resultados de búsqueda de similitud más precisos y significativos.
Crear un índice ANN
Puedes crear un índice ANN en un campo de inserción específico. De forma predeterminada, todos los campos de cadena, numéricos y booleanos de Data Object se insertan en el índice para permitir el filtrado insertado.
Para optimizar los costes de computación, puede especificar exactamente qué campos se deben poder filtrar (filter_fields) y cuáles solo se deben almacenar como carga útil (store_fields).
En el siguiente ejemplo se muestra cómo crear un índice, plot_index, en la colección movies.
curl -X POST \ 'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes?indexId=plot_index' \
-H 'Bearer $(gcloud auth print-access-token)' \
-H 'Content-Type: application/json' \
-d '{ \
"index_field": "plot_embedding", \
"filter_fields": [ \
"year", \
"genre" \
], \
"store_fields": [ \
"title" \
] \
}'
En el ejemplo, la solicitud especifica que year y genre se pueden filtrar (se transfieren al índice como campos de filtro) y que el campo de carga útil title no se puede filtrar.
Obtener un índice
A continuación, se muestra cómo obtener un índice, plot_index, almacenado en la colección movies.
curl -X GET \
'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes/plot_index' \
-H 'Bearer $(gcloud auth print-access-token)' \
-H 'Content-Type: application/json'
Mostrar índices
En el siguiente ejemplo se muestra cómo enumerar todos los índices de la colección movies.
curl -X GET \
'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes' \
-H 'Bearer $(gcloud auth print-access-token)' \
-H 'Content-Type: application/json'
Eliminar un índice
En el siguiente ejemplo se muestra cómo eliminar un índice plot_index de la colección movies.
curl -X DELETE \
'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes/plot_index' \
-H 'Bearer $(gcloud auth print-access-token)' \
-H 'Content-Type: application/json'
Siguientes pasos
- Consulta cómo consultar objetos de datos.
- Consulta cómo buscar objetos de datos mediante la búsqueda semántica o la búsqueda híbrida.