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

catatan

Vektor Amazon S3 sedang dalam rilis pratinjau untuk Amazon Simple Storage Service dan dapat berubah sewaktu-waktu.

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.

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 end-to-end RAG 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 latensi kueri sub-detik. Vektor S3 menggunakan throughput elastis Amazon S3 untuk menangani pencarian di jutaan vektor dan sangat ideal untuk beban kerja di mana kueri lebih jarang. 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, kami sarankan untuk melakukan 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))