Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bekerja dengan koleksi pencarian vektor
Jenis koleksi pencarian vektor di OpenSearch Tanpa Server memberikan kemampuan pencarian kesamaan yang dapat diskalakan dan berkinerja tinggi. Ini memudahkan Anda untuk membangun pengalaman pencarian tambahan pembelajaran mesin (ML) modern dan aplikasi kecerdasan buatan (AI) generatif tanpa harus mengelola infrastruktur basis data vektor yang mendasarinya.
Kasus penggunaan untuk koleksi pencarian vektor meliputi pencarian gambar, pencarian dokumen, pengambilan musik, rekomendasi produk, pencarian video, pencarian berbasis lokasi, deteksi penipuan, dan deteksi anomali.
Karena mesin vektor untuk OpenSearch Tanpa Server ditenagai oleh fitur pencarian k-nearest neighbor (k-NN)
Mesin vektor menyediakan metrik jarak seperti jarak Euclidean, kesamaan kosinus, dan kesamaan produk titik, dan dapat menampung 16.000 dimensi. Anda dapat menyimpan bidang dengan berbagai tipe data untuk metadata, seperti angka, Boolean, tanggal, kata kunci, dan geopoint. Anda juga dapat menyimpan bidang dengan teks untuk informasi deskriptif untuk menambahkan lebih banyak konteks ke vektor yang disimpan. Colocating tipe data mengurangi kompleksitas, meningkatkan pemeliharaan, dan menghindari duplikasi data, tantangan kompatibilitas versi, dan masalah lisensi.
Memulai dengan koleksi pencarian vektor
Dalam tutorial ini, Anda menyelesaikan langkah-langkah berikut untuk menyimpan, mencari, dan mengambil embeddings vektor secara real time:
Langkah 1: Konfigurasikan izin
Untuk menyelesaikan tutorial ini (dan menggunakan OpenSearch Tanpa Server secara umum), Anda harus memiliki izin AWS Identity and Access Management (IAM) yang benar. Dalam tutorial ini, Anda membuat koleksi, mengunggah dan mencari data, dan kemudian menghapus koleksi.
Pengguna atau peran Anda harus memiliki kebijakan berbasis identitas terlampir dengan izin minimum berikut:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:CreateCollection", "aoss:ListCollections", "aoss:BatchGetCollection", "aoss:DeleteCollection", "aoss:CreateAccessPolicy", "aoss:ListAccessPolicies", "aoss:UpdateAccessPolicy", "aoss:CreateSecurityPolicy", "iam:ListUsers", "iam:ListRoles" ], "Effect": "Allow", "Resource": "*" } ] }
Untuk informasi selengkapnya tentang izin IAM OpenSearch Tanpa Server, lihat. Identity and Access Management untuk Amazon Tanpa OpenSearch Server
Langkah 2: Buat koleksi
Koleksi adalah sekelompok OpenSearch indeks yang bekerja sama untuk mendukung beban kerja atau kasus penggunaan tertentu.
Untuk membuat koleksi OpenSearch Tanpa Server
-
Buka konsol OpenSearch Layanan Amazon di https://console.aws.amazon.com/aos/home
. -
Pilih Koleksi di panel navigasi kiri dan pilih Buat koleksi.
-
Beri nama perumahan koleksi.
-
Untuk jenis koleksi, pilih Pencarian vektor. Untuk informasi selengkapnya, lihat Memilih jenis koleksi.
-
Di bawah Jenis Deployment, hapus Aktifkan redundansi (replika aktif). Ini membuat koleksi dalam mode pengembangan atau pengujian, dan mengurangi jumlah Unit OpenSearch Komputasi (OCU) dalam koleksi Anda menjadi dua. Jika Anda ingin membuat lingkungan produksi dalam tutorial ini, biarkan kotak centang dipilih.
-
Di bawah Keamanan, pilih Mudah buat untuk merampingkan konfigurasi keamanan Anda. Semua data dalam mesin vektor dienkripsi dalam perjalanan dan diam secara default. Mesin vektor mendukung izin IAM berbutir halus sehingga Anda dapat menentukan siapa yang dapat membuat, memperbarui, dan menghapus enkripsi, jaringan, koleksi, dan indeks.
-
Pilih Berikutnya.
-
Tinjau pengaturan koleksi Anda dan pilih Kirim. Tunggu beberapa menit hingga status koleksi menjadi
Active
.
Langkah 3: Unggah dan cari data
Indeks adalah kumpulan dokumen dengan skema data umum yang menyediakan cara bagi Anda untuk menyimpan, mencari, dan mengambil embeddings vektor Anda dan bidang lainnya. Anda dapat membuat dan mengunggah data ke indeks dalam koleksi OpenSearch Tanpa Server dengan menggunakan konsol Alat Dev di OpenSearch Dasbor, atau alat
Untuk mengindeks dan mencari data dalam koleksi film
-
Untuk membuat indeks tunggal untuk koleksi baru Anda, kirim permintaan berikut di konsol Alat Dev
. Secara default, ini menciptakan indeks dengan nmslib
mesin dan jarak Euclidean.PUT housing-index { "settings": { "index.knn": true }, "mappings": { "properties": { "housing-vector": { "type": "knn_vector", "dimension": 3 }, "title": { "type": "text" }, "price": { "type": "long" }, "location": { "type": "geo_point" } } } }
-
Untuk mengindeks satu dokumen ke indeks perumahan, kirim permintaan berikut:
POST housing-index/_doc { "housing-vector": [ 10, 20, 30 ], "title": "2 bedroom in downtown Seattle", "price": "2800", "location": "47.71, 122.00" }
-
Untuk mencari properti yang mirip dengan yang ada di indeks Anda, kirim kueri berikut:
GET housing-index/_search { "size": 5, "query": { "knn": { "housing-vector": { "vector": [ 10, 20, 30 ], "k": 5 } } } }
Langkah 4: Hapus koleksi
Karena koleksi perumahan adalah untuk tujuan pengujian, pastikan untuk menghapusnya ketika Anda selesai bereksperimen.
Untuk menghapus koleksi OpenSearch Tanpa Server
-
Kembali ke konsol OpenSearch Layanan Amazon.
-
Pilih Koleksi di panel navigasi kiri dan pilih koleksi properti.
-
Pilih Hapus dan konfirmasikan penghapusan.
Pencarian yang difilter
Anda dapat menggunakan filter untuk menyempurnakan hasil pencarian semantik Anda. Untuk membuat indeks dan melakukan pencarian yang difilter pada dokumen Anda, ganti Upload dan cari data di tutorial sebelumnya dengan instruksi berikut. Langkah-langkah lainnya tetap sama. Untuk informasi selengkapnya tentang filter, lihat Penelusuran K-nn dengan
Untuk mengindeks dan mencari data dalam koleksi film
-
Untuk membuat indeks tunggal untuk koleksi Anda, kirim permintaan berikut di konsol Alat Dev
: PUT housing-index-filtered { "settings": { "index.knn": true }, "mappings": { "properties": { "housing-vector": { "type": "knn_vector", "dimension": 3, "method": { "engine": "faiss", "name": "hnsw" } }, "title": { "type": "text" }, "price": { "type": "long" }, "location": { "type": "geo_point" } } } }
-
Untuk mengindeks satu dokumen ke dalam housing-index-filtered, kirim permintaan berikut:
POST housing-index-filtered/_doc { "housing-vector": [ 10, 20, 30 ], "title": "2 bedroom in downtown Seattle", "price": "2800", "location": "47.71, 122.00" }
-
Untuk mencari data Anda untuk sebuah apartemen di Seattle dengan harga tertentu dan dalam jarak tertentu dari titik geografis, kirim permintaan berikut:
GET housing-index-filtered/_search { "size": 5, "query": { "knn": { "housing-vector": { "vector": [ 0.1, 0.2, 0.3 ], "k": 5, "filter": { "bool": { "must": [ { "query_string": { "query": "Find me 2 bedroom apartment in Seattle under $3000 ", "fields": [ "title" ] } }, { "range": { "price": { "lte": 3000 } } }, { "geo_distance": { "distance": "100miles", "location": { "lat": 48, "lon": 121 } } } ] } } } } } }
Beban kerja skala miliar
Koleksi pencarian vektor mendukung beban kerja dengan miliaran vektor. Anda tidak perlu mengindeks ulang untuk tujuan penskalaan karena penskalaan otomatis melakukan ini untuk Anda. Jika Anda memiliki jutaan vektor (atau lebih) dengan jumlah dimensi yang tinggi dan membutuhkan lebih dari 200 OCU, hubungi AWS Support
Batasan
Koleksi pencarian vektor memiliki batasan sebagai berikut:
-
Koleksi pencarian vektor tidak mendukung mesin Apache Lucene ANN.
-
Koleksi pencarian vektor hanya mendukung algoritma HNSW dengan Faiss dan tidak mendukung IVF dan IVFQ.
-
Koleksi pencarian vektor tidak mendukung pemanasan, statistik, dan operasi API pelatihan model.
-
Koleksi pencarian vektor tidak mendukung skrip sebaris atau tersimpan.
-
Informasi jumlah indeks tidak tersedia di koleksi AWS Management Console pencarian vektor.
-
Interval penyegaran untuk indeks pada koleksi pencarian vektor adalah 60 detik.
Langkah selanjutnya
Sekarang setelah Anda tahu cara membuat koleksi pencarian vektor dan data indeks, Anda mungkin ingin mencoba beberapa latihan berikut:
-
Gunakan klien OpenSearch Python untuk bekerja dengan koleksi pencarian vektor. Lihat tutorial ini di GitHub
. -
Gunakan klien OpenSearch Java untuk bekerja dengan koleksi pencarian vektor. Lihat tutorial ini di GitHub
. -
Siapkan LangChain untuk digunakan OpenSearch sebagai penyimpanan vektor. LangChain adalah kerangka kerja open source untuk mengembangkan aplikasi yang didukung oleh model bahasa. Untuk informasi lebih lanjut, lihat dokumentasi LangChain
.