informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Penulis: dari ElasticJeff Vestal, Jack Conradson
Di 8.14, Elastic memperkenalkan fitur pencarian baru yang disebut "retriever" di Elasticsearch. Baca terus untuk mengetahui tentang kesederhanaan dan efisiensinya, serta bagaimana keduanya dapat meningkatkan operasi pencarian Anda.
Retriever adalah lapisan abstraksi baru yang ditambahkan ke API pencarian di Elasticsearch. Mereka menyediakan fasilitas untuk mengonfigurasi jalur pengambilan multi-tahap dalam satu panggilan API _search. Arsitektur ini menyederhanakan logika pencarian dalam aplikasi Anda dengan menghilangkan kebutuhan beberapa panggilan API Elasticsearch untuk kueri pencarian yang kompleks. Hal ini juga mengurangi kebutuhan logika sisi klien, yang sering kali memerlukan penggabungan hasil dari beberapa kueri.
Tiga jenis retriever disertakan dalam rilis awal. Setiap retriever dirancang untuk tujuan tertentu, dan jika digabungkan, mereka dapat melakukan pencarian yang kompleks.
Tipe yang tersedia antara lain:
Untuk kueri tradisional, kueri tersebut adalah bagian dari keseluruhan panggilan API penelusuran. Perbedaan antara Retriever adalah bahwa mereka dirancang sebagai entitas independen yang dapat digunakan secara individual atau mudah digabungkan. Pendekatan modular ini memberikan fleksibilitas yang lebih besar ketika merancang strategi pencarian.
Retriever dirancang sebagai bagian dari "pohon retriever", sebuah struktur hierarki yang mendefinisikan operasi pencarian dengan memperjelas urutan dan logikanya. Struktur ini membuat penelusuran kompleks lebih mudah dikelola, lebih mudah dipahami oleh pengembang, dan memungkinkan fitur baru ditambahkan dengan mudah di masa mendatang.
Retriever mendukung komposisi, memungkinkan Anda membangun saluran dan mengintegrasikan strategi pengambilan yang berbeda. Hal ini memungkinkan pengujian kombinasi pengambilan yang berbeda dengan mudah. Mereka juga memberikan kontrol lebih besar terhadap cara dokumen dinilai dan disaring. Misalnya, Anda dapat menentukan ambang skor minimum, menerapkan filter kompleks tanpa memengaruhi skor, dan menggunakan parameter seperti penghentian_setelah untuk pengoptimalan kinerja.
Mempertahankan kompatibilitas dengan elemen kueri lama, secara otomatis mengubahnya menjadi pengambil yang sesuai.
Mari kita lihat beberapa contoh penggunaan retriever. Kami menggunakan kumpulan data sampel IMDB.
Anda dapat menjalankan yang disertakan buku catatan jupyter, impor data IMDB ke proyek pencarian tanpa server Anda, dan jalankan sendiri contoh berikut!
Pengaturan tingkat tinggi adalah:
- GET /imdb_movies/_search?pretty
- {
- "retriever": {
- "standard": {
- "query": {
- "term": {
- "overview": "clueless"
- }
- }
- }
- },
- "size": 3,
- "fields": [
- "names",
- "overview"
- ],
- "_source": false
- }
- GET /imdb_movies/_search?pretty
- {
- "retriever": {
- "knn": {
- "field": "overview_dense",
- "query_vector_builder": {
- "text_embedding": {
- "model_id": ".multilingual-e5-small_linux-x86_64",
- "model_text": "clueless slackers"
- }
- },
- "k": 5,
- "num_candidates": 5
- }
- },
- "size": 3,
- "fields": [
- "names",
- "overview"
- ],
- "_source": false
- }
- GET /imdb_movies/_search?pretty
- {
- "retriever": {
- "standard": {
- "query": {
- "text_expansion": {
- "overview_sparse": {
- "model_id": ".elser_model_2_linux-x86_64",
- "model_text": "clueless slackers"
- }
- }
- }
- }
- },
- "size": 3,
- "fields": [
- "names",
- "overview"
- ],
- "_source": false
- }
- GET /imdb_movies/_search?pretty
- {
- "retriever": {
- "rrf": {
- "retrievers": [
- {
- "standard": {
- "query": {
- "term": {
- "overview": "clueless slackers"
- }
- }
- }
- },
- {
- "knn": {
- "field": "overview_dense",
- "query_vector_builder": {
- "text_embedding": {
- "model_id": ".multilingual-e5-small_linux-x86_64",
- "model_text": "clueless slackers"
- }
- },
- "k": 5,
- "num_candidates": 5
- }
- },
- {
- "standard": {
- "query": {
- "text_expansion": {
- "overview_sparse": {
- "model_id": ".elser_model_2_linux-x86_64",
- "model_text": "clueless slackers"
- }
- }
- }
- }
- }
- ],
- "rank_window_size": 5,
- "rank_constant": 1
- }
- },
- "size": 3,
- "fields": [
- "names",
- "overview"
- ],
- "_source": false
- }
Retriever hadir dengan batasan tertentu yang harus diwaspadai pengguna. Misalnya, penggunaan compound retriever hanya memperbolehkan elemen untuk ditanyakan. Hal ini memaksa pemisahan kekhawatiran yang lebih jelas dan mencegah kompleksitas yang timbul akibat konfigurasi yang berlebihan atau independen. Selain itu, pengambilan anak tidak boleh menggunakan elemen yang membatasi pengambilan gabungan sebagai bagian dari pohon pengambilan.
Pembatasan ini meningkatkan performa dan komposisi bahkan saat menggunakan strategi pengambilan yang rumit.
Retriever awalnya dirilis sebagai pratinjau teknologi, sehingga API-nya dapat berubah
Pencari mewakili langkah maju yang penting dalam fungsionalitas pencarian Elasticsearch dan kemudahan penggunaan. Mereka dapat dirangkai dengan cara pipeline, dengan masing-masing retriever menerapkan logikanya dan meneruskan hasilnya ke item berikutnya dalam rantai. Retriever dapat meningkatkan pengalaman pencarian secara signifikan dengan memungkinkan operasi pencarian yang lebih terstruktur, fleksibel, dan efisien.
Sumber daya berikut memberikan detail lebih lanjut tentang retriever.
Coba sendiri kode di atas!Anda bisa larimenyertai buku catatan jupyter, impor data IMDB ke proyek Elastic Serverless Search!
Siap mencobanya sendiri?awalUji coba gratis。
Ingin mendapatkan sertifikasi Elastic?Cari tahu lain kaliPelatihan insinyur ElasticsearchKapan memulainya!
asli:Elasticsearch retriever - Cara menggunakan search retriever di Elasticsearch — Elastic Search Labs