Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Pencarian K-Nearest Neighbor (K-nN) di Layanan Amazon OpenSearch

Mode fokus
Pencarian K-Nearest Neighbor (K-nN) di Layanan Amazon OpenSearch - OpenSearch Layanan Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kependekan dari algoritma tetangga k-terdekat yang terkait, k-NN untuk Amazon OpenSearch Service memungkinkan Anda mencari titik dalam ruang vektor dan menemukan “tetangga terdekat” untuk titik-titik tersebut berdasarkan jarak Euclidean atau kesamaan kosinus. Kasus penggunaan mencakup rekomendasi (misalnya, fitur "lagu lain yang mungkin Anda sukai" di aplikasi musik), pengenalan citra, dan deteksi penipuan.

catatan

Dokumentasi ini menjelaskan kompatibilitas versi antara OpenSearch Layanan dan berbagai versi plugin K-NN, serta batasan saat menggunakan plugin dengan Layanan terkelola OpenSearch . Untuk dokumentasi komprehensif plugin K-NN, termasuk contoh sederhana dan kompleks, referensi parameter, dan API referensi lengkap untuk plugin, lihat dokumentasi open sourceOpenSearch . Dokumentasi open source juga mencakup penyetelan kinerja dan pengaturan k-NN-specific cluster.

Gunakan tabel berikut untuk menemukan versi plugin k-NN yang berjalan di domain OpenSearch Layanan Amazon Anda. Setiap versi plugin K-nn sesuai dengan versi OpenSearchatau Elasticsearch.

OpenSearch
OpenSearch versi Versi plugin k-NN Fitur penting
2.13 2.13.0.0

2.11 2.11.0.0

Ditambahkan dukungan untuk ignore_unmapped dalam kueri K-nn

2.9 2.9.0.0 Menerapkan vektor byte K-nN dan penyaringan yang efisien dengan mesin Faiss
2.7 2.7.0.0
2.5 2.5.0.0 Diperpanjang SystemIndexPlugin untuk indeks sistem model K-NN, menambahkan ekstensi file khusus Lucene ke inti HybridFS
2.3 2.3.0.0
1.3 1.3.0.0
1.2 1.2.0.0 Menambahkan dukungan untuk perpustakaan Faiss
1.1 1.1.0.0
1.0

1.0.0.0

Berganti nama REST APIs saat mendukung kompatibilitas mundur, berganti nama namespace dari ke opendistro opensearch
Elasticsearch
Versi elasticsearch Versi plugin k-NN Fitur penting
7.1

1.3.0.0

Jarak Euclidean
7.4

1.4.0.0

7.7

1.8.0.0

Kesamaan kosinus
7.8

1.9.0.0

7.9

1.11.0.0

PemanasanAPI, penilaian khusus

7.10

1.13.0.0

Jarak Hamming, jarak L1 Norm, penulisan Painless

Memulai dengan k-NN

Untuk menggunakan k-NN, Anda harus membuat indeks dengan index.knn pengaturan dan menambahkan satu atau beberapa bidang tipe data knn_vector.

PUT my-index { "settings": { "index.knn": true }, "mappings": { "properties": { "my_vector1": { "type": "knn_vector", "dimension": 2 }, "my_vector2": { "type": "knn_vector", "dimension": 4 } } } }

Tipe data knn_vector mendukung daftar tunggal hingga 10.000 float, dengan jumlah float didefinisikan oleh parameter dimension yang diperlukan. Setelah Anda membuat indeks, tambahkan beberapa data untuk itu.

POST _bulk { "index": { "_index": "my-index", "_id": "1" } } { "my_vector1": [1.5, 2.5], "price": 12.2 } { "index": { "_index": "my-index", "_id": "2" } } { "my_vector1": [2.5, 3.5], "price": 7.1 } { "index": { "_index": "my-index", "_id": "3" } } { "my_vector1": [3.5, 4.5], "price": 12.9 } { "index": { "_index": "my-index", "_id": "4" } } { "my_vector1": [5.5, 6.5], "price": 1.2 } { "index": { "_index": "my-index", "_id": "5" } } { "my_vector1": [4.5, 5.5], "price": 3.7 } { "index": { "_index": "my-index", "_id": "6" } } { "my_vector2": [1.5, 5.5, 4.5, 6.4], "price": 10.3 } { "index": { "_index": "my-index", "_id": "7" } } { "my_vector2": [2.5, 3.5, 5.6, 6.7], "price": 5.5 } { "index": { "_index": "my-index", "_id": "8" } } { "my_vector2": [4.5, 5.5, 6.7, 3.7], "price": 4.4 } { "index": { "_index": "my-index", "_id": "9" } } { "my_vector2": [1.5, 5.5, 4.5, 6.4], "price": 8.9 }

Kemudian Anda dapat mencari data dengan menggunakan tipe kueri knn.

GET my-index/_search { "size": 2, "query": { "knn": { "my_vector2": { "vector": [2, 3, 5, 6], "k": 2 } } } }

Dalam kasus ini, k adalah jumlah tetangga yang ingin Anda kueri agar kembali, tetapi Anda juga harus menyertakan opsi size. Jika tidak, Anda mendapatkan hasil k untuk setiap serpihan (dan setiap segmen) dan bukan hasil k untuk seluruh kueri. k-NN mendukung nilai k maksimal sebesar 10.000.

Jika Anda mencampur kueri knn dengan klausa lain, Anda mungkin menerima lebih sedikit dari hasil k. Dalam contoh ini, klausa post_filter mengurangi jumlah hasil dari 2 ke 1.

GET my-index/_search { "size": 2, "query": { "knn": { "my_vector2": { "vector": [2, 3, 5, 6], "k": 2 } } }, "post_filter": { "range": { "price": { "gte": 6, "lte": 10 } } } }

Jika Anda perlu menangani sejumlah besar kueri sambil mempertahankan kinerja optimal, Anda dapat menggunakan _msearchAPIuntuk membuat pencarian massal dengan JSON dan mengirim satu permintaan untuk melakukan beberapa pencarian:

GET _msearch { "index": "my-index"} { "query": { "knn": {"my_vector2":{"vector": [2, 3, 5, 6],"k":2 }} } } { "index": "my-index", "search_type": "dfs_query_then_fetch"} { "query": { "knn": {"my_vector1":{"vector": [2, 3],"k":2 }} } }

Video berikut menunjukkan cara mengatur pencarian vektor massal untuk kueri K-NN.

Perbedaan, penyetelan, dan batasan K-nn

OpenSearch memungkinkan Anda memodifikasi semua pengaturan k-NN menggunakan. _cluster/settings API Pada OpenSearch Layanan, Anda dapat mengubah semua pengaturan kecuali knn.memory.circuit_breaker.enabled danknn.circuit_breaker.triggered. Statistik k-NN disertakan sebagai metrik Amazon CloudWatch .

Secara khusus, periksa KNNGraphMemoryUsage metrik pada setiap node data terhadap knn.memory.circuit_breaker.limit statistik dan yang tersedia RAM untuk jenis instance. OpenSearch Layanan menggunakan setengah dari instance RAM untuk heap Java (hingga ukuran heap 32 GiB). Secara default, K-nN menggunakan hingga 50% dari separuh sisanya, sehingga tipe instance dengan 32 GiB RAM dapat menampung 8 GiB grafik (32 * 0,5 * 0,5). Performa dapat dirugikan jika penggunaan memori grafik melebihi nilai ini.

Anda dapat memigrasikan indeks K-NN yang dibuat pada versi 2.x atau yang lebih baru ke UltraWarmatau penyimpanan dingin pada domain dengan versi 2.17 atau yang lebih baru.

Clear cache api dan warmup apis untuk indeks k-NN diblokir untuk indeks hangat. Ketika kueri pertama dimulai untuk indeks, ia mengunduh file grafik dari Amazon S3 dan memuat grafik ke memori. Demikian pula, ketika TTL kadaluarsa untuk grafik, file secara otomatis dikeluarkan dari memori.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.