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 na tecnologia sem servidor do OpenSearch fornece um recurso de pesquisa por similaridade 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 da tecnologia sem servidor do OpenSearch é alimentado pelo atributo de pesquisa k-nearest mais próximo (k-NN) do OpenSearch, você obtém a mesma funcionalidade com a simplicidade de um ambiente sem servidor. O mecanismo é compatível com as operações da API k-NN OpenSearch. 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 a tecnologia sem servidor do OpenSearch em geral), é necessário ter as permissões corretas do 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 mais informações sobre permissões do IAM do OpenSearch Sem Servidor, consulte Identity and Access Management para Amazon OpenSearch Serverless.

Etapa 2: criar uma coleção

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

Para criar uma coleção da tecnologia sem servidor do OpenSearch
  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 para duas o número de unidades de computação (OCUs) do OpenSearch na sua coleção. 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 do OpenSearch sem Servidor usando o console do Dev Tools no OpenSearch Dashboards, ou uma ferramenta HTTP, como o Postman ou awscurl. Este tutorial usa o Dev Tools.

Para indexar e pesquisar dados na coleção de filmes
  1. Para criar um índice único para a 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 da tecnologia sem servidor do OpenSearch
  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 índice único para a 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ê tem milhões de vetores (ou mais) com muitas dimensões e precisa de mais de 200 OCUs, entre em contato com o AWS Support para aumentar o número máximo de unidades de computação (OCUs) do OpenSearch da 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 no GitHub.

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

  • Configure o LangChain para usar o OpenSearch como um armazenamento vetorial. O LangChain é uma estrutura de código aberto para o desenvolvimento de aplicativos baseados em modelos de linguagem. Para obter mais informações, consulte Documentação do LangChain.