Trabalho com coleções de pesquisa vetorial - OpenSearch Serviço Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Trabalho com coleções de pesquisa vetorial

O tipo de coleta de pesquisa vetorial no OpenSearch Serverless fornece um recurso de pesquisa por similaridade que é escalável e de alto desempenho. Isso facilita a criação de experiências modernas de pesquisa aumentada de machine learning (ML) e aplicativos de inteligência artificial generativa (IA) sem precisar gerenciar a infraestrutura subjacente do banco de dados de vetores.

Os casos de uso de coleções de pesquisa vetorial incluem pesquisas de imagens, pesquisas de documentos, recuperação de músicas, recomendações de produtos, pesquisas de vídeo, pesquisas baseadas em localização, detecção de fraudes e detecção de anomalias.

Como o mecanismo vetorial do OpenSearch Serverless é alimentado pelo recurso de pesquisa k-Nearest Neighbor (k-NN) OpenSearch, você obtém a mesma funcionalidade com a simplicidade de um ambiente sem servidor. O mecanismo suporta as operações da OpenSearch API k-NN. Com essas operações, você pode aproveitar pesquisas em texto completo, filtragem avançada, agregações, consultas geoespaciais, consultas aninhadas para uma recuperação mais rápida dos dados e resultados de pesquisa aprimorados.

O mecanismo vetorial fornece métricas de distância, como distância euclidiana, similaridade de cosseno, similaridade de produtos escalares, e também pode acomodar 16.000 dimensões. Você pode armazenar campos com vários tipos de dados para metadados, como números, booleanos, datas, palavras-chave e pontos geográficos. Também é possível armazenar campos com texto para obter informações descritivas e adicionar mais contexto aos vetores armazenados. A colocalização conjunta dos tipos de dados reduz a complexidade, aumenta a capacidade de manutenção e evita a duplicação de dados, desafios de compatibilidade de versões e problemas de licenciamento.

Conceitos básicos de coleções de pesquisa de vetores

Neste tutorial, você conclui as etapas a seguir para armazenar, pesquisar e recuperar incorporações vetoriais em tempo real:

Etapa 1: configurar permissões

Para concluir este tutorial (e usar o OpenSearch Serverless em geral), você deve ter as permissões corretas AWS Identity and Access Management (IAM). Neste tutorial, você criará uma coleção, carregará e pesquisará dados e, em seguida, excluirá a coleção.

Seu usuário ou função deve ter uma política baseada em identidade anexada com as seguintes permissões mínimas:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:CreateCollection", "aoss:ListCollections", "aoss:BatchGetCollection", "aoss:DeleteCollection", "aoss:CreateAccessPolicy", "aoss:ListAccessPolicies", "aoss:UpdateAccessPolicy", "aoss:CreateSecurityPolicy", "iam:ListUsers", "iam:ListRoles" ], "Effect": "Allow", "Resource": "*" } ] }

Para obter mais informações sobre as permissões do IAM OpenSearch sem servidor, consulte. Gerenciamento de identidade e acesso no Amazon OpenSearch Sem Servidor

Etapa 2: criar uma coleção

Uma coleção é um grupo de OpenSearch índices que trabalham juntos para dar suporte a uma carga de trabalho ou caso de uso específico.

Para criar uma coleção OpenSearch sem servidor
  1. Abra o console do Amazon OpenSearch Service em https://console.aws.amazon.com/aos/home.

  2. Escolha Coleções no painel de navegação à esquerda e escolha Criar coleção.

  3. Nomeie o armazenamento da coleção.

  4. Para o tipo de coleção, escolha Pesquisa vetorial. Para ter mais informações, consulte Escolha de um tipo de coleção.

  5. Em Tipo de implantação, desmarque Habilitar redundância (réplicas ativas). Isso cria uma coleção no modo de desenvolvimento ou teste e reduz o número de unidades de OpenSearch computação (OCUs) em sua coleção para duas. Se quiser criar um ambiente de produção neste tutorial, deixe a caixa de seleção marcada.

  6. Em Segurança, selecione Criação fácil para simplificar sua configuração de segurança. Por padrão, todos os dados no mecanismo vetorial são criptografados em trânsito e em repouso. O mecanismo vetorial oferece suporte a permissões refinadas do IAM para que você possa definir quem pode criar, atualizar e excluir criptografias, redes, coleções e índices.

  7. Escolha Próximo.

  8. Reveja suas configurações da coleção e escolha Enviar. Aguarde alguns minutos até que o status da coleção mude para Active.

Etapa 3: Transferir e pesquisar dados

Um índice é uma coleção de documentos com um esquema de dados comum que fornece uma maneira de armazenar, pesquisar e recuperar suas incorporações vetoriais e outros campos. Você pode criar e carregar dados para índices em uma coleção OpenSearch sem servidor usando o console Dev Tools em OpenSearch painéis ou uma ferramenta HTTP, como Postman ou awscurl. Este tutorial usa Dev Tools.

Para indexar e pesquisar dados na coleção de filmes
  1. Para criar um único índice para sua nova coleção, envie a seguinte solicitação no console do Dev Tools. Por padrão, isso cria um índice com um nmslib mecanismo e uma distância euclidiana.

    PUT housing-index { "settings": { "index.knn": true }, "mappings": { "properties": { "housing-vector": { "type": "knn_vector", "dimension": 3 }, "title": { "type": "text" }, "price": { "type": "long" }, "location": { "type": "geo_point" } } } }
  2. Para indexar um único documento em housing-index, envie a seguinte solicitação:

    POST housing-index/_doc { "housing-vector": [ 10, 20, 30 ], "title": "2 bedroom in downtown Seattle", "price": "2800", "location": "47.71, 122.00" }
  3. Para pesquisar propriedades semelhantes às do seu índice, envie a seguinte consulta:

    GET housing-index/_search { "size": 5, "query": { "knn": { "housing-vector": { "vector": [ 10, 20, 30 ], "k": 5 } } } }

Etapa 4: Excluir a coleção

Como a coleção habitação é usada apenas para fins de teste, você deverá excluí-la quando terminar os testes.

Para excluir uma coleção OpenSearch sem servidor
  1. Volte para o console do Amazon OpenSearch Service.

  2. Escolha Coleções no painel de navegação à esquerda e selecione a coleção propriedades.

  3. Selecione Excluir para confirmar a exclusão.

Pesquisa com filtro

Você pode usar filtros para refinar os resultados da pesquisa semântica. Para criar um índice e realizar uma pesquisa com filtro nos seus documentos, substitua Carregar e pesquisar dados no tutorial anterior pelas instruções a seguir. As outras etapas permanecem as mesmas. Para obter mais informações sobre os filtros, consulte pesquisa k-NN com filtros.

Para indexar e pesquisar dados na coleção de filmes
  1. Para criar um único índice para sua coleção, envie a seguinte solicitação no console do Dev Tools:

    PUT housing-index-filtered { "settings": { "index.knn": true }, "mappings": { "properties": { "housing-vector": { "type": "knn_vector", "dimension": 3, "method": { "engine": "faiss", "name": "hnsw" } }, "title": { "type": "text" }, "price": { "type": "long" }, "location": { "type": "geo_point" } } } }
  2. Para indexar um único documento em housing-index-filtered, envie a seguinte solicitação:

    POST housing-index-filtered/_doc { "housing-vector": [ 10, 20, 30 ], "title": "2 bedroom in downtown Seattle", "price": "2800", "location": "47.71, 122.00" }
  3. Para pesquisar seus dados em busca de um apartamento em Seattle por um preço específico e dentro de uma determinada distância de um ponto geográfico, envie a seguinte solicitação:

    GET housing-index-filtered/_search { "size": 5, "query": { "knn": { "housing-vector": { "vector": [ 0.1, 0.2, 0.3 ], "k": 5, "filter": { "bool": { "must": [ { "query_string": { "query": "Find me 2 bedroom apartment in Seattle under $3000 ", "fields": [ "title" ] } }, { "range": { "price": { "lte": 3000 } } }, { "geo_distance": { "distance": "100miles", "location": { "lat": 48, "lon": 121 } } } ] } } } } } }

Workloads em escala de bilhões

Coleções de pesquisa vetorial oferecem suporte a workloads com bilhões de vetores. Você não precisa reindexar para fins de ajuste de escala, pois o ajuste de escala automático faz isso por você. Se você tiver milhões de vetores (ou mais) com um grande número de dimensões e precisar de mais de 200 OCUs, entre em contato com o AWS Support para aumentar o número máximo de Unidades de OpenSearch Computação (OCUs) para sua conta.

Limitações

As coleções de pesquisa vetorial têm as seguintes limitações:

  • As coleções de pesquisa vetorial não são compatíveis com o mecanismo Apache Lucene ANN.

  • As coleções de pesquisa vetorial são compatíveis apenas com o algoritmo HNSW com Faiss e não são compatíveis com FIV e IVFQ.

  • As coleções de pesquisa vetorial não são compatíveis com as operações de API de aquecimento, estatísticas e treinamento de modelo.

  • As coleções de pesquisa vetorial não oferecem suporte a scripts embutidos ou armazenados.

  • As informações de contagem de índices não estão disponíveis nas coleções AWS Management Console de pesquisa vetorial.

  • O intervalo de atualização dos índices nas coleções de pesquisa vetorial é de 60 segundos.

Próximas etapas

Agora que você sabe como criar uma coleção de pesquisa vetorial e indexar os dados, talvez você queira testar alguns dos seguintes exercícios:

  • Use o cliente OpenSearch Python para trabalhar com coleções de pesquisa vetorial. Veja este tutorial em GitHub.

  • Use o cliente OpenSearch Java para trabalhar com coleções de pesquisa vetorial. Veja este tutorial em GitHub.

  • Configure LangChain para usar OpenSearch como um repositório de vetores. LangChain é uma estrutura de código aberto para o desenvolvimento de aplicativos alimentados por modelos de linguagem. Para obter mais informações, consulte a LangChain documentação.