Topik ini menjelaskan cara menggunakan OSS SDK untuk Python 2.0 guna memanggil operasi QueryVectors dan melakukan pencarian kemiripan dalam indeks vektor.
Izin
Akun Alibaba Cloud memiliki semua izin secara default. Pengguna Resource Access Management (RAM) atau Peran RAM di bawah akun Alibaba Cloud tidak memiliki izin secara default. Akun Alibaba Cloud atau administrator harus memberikan izin untuk operasi tersebut melalui ikhtisar kebijakan RAM atau kebijakan bucket.
|
API |
Action |
Description |
|
QueryVectors |
|
Melakukan kueri terhadap data vektor. |
Definisi metode
query_vectors(request: QueryVectorsRequest, **kwargs) → QueryVectorsResult
Parameter permintaan
|
Parameter |
Type |
Description |
|
request |
QueryVectorsRequest |
Menetapkan parameter permintaan, termasuk vektor kueri, kondisi filter, dan jumlah hasil yang akan dikembalikan. Untuk informasi selengkapnya, lihat QueryVectorsRequest. |
Nilai kembali
|
Type |
Description |
|
QueryVectorsResult |
Nilai kembali, yang berisi daftar vektor yang dikembalikan. Untuk informasi selengkapnya, lihat QueryVectorsResult. |
Untuk definisi lengkap metode ini, lihat query_vectors.
Kode contoh
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()
# Memuat nilai kredensial dari variabel lingkungan
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Menggunakan konfigurasi default SDK
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 # Untuk mengakses layanan melalui jaringan publik, atur nilai ini ke False atau hapus baris ini.
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()
Referensi
Untuk kode contoh lengkap mengenai kueri vektor, lihat query_vectors.py.