Consultar vetores - Amazon Simple Storage Service

Consultar vetores

nota

O Amazon S3 Vectors está na versão prévia para o Amazon Simple Storage Service e está sujeito a alterações.

Você pode executar uma consulta de similaridade com a operação de API QueryVectors, na qual você especifica o vetor de consulta, o número de resultados relevantes a serem exibidos (os top-k vizinhos mais próximos) e o ARN do índice. Além disso, você pode usar filtros de metadados em uma consulta para pesquisar somente os vetores que correspondam ao filtro. Se você fizer uma solicitação para filtrar em um campo de metadados não filtrável, a solicitação exibirá o erro 400 Bad Request. Para ter mais informações sobre filtragem de metadados, consulte Filtragem de metadados.

Na resposta, as chaves vetoriais são exibidas por padrão. Opcionalmente, você pode incluir a distância e os metadados na resposta.

Ao gerar o vetor de consulta, você deve usar o mesmo modelo de incorporação de vetores usado para gerar os vetores iniciais armazenados no índice de vetores. Por exemplo, se você usar o modelo Incorporador de Texto do Amazon Titan V2 no Amazon Bedrock para gerar incorporações de vetores de seus documentos, use o mesmo modelo de incorporação para converter uma pergunta em um vetor de consulta. Além disso, as Bases de Conhecimento do Amazon Bedrock oferecem um fluxo de trabalho de RAG completo e totalmente gerenciado, no qual o Amazon Bedrock busca dados automaticamente na fonte de dados do S3, converte o conteúdo em blocos de texto e gera incorporações e as armazena no índice de vetores. Em seguida, você pode consultar a base de conhecimento e gerar respostas baseadas em partes recuperadas dos dados de origem. Para ter mais informações sobre como consultar vetores de uma base de conhecimento do Amazon Bedrock no console, consulte (Opcional) Integrar o S3 Vectors às Bases de Conhecimento do Amazon Bedrock.

Além disso, a ferramenta de código aberto Amazon S3 Vectors Embed CLI oferece uma maneira simplificada de realizar pesquisas semânticas por meio da linha de comandos. Essa ferramenta de código aberto simplifica o processo de consulta gerenciando a geração de incorporações de vetores com os modelos de base do Amazon Bedrock e executando operações de pesquisa semântica nos índices de vetores do S3. Para ter mais informações sobre como usar essa ferramenta para consultar dados vetoriais, consulte Criar incorporações de vetores e realizar pesquisas semânticas com a s3vectors-embed-cli.

O S3 Vectors oferece tempos de latência de consulta de menos de um segundo. Ele usa o throughput elástico do Amazon S3 para lidar com pesquisas em milhões de vetores e é ideal para workloads em que as consultas são menos frequentes. Para realizar consultas de similaridade para suas incorporações de vetores, vários fatores podem afetar o desempenho médio de recall, como o modelo de incorporação de vetores, o tamanho do conjunto de dados vetoriais (o número de vetores e dimensões) e a distribuição das consultas. O S3 Vectors oferece um recall médio de mais de 90% para a maioria dos conjuntos de dados. O recall médio mede a qualidade dos resultados da consulta. Um recall médio de 90% significa que a resposta contém 90% dos vetores reais mais próximos (verdade fundamental) que são armazenados no índice de vetores em relação ao vetor de consulta. No entanto, como o desempenho real pode variar dependendo de seus casos de uso específicos, recomendamos realizar seus próprios testes com dados e consultas representativos para validar se os vetores do S3 atendem aos requisitos de recall.

SDK for Python
# Query a vector index with an embedding from Amazon Titan Text Embeddings V2. import boto3 import json # Create Bedrock Runtime and S3 Vectors clients in the AWS Region of your choice. bedrock = boto3.client("bedrock-runtime", region_name="us-west-2") s3vectors = boto3.client("s3vectors", region_name="us-west-2") # Query text to convert to an embedding. input_text = "adventures in space" # Generate the vector embedding. response = bedrock.invoke_model( modelId="amazon.titan-embed-text-v2:0", body=json.dumps({"inputText": input_text}) ) # Extract embedding from response. model_response = json.loads(response["body"].read()) embedding = model_response["embedding"] # Query vector index. response = s3vectors.query_vectors( vectorBucketName="media-embeddings", indexName="movies", queryVector={"float32": embedding}, topK=3, returnDistance=True, returnMetadata=True ) print(json.dumps(response["vectors"], indent=2)) # Query vector index with a metadata filter. response = s3vectors.query_vectors( vectorBucketName="media-embeddings", indexName="movies", queryVector={"float32": embedding}, topK=3, filter={"genre": "scifi"}, returnDistance=True, returnMetadata=True ) print(json.dumps(response["vectors"], indent=2))