شعار زيفيرنت

احصل على نتائج بحث أكثر ذكاءً مع المكون الإضافي Amazon Kendra Intelligent Ranking و OpenSearch

التاريخ:

إذا أتيحت لك الفرصة لإنشاء تطبيق بحث عن البيانات غير المهيكلة (على سبيل المثال ، ويكي ، ومواقع الويب المعلوماتية ، وصفحات مساعدة الخدمة الذاتية ، والوثائق الداخلية ، وما إلى ذلك) باستخدام محركات البحث مفتوحة المصدر أو التجارية الجاهزة ، فربما تكون على دراية بتحديات الدقة الكامنة في الحصول على نتائج البحث ذات الصلة. يمكن فقد المعنى المقصود لكل من الاستعلام والمستند لأن البحث يقتصر على مطابقة الكلمات الأساسية والمصطلحات المكونة. وبالتالي ، بينما تحصل على النتائج التي قد تحتوي على الكلمات الصحيحة ، فإنها ليست دائمًا ذات صلة بالمستخدم. تحتاج إلى أن يكون محرك البحث الخاص بك أكثر ذكاءً حتى يتمكن من ترتيب المستندات بناءً على مطابقة معنى المحتوى أو دلالاته مع نية استعلام المستخدم.

أمازون كندرا يوفر خدمة بحث ذكية مُدارة بالكامل تعمل على أتمتة عرض المستندات وتوفر نتائج بحث دقيقة للغاية ونتائج الأسئلة الشائعة استنادًا إلى المحتوى عبر العديد من مصادر البيانات. إذا لم تكن قد انتقلت إلى Amazon Kendra وترغب في تحسين جودة نتائج البحث ، فيمكنك استخدام Amazon Kendra Intelligent Ranking لـ OpenSearch المدار ذاتيًا على حل البحث الحالي لديك.

يسعدنا تقديم الجديد تصنيف Amazon Kendra Intelligent لـ OpenSearch المُدار ذاتيًاوالمكون الإضافي المصاحب لـ أوبن سيرش محرك البحث! الآن يمكنك بسهولة إضافة تصنيف ذكي إلى استعلامات مستندات OpenSearch الخاصة بك ، دون الحاجة إلى الترحيل أو تكرار فهارس OpenSearch الخاصة بك أو إعادة كتابة تطبيقاتك. يتمثل الاختلاف بين تصنيف Amazon Kendra Intelligent Ranking لخدمة OpenSearch المُدارة ذاتيًا وخدمة Amazon Kendra المُدارة بالكامل في أنه بينما يوفر الأول إعادة تصنيف دلالية قوية لنتائج البحث ، فإن الأخير يوفر تحسينات ووظائف إضافية في دقة البحث مثل التعلم المتزايد والسؤال. الإجابة ومطابقة الأسئلة الشائعة والموصلات المدمجة. لمزيد من المعلومات حول الخدمة المدارة بالكامل ، يرجى زيارة صفحة خدمة Amazon Kendra.

مع تصنيف Amazon Kendra Intelligent لـ OpenSearch المُدار ذاتيًا ، النتائج السابقة مثل هذه:

الاستعلام: ما هو عنوان البيت الابيض؟

Hit1 (الأفضل): ألقى الرئيس خطابًا للأمة من البيت الأبيض اليوم.

ضرب 2: يقع البيت الأبيض في: 1600 Pennsylvania Avenue NW، Washington، DC 20500

اصبح مثل هذا: 

الاستعلام: ما هو عنوان البيت الابيض؟

Hit1 (الأفضل): يقع البيت الأبيض في: 1600 Pennsylvania Avenue NW، Washington، DC 20500

ضرب 2: ألقى الرئيس خطابًا للأمة من البيت الأبيض اليوم.

في هذا المنشور ، نوضح لك كيفية البدء في تصنيف Amazon Kendra Intelligent لـ OpenSearch المدار ذاتيًا ، ونقدم بعض الأمثلة التي توضح قوة وقيمة هذه الميزة.

مكونات تصنيف Amazon Kendra الذكي لـ OpenSearch المدار ذاتيًا

المتطلبات الأساسية المسبقة

في هذا البرنامج التعليمي ، ستحتاج إلى تشغيل محطة bash لينكس, ماكالطرق أو النظام الفرعي ويندوز لينكس، وعلى حساب AWS. تلميح: ضع في اعتبارك استخدام مثيل Amazon Cloud9 أو ملف الأمازون الحوسبة المرنة السحابية (Amazon EC2) مثيل.

سوف تفعلها:

  • قم بتثبيت Docker ، إذا لم يكن مثبتًا بالفعل على نظامك.
  • تثبيت الاحدث واجهة سطر الأوامر AWS (AWS CLI) ، إذا لم يكن مثبتًا بالفعل.
  • أنشئ حاويات OpenSearch وابدأها ، مع تمكين المكون الإضافي Amazon Kendra Intelligent Ranking.
  • قم بإنشاء فهارس اختبار وتحميل بعض نماذج المستندات.
  • قم بتشغيل بعض الاستعلامات ، مع وبدون ترتيب ذكي ، واستمتع بالاختلافات بشكل مناسب!

تثبيت عامل الميناء

إذا كان Docker (على سبيل المثال ، docker و docker-compose) لم يتم تثبيته بالفعل في بيئتك ، ثم قم بتثبيته. نرى احصل على Docker للحصول على الاتجاهات.

قم بتثبيت AWS CLI

إذا لم يكن لديك بالفعل أحدث إصدار من AWS CLI مثبتًا ، فقم بتثبيته وتكوينه الآن (انظر AWS CLI الشروع في العمل). يجب أن تتمتع بيانات اعتماد مستخدم AWS الافتراضية الخاصة بك بحق وصول المسؤول ، أو اطلب من مسؤول AWS إضافة السياسة التالية إلى أذونات المستخدم الخاصة بك:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "kendra-ranking:*", "Resource": "*" } ]
}

أنشئ وابدأ OpenSearch باستخدام البرنامج النصي Quickstart

تحميل search_processing_kendra_quickstart.sh النصي:

wget https://raw.githubusercontent.com/msfroh/search-relevance/quickstart-script/helpers/search_processing_kendra_quickstart.sh
chmod +x search_processing_kendra_quickstart.sh

اجعلها قابلة للتنفيذ:

chmod +x ./search_processing_kendra_quickstart.sh

نص البداية السريعة:

  1. ينشئ خطة تنفيذ تصنيف Amazon Kendra Intelligent Ranking Plan في حساب AWS الخاص بك.
  2. ينشئ حاويات Docker لـ OpenSearch ولوحات المعلومات الخاصة به.
  3. تكوين OpenSearch لاستخدام خدمة الترتيب الذكي من Kendra.
  4. بدء خدمات البحث المفتوح.
  5. يقدم إرشادات مفيدة لاستخدام الخدمة.

استخدم --help خيار لرؤية خيارات سطر الأوامر:

./search_processing_kendra_quickstart.sh --help

الآن ، قم بتنفيذ البرنامج النصي لأتمتة إعداد Amazon Kendra و OpenSearch:

./search_processing_kendra_quickstart.sh --create-execution-plan

هذا كل شيء! حاويات OpenSearch و OpenSearch Dashboard قيد التشغيل الآن.

اقرأ رسالة الإخراج من البرنامج النصي لبدء التشغيل السريع ، وقم بتدوين الدليل حيث يمكنك تشغيل الملف اليدوي docker-compose الأوامر و cleanup_resources.sh النصي.

جرب استعلامًا تجريبيًا للتحقق من أنه يمكنك الاتصال بحاوية OpenSearch الخاصة بك:

curl -XGET --insecure -u 'admin:admin' 'https://localhost:9200'

لاحظ أنه إذا حصلت على الخطأ curl(35):OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to localhost:9200، فهذا يعني أن OpenSearch لا يزال قادمًا. الرجاء الانتظار لبضع دقائق حتى يكون OpenSearch جاهزًا وحاول مرة أخرى.

قم بإنشاء فهارس اختبار وتحميل مستندات نموذجية

يستخدم البرنامج النصي أدناه لإنشاء فهرس وتحميل مستندات نموذجية. احفظه على جهاز الكمبيوتر الخاص بك باسم Bulbost.sh:

#!/bin/bash
curl -u admin:admin -XPOST https://localhost:9200/_bulk --insecure --data-binary @$1 -H 'Content-Type: application/json'

احفظ ملفات البيانات أدناه باسم tinydocs.jsonl:

{ "create" : { "_index" : "tinydocs", "_id" : "tdoc1" } }
{"title": "WhiteHouse1", "body": "The White House is located at: 1600 Pennsylvania Avenue NW, Washington, DC 20500"}
{ "create" : { "_index" : "tinydocs", "_id" : "tdoc2" } }
{"title": "WhiteHouse2", "body": "The president delivered an address to the nation from the White House today."}

واحفظ ملف البيانات أدناه باسم dstinfo.jsonl:

(هذه البيانات مقتبسة من مقالة التوقيت الصيفي).

{ "create" : { "_index" : "dstinfo", "_id" : "dst1" } }
{"title": "Daylight Saving Time", "body": "Daylight saving time begins on the second Sunday in March at 2 a.m., and clocks are set an hour ahead, according to the Farmers’ Almanac. It lasts for eight months and ends on the first Sunday in November, when clocks are set back an hour at 2 a.m."}
{ "create" : { "_index" : "dstinfo", "_id" : "dst2" } }
{"title":"History of daylight saving time", "body": "Founding Father Benjamin Franklin is often deemed the brain behind daylight saving time after a letter he wrote in 1784 to a Parisian newspaper, according to the Farmers’ Almanac. But Franklin’s letter suggested people simply change their routines and schedules — not the clocks — to the sun’s cycles. Perhaps surprisingly, daylight saving time had a soft rollout in the United States in 1883 to solve issues with railroad accidents, according to the U.S. Bureau of Transportation Services. It was instituted across the United States in 1918, according to the Congressional Research Service. In 2005, Congress changed it to span from March to November instead of its original timeframe of April to October."}
{ "create" : { "_index" : "dstinfo", "_id" : "dst3" } }
{"title": "Daylight saving time participants", "body":"The United States is one of more than 70 countries that follow some form of daylight saving time, according to World Data. States can individually decide whether or not to follow it, according to the Farmers’ Almanac. Arizona and Hawaii do not, nor do parts of northeastern British Columbia in Canada. Puerto Rico and the Virgin Islands, both U.S. territories, also don’t follow daylight saving time, according to the Congressional Research Service."}
{ "create" : { "_index" : "dstinfo", "_id" : "dst4" } }
{"title":"Benefits of daylight saving time", "body":"Those in favor of daylight saving time, whether eight months long or permanent, also vouch that it increases tourism in places such as parks or other public attractions, according to National Geographic. The longer days can keep more people outdoors later in the day."}

اجعل البرنامج النصي قابل للتنفيذ:

chmod +x ./bulk_post.sh

الآن استخدم Bulk_post.sh البرنامج النصي لإنشاء فهارس وتحميل البيانات عن طريق تشغيل الأمرين أدناه:

./bulk_post.sh tinydocs.jsonl
./bulk_post.sh dstinfo.jsonl

قم بتشغيل استعلامات نموذجية

إعداد نصوص الاستعلام

يتم تحديد استعلامات OpenSearch في JSON باستخدام OpenSearch استعلام عن لغة مجال محددة (DSL). في هذا المنشور ، نستخدم ملف لينكس حليقة الأمر لإرسال استعلامات إلى خادم OpenSearch المحلي الخاص بنا باستخدام HTTPS.

لتسهيل ذلك ، قمنا بتعريف نصين صغيرين لإنشاء استعلام DSL وإرساله إلى OpenSearch.

ينشئ البرنامج النصي الأول استعلامًا عاديًا لمطابقة نص OpenSearch في حقلي مستند - لقب و الجسدي. راجع وثائق OpenSearch للمزيد من المعلومات عن ملف صيغة استعلام متعددة المطابقة. لقد أبقينا الاستعلام بسيطًا للغاية ، ولكن يمكنك التجربة لاحقًا بتحديد أنواع بديلة من الاستعلامات.

احفظ البرنامج النصي أدناه باسم query_nokendra.sh:

#!/bin/bash
curl -XGET "https://localhost:9200/$1/_search?pretty" -u 'admin:admin' --insecure -H 'Content-Type: application/json' -d' { "query": { "multi_match": { "fields": ["title", "body"], "query": "'"$2"'" } }, "size": 20 } '

النص الثاني مشابه للنص الأول ، لكننا هذه المرة نضيف امتداد استعلام لتوجيه OpenSearch لاستدعاء المكون الإضافي Amazon Kendra Intelligent Ranking كخطوة ما بعد المعالجة لإعادة ترتيب النتائج الأصلية باستخدام خدمة Amazon Kendra Intelligent Ranking.

size تحدد الخاصية عدد مستندات نتيجة OpenSearch التي يتم إرسالها إلى Kendra لإعادة ترتيبها. هنا ، نحدد 20 نتيجة كحد أقصى لإعادة الترتيب. خاصيتين ، title_field (اختياري) و body_field (مطلوب) ، حدد حقول المستند المستخدمة للترتيب الذكي.

احفظ البرنامج النصي أدناه باسم query_kendra.sh:

#!/bin/bash
curl -XGET "https://localhost:9200/$1/_search?pretty" -u 'admin:admin' --insecure -H 'Content-Type: application/json' -d' { "query": { "multi_match": { "fields": ["title", "body"], "query": "'"$2"'" } }, "size": 20, "ext": { "search_configuration": { "result_transformer": { "kendra_intelligent_ranking": { "order": 1, "properties": { "title_field": "title", "body_field": "body" } } } } } } '

اجعل كلا النصين قابلين للتنفيذ:

chmod +x ./query_*kendra.sh

قم بتشغيل الاستعلامات الأولية

ابدأ باستعلام بسيط عن ملف تينيدوكس index ، لإعادة إنتاج المثال المستخدم في المقدمة اللاحقة.

استخدم query_nokendra.sh البرنامج النصي للبحث عن عنوان البيت الأبيض:

./query_nokendra.sh tinydocs "what is the address of White House"

ترى النتائج المبينة أدناه. راقب ترتيب النتيجتين ، اللتين تم ترتيبهما حسب الدرجة المعينة بواسطة استعلام تطابق نص OpenSearch. على الرغم من أن نتيجة أعلى الدرجات تحتوي على الكلمات الرئيسية العنوان و البيت الابيض، من الواضح أن المعنى لا يتطابق مع مقصد السؤال. تتطابق الكلمات الرئيسية ، لكن الدلالات لا تتطابق.

{ "took" : 2, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : 1.1619741, "hits" : [ { "_index" : "tinydocs", "_id" : "tdoc2", "_score" : 1.1619741, "_source" : { "title" : "Whitehouse2", "body" : "The president delivered an address to the nation from the White House today." } }, { "_index" : "tinydocs", "_id" : "tdoc1", "_score" : 1.0577903, "_source" : { "title" : "Whitehouse1", "body" : "The White House is located at: 1600 Pennsylvania Avenue NW, Washington, DC 20500" } } ] }
}

لنقم الآن بتشغيل الاستعلام باستخدام تصنيف Amazon Kendra Intelligent Ranking باستخدام امتداد query_kendra.sh النصي:

./query_kendra.sh tinydocs "what is the address of White House"

هذه المرة ، سترى النتائج بترتيب مختلف كما هو موضح أدناه. أعادت خدمة التصنيف الذكي Amazon Kendra تعيين قيم النقاط ، وخصصت درجة أعلى للمستند تتطابق بشكل أوثق مع نية الاستعلام. من منظور الكلمات الرئيسية ، يعد هذا تطابقًا ضعيفًا لأنه لا يحتوي على الكلمة العنوان؛ ومع ذلك ، من منظور دلالي هو أفضل استجابة. الآن ترى فائدة استخدام المكون الإضافي Amazon Kendra Intelligent Ranking!

{ "took" : 522, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 2, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : 0.3798389, "hits" : [ { "_index" : "tinydocs", "_id" : "tdoc1", "_score" : 0.3798389, "_source" : { "title" : "Whitehouse1", "body" : "The White House is located at: 1600 Pennsylvania Avenue NW, Washington, DC 20500" } }, { "_index" : "tinydocs", "_id" : "tdoc2", "_score" : 0.25906953, "_source" : { "title" : "Whitehouse2", "body" : "The president delivered an address to the nation from the White House today." } } ] }
}

قم بتشغيل استعلامات إضافية وقارن نتائج البحث

جرب فهرس dstinfo الآن ، لترى كيف يعمل نفس المفهوم مع البيانات والاستعلامات المختلفة. بينما يمكنك استخدام البرامج النصية query_nokendra.sh و query_kendra.sh لعمل استعلامات من سطر الأوامر ، دعنا نستخدم بدلاً من ذلك لوحات معلومات OpenSearch مقارنة نتائج البحث المكون الإضافي لتشغيل الاستعلامات ومقارنة نتائج البحث.

الصق عنوان URL المحلي للوحات المعلومات في متصفحك: http://localhost:5601/app/searchRelevance – / للوصول إلى أداة مقارنة لوحة القيادة. استخدم بيانات الاعتماد الافتراضية: اسم المستخدم: مشرف، كلمة المرور: مشرف.

في شريط البحث ، أدخل: what is daylight saving time?

للاستعلام 1 والاستعلام 2 مؤشر، حدد com.dstinfo.

انسخ استعلام DSL أدناه والصقه في ملف سؤال لوحة تحت الاستعلام 1. هذا هو استعلام البحث عن كلمة رئيسية.

{ "query": { "multi_match": { "fields": ["title", "body"], "query": "%SearchText%" } }, "size": 20
}

الآن انسخ استعلام DSL أدناه والصقه في ملف سؤال لوحة تحت الاستعلام 2. يستدعي هذا الاستعلام المكون الإضافي Amazon Kendra Intelligent Ranking لـ OpenSearch المدار ذاتيًا لإجراء إعادة الترتيب الدلالي لنتائج البحث.

{ "query": { "multi_match": { "fields": ["title", "body"], "query": "%SearchText%" } }, "size": 20, "ext": { "search_configuration": { "result_transformer": { "kendra_intelligent_ranking": { "order": 1, "properties": { "title_field": "title", "body_field": "body" } } } } }
}

اختيار بحث زر لتشغيل الاستعلامات ومراقبة نتائج البحث. في النتيجة 1 ، من المحتمل أن تكون النتيجة المصنفة في المرتبة الأخيرة هي الإجابة الأكثر صلة بهذا الاستعلام. في النتيجة 2 ، حصلت نتيجة Amazon Kendra Intelligent Ranking على أفضل إجابة ملائمة مرتبة أولاً.

الآن بعد أن اختبرت تصنيف Amazon Kendra الذكي للبحث المفتوح المدار ذاتيًا ، جرب بعض الاستفسارات الخاصة بك. استخدم البيانات التي قمنا بتحميلها بالفعل أو استخدم ملف Bulk_post.sh البرنامج النصي لتحميل البيانات الخاصة بك.

استكشف واجهة برمجة تطبيقات إعادة ترتيب تصنيف Amazon Kendra

كما رأيت من هذا المنشور ، يمكن استخدام المكون الإضافي Amazon Kendra Intelligent Ranking لـ OpenSearch بسهولة لإعادة الترتيب الدلالي لنتائج البحث الخاصة بك. ومع ذلك ، إذا كنت تستخدم خدمة بحث لا تدعم المكوّن الإضافي Amazon Kendra Intelligent Ranking لـ OpenSearch المدار ذاتيًا ، فيمكنك استخدام إعادة الدرجة وظيفة من واجهة برمجة تطبيقات Amazon Kendra Intelligent Ranking API مباشرةً.

جرب واجهة برمجة التطبيقات هذه باستخدام نتائج البحث من مثال الاستعلام الذي استخدمناه أعلاه: ما هو عنوان البيت الابيض؟

أولاً ، ابحث عن معرّف خطة التنفيذ الخاصة بك عن طريق تشغيل:

aws kendra-ranking list-rescore-execution-plans

يحتوي JSON أدناه على استعلام البحث والنتيجة التي تم إرجاعها بواسطة استعلام مطابقة OpenSearch الأصلي ، مع درجات OpenSearch الأصلية الخاصة بهم. يحل محل {kendra-execution-plan_id} مع معرف خطة التنفيذ الخاص بك (من أعلاه) وحفظه باسم rescore_input.json:

{ "RescoreExecutionPlanId": "{kendra-execution-plan_id}", "SearchQuery": "what is the address of White House", "Documents": [ { "Id": "tdoc1", "Title": "Whitehouse1", "Body": "The president delivered an address to the nation from the White House today.", "OriginalScore": 1.4484794 }, { "Id": "tdoc2", "Title": "Whitehouse2", "Body": "The White House is located at: 1600 Pennsylvania Avenue NW, Washington, DC 20500", "OriginalScore": 1.2401118 } ]
}

قم بتشغيل أمر CLI أدناه لإعادة تسجيل قائمة المستندات هذه باستخدام خدمة Amazon Kendra Intelligent Ranking:

aws kendra-ranking rescore --cli-input-json "`cat rescore_input.json`"

سيبدو ناتج التنفيذ الناجح لهذا على النحو التالي.

{ "ResultItems": [ { "Score": 0.39321771264076233, "DocumentId": "tdoc2" }, { "Score": 0.328217089176178, "DocumentId": "tdoc1" } ], "RescoreId": "991459b0-ca9e-4ba8-b0b3-1e8e01f2ad15"
}

كما هو متوقع ، المستند tdoc2 (يحتوي على نص النص "يقع البيت الأبيض في: 1600 Pennsylvania Avenue NW، Washington، DC 20500") الآن في الترتيب الأعلى ، حيث إنها الاستجابة الأكثر صلة من الناحية المعنوية للاستعلام. ال ResultItems قائمة في الإخراج تحتوي على كل مدخلات DocumentId مع الجديد Score، مرتبة بترتيب تنازلي من Score.

تنظيف

عند الانتهاء من التجربة ، قم بإيقاف تشغيل وإزالة حاويات Docker وخطة تنفيذ Rescore عن طريق تشغيل ملف cleanup_resources.sh البرنامج النصي الذي تم إنشاؤه بواسطة البرنامج النصي Quickstart ، على سبيل المثال:

./opensearch-kendra-ranking-docker.xxxx/cleanup_resources.sh

وفي الختام

في هذا المنشور ، أوضحنا لك كيفية استخدام المكون الإضافي Amazon Kendra Intelligent Ranking لـ OpenSearch المدار ذاتيًا لإضافة تصنيف ذكي بسهولة إلى استعلامات مستندات OpenSearch لتحسين ترتيب ملاءمة النتائج بشكل كبير ، أثناء استخدام عمليات النشر الحالية لمحرك البحث OpenSearch.

يمكنك أيضًا استخدام تصنيف Amazon Kendra Intelligent Ranking استعادة API مباشرة الى بذكاء إعادة تسجيل النتائج وترتيبها من تطبيقاتك الخاصة.

اقرأ تصنيف Amazon Kendra Intelligent لـ OpenSearch المُدار ذاتيًا توثيق لمعرفة المزيد حول هذه الميزة ، والبدء في التخطيط لتطبيقها في تطبيقات الإنتاج الخاصة بك.


حول المؤلف

أبهيناف جواديكارأبهيناف جواديكار هو مهندس حلول رئيسي يركز على Amazon Kendra في فريق خدمات اللغة AI / ML في AWS. يعمل Abhinav مع عملاء AWS وشركائها لمساعدتهم على بناء حلول بحث ذكية على AWS.

بوب ستراهانبوب ستراهان هو مهندس حلول رئيسي في فريق خدمات الذكاء الاصطناعي للغة AWS.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة