Memasukkan vektor ke dalam indeks 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.

Memasukkan vektor ke dalam indeks vektor

catatan

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

Anda dapat menambahkan vektor ke indeks vektor dengan operasi PutVectorsAPI. Setiap vektor terdiri dari kunci, yang secara unik mengidentifikasi setiap vektor dalam indeks vektor. Jika Anda meletakkan vektor dengan kunci yang sudah ada di indeks, itu akan menimpa vektor yang ada sepenuhnya, yang membuat vektor sebelumnya tidak lagi dapat dicari. Untuk memaksimalkan throughput penulisan, Anda disarankan untuk memasukkan vektor dalam batch besar, hingga ukuran batch maksimum untuk. PutVectors Untuk informasi selengkapnya tentang ukuran batch maksimumPutVectors, yang merupakan batas vektor per panggilan PutVectors API, lihatKeterbatasan dan pembatasan. Selain itu, Anda dapat melampirkan metadata (misalnya, tahun, penulis, genre, lokasi) sebagai pasangan nilai kunci untuk setiap vektor. Secara default, semua kunci metadata yang dilampirkan ke vektor dapat difilter dan dapat digunakan sebagai filter dalam kueri kesamaan. Hanya kunci metadata yang ditetapkan sebagai tidak dapat difilter selama pembuatan indeks vektor yang dikecualikan dari pemfilteran. Indeks vektor S3 mendukung string, angka, boolean, dan jenis daftar metadata. Untuk informasi lebih lanjut tentang batas ukuran metadata total per vektor dan batas ukuran metadata yang dapat difilter per vektor, lihat. Keterbatasan dan pembatasan Jika ukuran metadata melebihi batas ini, operasi PutVectors API akan mengembalikan kesalahan. 400 Bad Request

Sebelum menambahkan data vektor ke indeks vektor Anda dengan operasi PutVectors API, Anda perlu mengonversi data mentah Anda menjadi embeddings vektor, yang merupakan representasi numerik dari konten Anda sebagai array angka floating-point. Penyematan vektor menangkap makna semantik konten Anda, memungkinkan pencarian kesamaan setelah disimpan dalam indeks vektor Anda melalui operasi. PutVectors Anda dapat menghasilkan penyematan vektor menggunakan berbagai metode tergantung pada tipe data dan kasus penggunaan Anda. Metode ini termasuk menggunakan kerangka kerja pembelajaran mesin, pustaka penyematan khusus, atau AWS layanan seperti Amazon Bedrock. Misalnya, jika Anda menggunakan Amazon Bedrock, Anda dapat membuat penyematan dengan operasi InvokeModelAPI dan model penyematan pilihan Anda.

Selain itu, Pangkalan Pengetahuan Amazon Bedrock 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.

Selain itu, alat open-source Amazon S3 Vectors Embed CLI menyediakan cara yang disederhanakan untuk menghasilkan embeddings dan melakukan pencarian semantik dari baris perintah. Untuk informasi selengkapnya tentang alat sumber terbuka ini yang mengotomatiskan pembuatan penyematan vektor dengan model dasar Amazon Bedrock dan operasi penelusuran semantik dalam indeks vektor S3 Anda, lihat. Membuat embeddings vektor dan melakukan pencarian semantik dengan s3vectors-embed-cli

catatan

Saat memasukkan data vektor ke dalam indeks vektor Anda, Anda harus memberikan data vektor sebagai nilai float32 (floating point 32-bit). Jika Anda meneruskan nilai presisi lebih tinggi ke AWS SDK, Vektor S3 mengonversi nilai menjadi floating point 32-bit sebelum menyimpannya, dan, GetVectors, ListVectorsdan operasi mengembalikan nilainya. QueryVectorsfloat32 Berbeda AWS SDKs mungkin memiliki tipe numerik default yang berbeda, jadi pastikan vektor Anda diformat dengan benar sebagai float32 nilai terlepas dari SDK yang Anda gunakan. Misalnya, dengan Python, gunakan numpy.float32 atau berikan nilai Anda secara eksplisit.

SDK for Python
# Populate a vector index with embeddings 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") # Texts to convert to embeddings. texts = [ "Star Wars: A farm boy joins rebels to fight an evil empire in space", "Jurassic Park: Scientists create dinosaurs in a theme park that goes wrong", "Finding Nemo: A father fish searches the ocean to find his lost son" ] # Generate vector embeddings. embeddings = [] for text in texts: response = bedrock.invoke_model( modelId="amazon.titan-embed-text-v2:0", body=json.dumps({"inputText": text}) ) # Extract embedding from response. response_body = json.loads(response["body"].read()) embeddings.append(response_body["embedding"]) # Write embeddings into vector index with metadata. s3vectors.put_vectors( vectorBucketName="media-embeddings", indexName="movies", vectors=[ { "key": "Star Wars", "data": {"float32": embeddings[0]}, "metadata": {"source_text": texts[0], "genre":"scifi"} }, { "key": "Jurassic Park", "data": {"float32": embeddings[1]}, "metadata": {"source_text": texts[1], "genre":"scifi"} }, { "key": "Finding Nemo", "data": {"float32": embeddings[2]}, "metadata": {"source_text": texts[2], "genre":"family"} } ] )