

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
<a name="s3-vectors-index-create"></a>

Anda dapat menambahkan vektor ke indeks vektor dengan operasi [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html)API. 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 tulis dan mengoptimalkan biaya, Anda disarankan untuk memasukkan vektor dalam batch besar, hingga ukuran batch maksimum untuk. `PutVectors` Namun, untuk beban kerja yang perlu menggunakan batch yang lebih kecil - seperti saat live, data vektor yang masuk harus segera dicari - Anda dapat mencapai throughput penulisan yang lebih tinggi dengan menggunakan jumlah `PutVectors` permintaan bersamaan yang lebih tinggi, hingga batas maksimum yang diizinkan per detik. Untuk informasi selengkapnya tentang ukuran batch maksimum`PutVectors`, yang merupakan batas vektor per panggilan `PutVectors` API, serta batas maksimum dan vektor per detik, lihat. [Keterbatasan dan pembatasan](s3-vectors-limitations.md) 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](s3-vectors-limitations.md) 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 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API 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`](s3-vectors-cli.md)

**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](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html), [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html)dan operasi mengembalikan nilainya. [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html)`float32` 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.

## Menggunakan AWS SDKs
<a name="s3-vectors-create-sdk"></a>

------
#### [ 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"}
        }
    ]
)
```

------