View a markdown version of this page

Menanyakan vektor - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menanyakan vektor

Anda dapat menjalankan kueri kesamaan dengan operasi QueryVectorsAPI, di mana Anda menentukan vektor kueri, jumlah hasil yang relevan untuk dikembalikan (tetangga terdekat K teratas), dan indeks ARN. Selain itu, Anda dapat menggunakan filter metadata dalam kueri, untuk mencari hanya vektor yang cocok dengan filter. Jika Anda membuat permintaan untuk memfilter pada bidang metadata yang tidak dapat difilter, permintaan akan mengembalikan kesalahan. 400 Bad Request Untuk informasi selengkapnya tentang pemfilteran metadata, lihat. Pemfilteran metadata

Sebagai tanggapan, kunci vektor dikembalikan secara default. Anda dapat secara opsional memasukkan jarak dan metadata dalam respons. Ketika topK melebihi ukuran halaman, hasil dikembalikan di beberapa halaman. Respons termasuk nextToken yang Anda gunakan untuk mengambil halaman berikutnya. Lanjutkan membuat QueryVectors permintaan dengan filter parameter yang sama queryVectortopK,, dan meneruskan nextToken dari setiap respons, hingga tidak nextToken ada lagi. Atau, Anda dapat menggunakan paginator bawaan di AWS SDK untuk melakukan iterasi secara otomatis melalui semua halaman tanpa penanganan secara manual. nextToken Token pagination tetap valid selama beberapa menit setelah kueri dijalankan. Jika token pagination kedaluwarsa, terbitkan ulang kueri asli untuk memulai sesi baru. Menulis ke indeks vektor antara pengambilan halaman tidak akan tercermin dalam sesi kueri itu. Untuk batasan spesifik topK dan ukuran halaman, lihatKeterbatasan dan pembatasan.

Saat membuat vektor kueri, Anda harus menggunakan model penyematan vektor yang sama yang digunakan untuk menghasilkan vektor awal yang disimpan dalam indeks vektor. Misalnya, jika Anda menggunakan model Amazon Titan Text Embeddings V2 di Amazon Bedrock untuk menghasilkan penyematan vektor dokumen Anda, gunakan model penyematan yang sama untuk mengonversi pertanyaan menjadi vektor kueri. Selain itu, Amazon Bedrock Knowledge Bases menyediakan alur kerja RAG end-to-end yang dikelola sepenuhnya di mana Amazon Bedrock secara otomatis mengambil data dari sumber data S3 Anda, mengonversi konten menjadi blok teks, menghasilkan penyematan, dan menyimpannya dalam indeks vektor Anda. Anda kemudian dapat menanyakan basis pengetahuan dan menghasilkan respons berdasarkan potongan yang diambil dari data sumber Anda. Untuk informasi selengkapnya tentang cara menanyakan vektor dari basis pengetahuan Amazon Bedrock di konsol, lihat. (Opsional) Integrasikan Vektor S3 dengan Basis Pengetahuan Amazon Bedrock

Selain itu, alat open-source Amazon S3 Vectors Embed CLI menyediakan cara yang disederhanakan untuk melakukan pencarian semantik dari baris perintah. Alat open source ini merampingkan proses kueri dengan menangani pembuatan embedding vektor dengan model foundation Amazon Bedrock dan menjalankan operasi pencarian semantik terhadap indeks vektor S3 Anda. Untuk informasi selengkapnya tentang penggunaan alat ini untuk menanyakan data vektor Anda, lihatMembuat embeddings vektor dan melakukan pencarian semantik dengan s3vectors-embed-cli.

Vektor S3 memberikan waktu respons sub-detik untuk kueri dingin, memanfaatkan throughput elastis Amazon S3 untuk mencari secara efisien di miliaran vektor. Ini membuatnya sangat hemat biaya untuk beban kerja dengan kueri yang jarang terjadi. Untuk kueri hangat, Vektor S3 dapat memberikan waktu respons serendah 100 md, menguntungkan beban kerja dengan pola kueri berulang atau sering. Ketika hasil query dikembalikan di beberapa halaman, halaman berikutnya dapat diakses segera.

Untuk melakukan kueri kesamaan untuk penyematan vektor Anda, beberapa faktor dapat memengaruhi kinerja ingatan rata-rata, termasuk model penyematan vektor, ukuran kumpulan data vektor (jumlah vektor dan dimensi), dan distribusi kueri. Vektor S3 memberikan 90% + penarikan rata-rata untuk sebagian besar kumpulan data. Rata-rata recall mengukur kualitas hasil query. Ingat rata-rata 90% berarti bahwa respons berisi 90% vektor terdekat aktual (kebenaran dasar) yang disimpan dalam indeks vektor relatif terhadap vektor kueri. Namun, karena kinerja aktual dapat bervariasi tergantung pada kasus penggunaan spesifik Anda, sebaiknya lakukan pengujian Anda sendiri dengan data dan kueri yang representatif untuk memvalidasi bahwa Vektor S3 memenuhi persyaratan penarikan Anda.

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)) # Paginated query with manual nextToken handling. query_params = dict( vectorBucketName="media-embeddings", indexName="movies", queryVector={"float32": embedding}, topK=500, returnDistance=True, returnMetadata=True, ) response = s3vectors.query_vectors(**query_params) for vector in response["vectors"]: print(vector) while response.get("nextToken") is not None: response = s3vectors.query_vectors(**query_params, nextToken=response["nextToken"]) for vector in response["vectors"]: print(vector) # Use the built-in paginator to automatically iterate through all pages. paginator = s3vectors.get_paginator("query_vectors") for page in paginator.paginate( vectorBucketName="media-embeddings", indexName="movies", queryVector={"float32": embedding}, topK=500, returnDistance=True, returnMetadata=True, ): for vector in page["vectors"]: print(vector)