Este tópico explica como utilizar o SDK do OSS para Python 2.0 para chamar a operação QueryVectors e realizar uma pesquisa de similaridade em um índice de vetores.
Permissões
Por padrão, uma conta do Alibaba Cloud possui permissões totais, enquanto um usuário ou uma função do RAM não possui nenhuma. O proprietário da conta do Alibaba Cloud ou um administrador deve conceder as permissões por meio de uma RAM policy ou de uma bucket policy.
|
API |
Ação |
Descrição |
|
QueryVectors |
|
Consulta dados de vetores. |
Definição do método
query_vectors(request: QueryVectorsRequest, **kwargs) → QueryVectorsResult
Parâmetros do request
|
Parâmetro |
Tipo |
Descrição |
|
request |
QueryVectorsRequest |
Defina os parâmetros do request, incluindo o vetor de consulta, a condição de filtro e a quantidade de resultados a retornar. Para mais informações, consulte QueryVectorsRequest. |
Valores de retorno
|
Tipo |
Descrição |
|
QueryVectorsResult |
Valor de retorno que contém uma lista de vetores obtidos. Para mais informações, consulte QueryVectorsResult. |
Para acessar a definição completa do método, consulte query_vectors.
Código de exemplo
import argparse
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.vectors as oss_vectors
parser = argparse.ArgumentParser(description="vector query vectors sample")
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
parser.add_argument('--index_name', help='The name of the vector index.', required=True)
parser.add_argument('--account_id', help='The account id.', required=True)
def main():
args = parser.parse_args()
# Loading credentials values from the environment variables
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Using the SDK's default configuration
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
cfg.account_id = args.account_id
cfg.use_internal_endpoint = True # To access the service over the public network, set this to False or remove this line.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
vector_client = oss_vectors.Client(cfg)
query_filter = {
"$and": [{
"type": {
"$nin": ["comedy", "documentary"]
}
}]
}
query_vector = {"float32": [0.1] * 128}
result = vector_client.query_vectors(oss_vectors.models.QueryVectorsRequest(
bucket=args.bucket,
index_name=args.index_name,
filter=query_filter,
query_vector=query_vector,
return_distance=True,
return_metadata=True,
top_k=10
))
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
)
if result.vectors:
for vector in result.vectors:
print(f'vector: {vector}')
if __name__ == "__main__":
main()
Referências
Para conferir o código de exemplo completo de consulta de vetores, consulte query_vectors.py.