Índices de coleções

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?