Amazon Kendra Peringkat Cerdas untuk dikelola sendiri OpenSearch - Amazon Kendra

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

Amazon Kendra Peringkat Cerdas untuk dikelola sendiri OpenSearch

Anda dapat memanfaatkan Amazon Kendra kemampuan pencarian semantik untuk meningkatkan hasil pencarian dari OpenSearch, layanan pencarian sumber terbuka yang dikelola sendiri berdasarkan Lisensi Apache 2.0. Plugin Amazon Kendra Intelligent Ranking secara semantik memberi peringkat ulang hasil menggunakan OpenSearch. Amazon Kendra Ini dilakukan dengan memahami arti dan konteks kueri penelusuran menggunakan bidang tertentu, seperti badan dokumen atau judul, dari hasil OpenSearch pencarian default.

Ambil, misalnya, kueri ini: “alamat utama utama”. Karena 'alamat' memiliki beberapa arti, Amazon Kendra dapat menyimpulkan makna di balik kueri untuk mengembalikan informasi yang relevan selaras dengan makna yang dimaksudkan. Dalam konteks ini, ini adalah pidato utama konferensi. Layanan pencarian yang lebih sederhana mungkin tidak memperhitungkan maksud dan mungkin dapat mengembalikan hasil untuk alamat jalan di Main Street, misalnya.

Plugin Intelligent Ranking untuk OpenSearch tersedia untuk OpenSearch (dikelola sendiri) versi 2.4.0 dan yang lebih baru. Anda dapat menginstal plugin menggunakan skrip Bash start cepat untuk membangun gambar Docker baru OpenSearch dengan plugin Intelligent Ranking disertakan. Lihat Menyiapkan plugin pencarian cerdas —ini adalah contoh pengaturan untuk membuat Anda bangun dan berjalan dengan cepat.

Cara kerja plugin pencarian cerdas

Proses keseluruhan plugin Intelligent Ranking untuk OpenSearch (dikelola sendiri) adalah sebagai berikut:

  1. OpenSearch Pengguna mengeluarkan kueri, dan OpenSearch memberikan respons kueri atau daftar dokumen yang relevan dengan kueri.

  2. Plugin Intelligent Ranking mengambil respons kueri dan mengekstrak informasi dari dokumen.

  3. Plugin Intelligent Ranking membuat panggilan ke API Rescore Amazon Kendra Intelligent Ranking.

  4. RescoreAPI mengambil informasi yang diekstraksi dari dokumen dan secara semantik memberi peringkat ulang hasil pencarian.

  5. RescoreAPI mengirimkan hasil pencarian peringkat ulang kembali ke plugin. Plugin mengatur ulang hasil pencarian dalam respons OpenSearch pencarian untuk mencerminkan peringkat semantik baru.

Plugin Intelligent Ranking memberi peringkat ulang hasil menggunakan bidang “body” dan “title”. Bidang plugin ini dapat dipetakan ke bidang dalam OpenSearch indeks Anda yang paling sesuai dengan definisi badan dan judul dokumen. Misalnya, jika indeks Anda berisi bab-ab buku dengan bidang seperti “chapter_heading” dan “chapter_contents”, Anda dapat memetakan yang pertama ke “judul” dan yang terakhir ke “badan” untuk mendapatkan hasil terbaik.

Menyiapkan plugin pencarian cerdas

Berikut ini menguraikan cara mengatur dengan cepat OpenSearch (dikelola sendiri) dengan plugin Intelligent Ranking.

Menyiapkan OpenSearch (dikelola sendiri) dengan plugin Intelligent Ranking (pengaturan cepat)

Jika Anda sudah menggunakan gambar Dockeropensearch:2.4.0, Anda dapat menggunakan Dockerfile ini untuk membangun gambar baru OpenSearch 2.4.0 dengan plugin Intelligent Ranking. Anda menyertakan wadah untuk gambar baru di file docker-compose.ymlmu atau file opensearch.ymlmu. Anda juga menyertakan ID rencana eksekusi skor ulang yang dihasilkan dari pembuatan rencana eksekusi skor ulang, bersama dengan informasi wilayah dan titik akhir Anda—lihat langkah 2 untuk membuat rencana eksekusi skor ulang.

Jika sebelumnya Anda telah mengunduh versi gambar opensearch Docker yang lebih tua dari 2.4.0, Anda harus menggunakan gambar Docker opensearch:2.4.0 atau yang lebih baru dan membuat gambar baru dengan plugin Intelligent Ranking disertakan.

  1. Unduh dan instal Docker Desktop untuk sistem operasi Anda. Docker Desktop mencakup Docker Compose dan Docker Engine. Disarankan agar Anda memeriksa apakah komputer Anda memenuhi persyaratan sistem yang disebutkan dalam detail instalasi Docker.

    Anda juga dapat meningkatkan persyaratan penggunaan memori Anda dalam pengaturan Desktop Docker Anda. Anda bertanggung jawab atas persyaratan penggunaan Docker di luar batas penggunaan yang tersedia secara gratis untuk layanan Docker. Lihat langganan Docker.

    Periksa status Docker Desktop “berjalan”.

  2. Ketentuan Peringkat Amazon Kendra Cerdas dan persyaratan kapasitas Anda. Setelah Anda memberikan Amazon Kendra Intelligent Ranking, Anda akan dikenakan biaya per jam berdasarkan unit kapasitas yang Anda tetapkan. Lihat informasi tingkat dan harga gratis.

    Anda menggunakan CreateRescoreExecutionPlanAPI untuk menyediakanRescore API. Jika Anda tidak memerlukan unit kapasitas lebih dari satu unit default, jangan tambahkan lebih banyak unit dan berikan hanya nama untuk rencana eksekusi skor ulang Anda. Anda juga dapat memperbarui persyaratan kapasitas Anda dengan menggunakan UpdateRescoreExecutionPlanAPI. Untuk informasi selengkapnya, lihat secara semantik memberi peringkat hasil layanan penelusuran.

    Secara opsional, Anda dapat pergi ke langkah 3 untuk membuat rencana eksekusi skor ulang default ketika Anda menjalankan skrip Bash mulai cepat.

    Catatan untuk langkah 4, skor ulang ID rencana eksekusi yang disertakan dalam respons.

    CLI
    aws kendra-ranking create-rescore-execution-plan \ --name MyRescoreExecutionPlan \ --capacity-units '{"RescoreCapacityUnits":<integer number of additional capacity units>}' Response: { "Id": "<rescore execution plan ID>", "Arn": "arn:aws:kendra-ranking:<region>:<account-id>:rescore-execution-plan/<rescore-execution-plan-id>" }
    Python
    import boto3 from botocore.exceptions import ClientError import pprint import time kendra_ranking = boto3.client("kendra-ranking") print("Create a rescore execution plan.") # Provide a name for the rescore execution plan name = "MyRescoreExecutionPlan" # Set your required additional capacity units # Don't set capacity units if you don't require more than 1 unit given by default capacity_units = 1 try: rescore_execution_plan_response = kendra_ranking.create_rescore_execution_plan( Name = name, CapacityUnits = {"RescoreCapacityUnits":capacity_units} ) pprint.pprint(rescore_execution_plan_response) rescore_execution_plan_id = rescore_execution_plan_response["Id"] print("Wait for Amazon Kendra to create the rescore execution plan.") while True: # Get the details of the rescore execution plan, such as the status rescore_execution_plan_description = kendra_ranking.describe_rescore_execution_plan( Id = rescore_execution_plan_id ) # When status is not CREATING quit. status = rescore_execution_plan_description["Status"] print(" Creating rescore execution plan. Status: "+status) time.sleep(60) if status != "CREATING": break except ClientError as e: print("%s" % e) print("Program ends.")
  3. Unduh skrip Bash mulai cepat dari GitHub untuk versi Anda OpenSearch dengan memilih cabang versi dari dropdown cabang utama.

    Skrip ini menggunakan gambar Docker untuk OpenSearch dan OpenSearch Dasbor menggunakan versi yang Anda pilih di GitHub repositori skrip. Ini mengunduh file zip untuk plugin Intelligent Ranking, dan menghasilkan Dockerfile untuk membangun gambar Docker baru OpenSearch yang menyertakan plugin. Ini juga membuat file docker-compose.yl yang menyertakan wadah untuk OpenSearch plugin Intelligent Ranking dan Dasbor. OpenSearch Skrip menambahkan ID rencana eksekusi skor ulang Anda, informasi wilayah, dan titik akhir (menggunakan wilayah) ke file docker-compose.yl. Skrip kemudian berjalan docker-compose up untuk memulai wadah OpenSearch dengan Intelligent Ranking disertakan dan OpenSearch Dashboards. Untuk menghentikan wadah tanpa melepasnya, jalankandocker-compose stop. Untuk menghapus wadah, jalankandocker-compose down.

  4. Buka terminal Anda dan di direktori skrip Bash, jalankan perintah berikut.

    bash search_processing_kendra_quickstart.sh -p <execution-plan-id> -r <region>

    Saat menjalankan perintah ini, Anda memberikan ID rencana eksekusi skor ulang yang Anda catat di langkah 2 saat Anda menyediakan Amazon Kendra Intelligent Ranking, bersama dengan informasi wilayah Anda. Secara opsional, Anda dapat menyediakan Amazon Kendra Intelligent Ranking dengan menggunakan --create-execution-plan opsi. Ini membuat rencana eksekusi skor ulang dengan nama default dan kapasitas default.

    Untuk tidak kehilangan indeks Anda saat wadah sementara default dihapus, indeks Anda dapat bertahan di seluruh eksekusi dengan memberikan nama volume data menggunakan opsi. --volume-name Jika sebelumnya Anda membuat indeks, Anda dapat menentukan volume di file docker-compose.yl atau opensearch.yml. Anda. Agar volume Anda tetap utuh, jangan laridocker-compose down -v.

    Skrip Bash start cepat mengonfigurasi AWS kredensyal Anda di OpenSearch keystore untuk terhubung ke Intelligent Ranking. Amazon Kendra Untuk memberikan AWS kredensyal Anda ke skrip, gunakan --profile opsi untuk menentukan profil. AWS Jika --profile opsi tidak ditentukan, maka skrip Bash start cepat mencoba membaca AWS kredensyal (kunci akses/rahasia, token sesi opsional) dari variabel lingkungan, dan kemudian dari profil default. AWS Jika --profile opsi tidak ditentukan dan tidak ada kredensyal yang ditemukan, skrip tidak akan meneruskan kredensyal ke keystore. OpenSearch Jika tidak ada kredensyal yang ditentukan di OpenSearch keystore, plugin masih memeriksa kredensyal di Rantai Penyedia Kredensyal Default, termasuk kredensyal Amazon ECS kontainer atau kredensyal profil instance yang dikirimkan melalui layanan metadata. Amazon EC2

    Pastikan Anda telah membuat IAM peran dengan izin yang diperlukan untuk memanggil Amazon Kendra Intelligent Ranking. Berikut ini adalah contoh IAM kebijakan untuk memberikan izin untuk menggunakan Rescore API untuk rencana eksekusi skor ulang tertentu:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kendra-ranking:Rescore", "Resource": "arn:aws:kendra-ranking:${Region}:${Account}:rescore-execution-plan/${RescoreExecutionPlanId}" } ] }

Contoh docker-compose.yl

Contoh file docker-compose.yl menggunakan OpenSearch 2.4.0 atau yang lebih baru dengan plugin Intelligent Ranking dan Dashboards 2.4.0 atau yang lebih baru. OpenSearch

version: '3' networks: opensearch-net: volumes: <volume-name>: services: opensearch-node: image: <Docker image tag name of OpenSearch with Intelligent Ranking plugin> container_name: opensearch-node environment: - cluster.name=opensearch-cluster - node.name=opensearch-node - discovery.type=single-node - kendra_intelligent_ranking.service.endpoint=https://kendra-ranking.<region>.api.aws - kendra_intelligent_ranking.service.region=<region> - kendra_intelligent_ranking.service.execution_plan_id=<rescore-execution-plan-id> ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 ports: - 9200:9200 - 9600:9600 networks: - opensearch-net volumes: <docker-volume-name>:/usr/share/opensearch/data opensearch-dashboard: image: opensearchproject/opensearch-dashboards:<your-version> container_name: opensearch-dashboards ports: - 5601:5601 environment: OPENSEARCH_HOSTS: '["https://opensearch-node:9200"]' networks: - opensearch-net

Contoh Dockerfile dan membangun gambar

Contoh Dockerfile untuk menggunakan OpenSearch 2.4.0 atau yang lebih baru dengan plugin Intelligent Ranking.

FROM opensearchproject/opensearch:<your-version> RUN /usr/share/opensearch/bin/opensearch-plugin install --batch https://github.com/opensearch-project/search-processor/releases/download/<your-version>/search-processor.zip

Membangun gambar Docker OpenSearch dengan plugin Intelligent Ranking.

docker build --tag=<Docker image tag name of OpenSearch with Intelligent Ranking plugin>

Berinteraksi dengan plugin pencarian cerdas

Setelah Anda mengatur OpenSearch (dikelola sendiri) dengan plugin Intelligent Ranking, Anda dapat berinteraksi dengan plugin menggunakan perintah curl atau pustaka OpenSearch klien. Kredensyal default untuk mengakses OpenSearch dengan plugin Intelligent Ranking adalah nama pengguna 'admin' dan kata sandi 'admin'.

Untuk menerapkan pengaturan plugin Intelligent Ranking ke OpenSearch indeks:

Curl
curl -XPUT "https://localhost:9200/<your-docs-index>/_settings" -u 'admin:admin' --insecure -H 'Content-Type: application/json' -d' { "index": { "plugin" : { "searchrelevance" : { "result_transformer" : { "kendra_intelligent_ranking": { "order": 1, "properties": { "title_field": "title_field_name_here", "body_field": "body_field_name_here" } } } } } } } '
Python
pip install opensearch-py from opensearchpy import OpenSearch host = 'localhost' port = 9200 auth = ('admin', 'admin') client = OpenSearch( hosts = [{'host': host, 'port': port}], http_compress = True, # enables gzip compression for request bodies http_auth = auth, # client_cert = client_cert_path, # client_key = client_key_path, use_ssl = True, verify_certs = False, ssl_assert_hostname = False, ssl_show_warn = False, ca_certs = ca_certs_path ) setting_body = { "index": { "plugin" : { "searchrelevance" : { "result_transformer" : { "kendra_intelligent_ranking": { "order": 1, "properties": { "title_field": "title_field_name_here", "body_field": "body_field_name_here" } } } } } } } response = client.indices.put_settings(index_name, body=setting_body)

Anda harus menyertakan nama bidang teks utama yang ingin Anda gunakan untuk menentukan peringkat ulang, seperti badan dokumen atau bidang isi dokumen. Anda juga dapat menyertakan bidang teks lainnya, seperti judul dokumen atau ringkasan dokumen.

Sekarang Anda dapat mengeluarkan kueri apa pun dan hasilnya diberi peringkat menggunakan plugin Intelligent Ranking.

Curl
curl -XGET "https://localhost:9200/<your-docs-index>/_search?pretty" -u 'admin:admin' --insecure -H 'Content-Type: application/json' -d' { "query" : { "match" : { "body_field_name_here": "intelligent systems" } } } '
Python
from opensearchpy import OpenSearch host = 'localhost' port = 9200 auth = ('admin', 'admin') client = OpenSearch( hosts = [{'host': host, 'port': port}], http_compress = True, # enables gzip compression for request bodies http_auth = auth, # client_cert = client_cert_path, # client_key = client_key_path, use_ssl = True, verify_certs = False, ssl_assert_hostname = False, ssl_show_warn = False, ca_certs = ca_certs_path ) query = { 'size': 10, "query" : { "match" : { "body_field_name_here": "intelligent systems" } } } response = client.search( body = query, index = index_name ) print('\nSearch results:') print(response)

Untuk menghapus setelan plugin Intelligent Ranking untuk OpenSearch indeks:

Curl
curl -XPUT "http://localhost:9200/<your-docs-index>/_settings" -H 'Content-Type: application/json' -d' { "index": { "plugin": { "searchrelevance": { "result_transformer": { "kendra_intelligent_ranking.*": null } } } } } '
Python
from opensearchpy import OpenSearch host = 'localhost' port = 9200 auth = ('admin', 'admin') client = OpenSearch( hosts = [{'host': host, 'port': port}], http_compress = True, # enables gzip compression for request bodies http_auth = auth, # client_cert = client_cert_path, # client_key = client_key_path, use_ssl = True, verify_certs = False, ssl_assert_hostname = False, ssl_show_warn = False, ca_certs = ca_certs_path ) setting_body = { "index": { "plugin": { "searchrelevance": { "result_transformer": { "kendra_intelligent_ranking.*": null } } } } } response = client.indices.put_settings(index_name, body=setting_body)

Untuk menguji plugin Intelligent Ranking pada kueri tertentu atau untuk menguji pada kolom tubuh dan judul tertentu:

Curl
curl -XGET "https://localhost:9200/<your-docs-index>/_search?pretty" -u 'admin:admin' --insecure -H 'Content-Type: application/json' -d' { "query": { "multi-match": { "query": "intelligent systems", "fields": ["body_field_name_here", "title_field_name_here"] } }, "size": 25, "ext": { "search_configuration": { "result_transformer": { "kendra_intelligent_ranking": { "order": 1, "properties": { "title_field": "title_field_name_here", "body_field": "body_field_name_here" } } } } } } '
Python
from opensearchpy import OpenSearch host = 'localhost' port = 9200 auth = ('admin', 'admin') client = OpenSearch( hosts = [{'host': host, 'port': port}], http_compress = True, # enables gzip compression for request bodies http_auth = auth, # client_cert = client_cert_path, # client_key = client_key_path, use_ssl = True, verify_certs = False, ssl_assert_hostname = False, ssl_show_warn = False, ca_certs = ca_certs_path ) # Index settings null for kendra_intelligent_ranking query = { "query": { "multi_match": { "query": "intelligent systems", "fields": ["body_field_name_here", "title_field_name_here"] } }, "size": 25, "ext": { "search_configuration": { "result_transformer": { "kendra_intelligent_ranking": { "order": 1, "properties": { "title_field": "title_field_name_here", "body_field": "body_field_name_here" } } } } } } response = client.search( body = query, index = index_name ) print('\nSearch results:') print(response)

Membandingkan OpenSearch hasil dengan Amazon Kendra hasil

Anda dapat membandingkan hasil peringkat side-by-side OpenSearch (dikelola sendiri) dengan Amazon Kendra hasil peringkat ulang. OpenSearch Dasbor versi 2.4.0 dan yang lebih baru menawarkan side-by-side hasil sehingga Anda dapat membandingkan bagaimana OpenSearch peringkat dokumen dengan bagaimana Amazon Kendra atau plugin memberi peringkat dokumen untuk kueri penelusuran.

Sebelum Anda dapat membandingkan hasil OpenSearch peringkat dengan hasil Amazon Kendra peringkat ulang, pastikan OpenSearch Dasbor Anda didukung oleh OpenSearch server dengan plugin Intelligent Ranking. Anda dapat mengatur ini menggunakan Docker dan skrip Bash mulai cepat. Lihat Menyiapkan plugin pencarian cerdas.

Berikut ini menguraikan cara membandingkan OpenSearch dan Amazon Kendra mencari hasil di OpenSearch Dasbor. Untuk informasi selengkapnya, lihat OpenSearchDokumentasi.

Membandingkan hasil pencarian di OpenSearch Dasbor
  1. Buka http://localhost:5601 dan masuk ke OpenSearch Dasbor. Kredensyal default adalah nama pengguna 'admin' dan kata sandi 'admin'.

  2. Pilih Cari Relevansi dari OpenSearch plugin di menu navigasi.

  3. Masukkan teks pencarian di bilah pencarian.

  4. Pilih indeks Anda untuk Query 1 dan masukkan kueri di OpenSearch Query DSL. Anda dapat menggunakan %SearchText% variabel untuk merujuk ke teks pencarian yang Anda masukkan di bilah pencarian. Untuk contoh kueri ini, lihat OpenSearch Dokumentasi. Hasil yang dikembalikan untuk kueri ini adalah OpenSearch hasil tanpa menggunakan plugin Intelligent Ranking.

  5. Pilih indeks yang sama untuk Query 2 dan masukkan kueri yang sama di OpenSearch Query DSL. Selain itu, sertakan ekstensi dengan kendra_intelligent_ranking dan tentukan wajib body_field untuk diberi peringkat. Anda juga dapat menentukan bidang judul, tetapi bidang tubuh adalah wajib. Untuk contoh kueri ini, lihat OpenSearch Dokumentasi. Hasil yang dikembalikan untuk kueri ini adalah hasil yang Amazon Kendra diberi peringkat ulang menggunakan plugin Intelligent Ranking. Plugin peringkat hingga 25 hasil.

  6. Pilih Cari untuk mengembalikan dan membandingkan hasil.