Bekerja dengan koleksi pencarian vektor - OpenSearch Layanan Amazon

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) di OpenSearch, Anda mendapatkan fungsionalitas yang sama dengan kesederhanaan lingkungan tanpa server. Engine mendukung operasi OpenSearch API K-nn. Dengan operasi ini, Anda dapat memanfaatkan pencarian teks lengkap, pemfilteran lanjutan, agregasi, kueri geospasial, kueri bersarang untuk pengambilan data yang lebih cepat, dan hasil pencarian yang disempurnakan.

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 OpenSearch Serverless

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
  1. Buka konsol OpenSearch Layanan Amazon di https://console.aws.amazon.com/aos/home.

  2. Pilih Koleksi di panel navigasi kiri dan pilih Buat koleksi.

  3. Beri nama perumahan koleksi.

  4. Untuk jenis koleksi, pilih Pencarian vektor. Untuk informasi selengkapnya, lihat Memilih jenis koleksi.

  5. 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.

  6. 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.

  7. Pilih Berikutnya.

  8. Tinjau pengaturan koleksi Anda dan pilih Kirim. Tunggu beberapa menit hingga status koleksi menjadiActive.

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 HTTP seperti Postman atau awscurl. Tutorial ini menggunakan Dev Tools.

Untuk mengindeks dan mencari data dalam koleksi film
  1. 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" } } } }
  2. 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" }
  3. 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
  1. Kembali ke konsol OpenSearch Layanan Amazon.

  2. Pilih Koleksi di panel navigasi kiri dan pilih koleksi properti.

  3. 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 filter.

Untuk mengindeks dan mencari data dalam koleksi film
  1. 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" } } } }
  2. 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" }
  3. 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 untuk meningkatkan OpenSearch Compute Units (OCU) maksimum untuk akun Anda.

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 .