Para preparar a sua aplicação para a escala e o desempenho de produção, tem de criar índices de recolha. Sem um índice, as pesquisas de ANN são lentas porque realizam uma análise de força bruta. A criação de um índice torna as pesquisas em campos vetoriais indexados muito rápidas.
Escolher uma métrica de distância
Escolher a métrica de distância certa para o seu índice é fundamental para alcançar resultados da pesquisa de similaridade precisos e relevantes. A escolha ideal depende principalmente das caraterísticas das suas incorporações de vetores e da natureza dos seus dados. A regra mais importante é usar a métrica de distância com a qual o seu modelo de incorporação foi preparado. Os modelos de incorporação são otimizados para produzir representações vetoriais em que a semelhança é melhor captada por um cálculo de distância específico. A utilização de uma métrica diferente pode originar resultados da pesquisa subótimos ou incorretos.
Consulte a documentação do modelo de incorporação: esta é a forma mais fiável de determinar a métrica de distância pretendida.
Considere o seu exemplo de utilização: para encontrar texto ou imagens semanticamente semelhantes, a semelhança de cossenos é frequentemente a melhor escolha. Se a "força" ou a "intensidade" representada pela magnitude do vetor for importante, considere a distância L2.
Analise os vetores: determine se os vetores estão normalizados. Se forem, pode usar a semelhança de cossenos ou o produto escalar e esperar uma classificação semelhante.
Ao considerar cuidadosamente estes fatores, pode selecionar a métrica de distância mais adequada para o seu índice, o que leva a resultados da pesquisa de similaridade mais precisos e significativos.
Criar um índice ANN
Pode criar um índice ANN num campo de incorporação específico. Por predefinição, todos os campos de string, numéricos e booleanos do objeto de dados são enviados para o índice para permitir a filtragem inline.
Para otimizar os custos de computação, pode especificar exatamente que campos devem ser filtráveis (filter_fields) e quais devem ser apenas armazenados como payload (store_fields).
O exemplo seguinte demonstra como criar um índice, plot_index, na coleção 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" \
] \
}'
No exemplo, o pedido especifica que year e genre são
filtráveis (transmitidos como campos de filtro para o índice) e o campo de carga útil title
não é filtrável.
Obter um índice
O exemplo seguinte demonstra como obter um índice existente, plot_index, armazenado na coleção 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'
Índices de fichas
O exemplo seguinte demonstra como listar todos os índices na coleçãomovies.
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 um índice
O exemplo seguinte demonstra como eliminar um índice existente,
plot_index, da coleção 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'
O que se segue?
- Saiba como consultar objetos de dados.
- Saiba como pesquisar objetos de dados através da pesquisa semântica ou da pesquisa híbrida.