يعد API على شبكة الإنترنت دليل على Web Gapping-AAI دليلًا على WEB PROING (POC) للعثور على أفضل التطابقات الممكنة لأسماء غرف الفندق.
العنصر الأكثر أهمية في هذا التطبيق هو مزيج من SDK التضمين Openai وقاعدة بيانات postgreSQL مع امتداد المتجهات.
عند توفير اسم غرفة فندق جديدة ، يسترجع واجهة برمجة التطبيقات ناقل التضمين من API Openai ويخزنها في قاعدة بيانات PostgreSQL.
ثم يستخدم وظائف البحث الأصلي في postgresql للعثور على المطابقات المحتملة بناءً على تشابه متجه عن بعد.
يتم تشغيل كل من API على الويب وقاعدة بيانات Postgres في الحاويات ، ليست هناك حاجة لتثبيت أي شيء بصرف النظر عن Docker.
النموذج المستخدم لحساب التضمين على جانب Openia هو:
AdaTextEmbedding
يقيس نصي Openai ارتباط سلاسل النص. يتم استخدام التضمين بشكل شائع لـ:
البحث (حيث يتم تصنيف النتائج حسب الصلة بسلسلة الاستعلام)
التضمين هو متجه (قائمة) من أرقام النقاط العائمة. المسافة بين اثنين من المتجهات تقيس علاقتها.
المسافات الصغيرة تشير إلى ارتفاع العلاقة ومسافات كبيرة تشير إلى انخفاض العلاقة.
استنساخ المستودع: https://github.com/brunonuzzi/Room-Mapping-ai
قم بإنشاء مفتاح AI Open الخاص بك: https://platform.openai.com/account/api- keys
انتقل إلى دليل المشروع: cd room-mapping-ai
استبدل الغرفة Mapping-AI/AppSettings.json بمفتاح API المفتوح الخاص بك.
"OpenAI" : {
"ApiKey" : " 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 "
} قم ببناء حاويات Docker باستخدام Docker: docker-compose build
قم بتشغيل Docker Compose: docker-compose up
انتقل إلى http: // localhost: 5000/swagger/index.html
لإيقاف وإزالة الحاويات:
docker-compose down --remove-orphans
لاستخدام غرفة تعيين الغرفة AI AI ، أرسل طلبًا منشورًا باستخدام اسم غرفة الفندق كجسم طلب
curl -X ' POST '
' http://localhost:5000/api/RoomMapping/GetMostSimilarRooms?roomName=Serenity%20Luxury '
-H ' accept: text/plain '
-d ' 'سوف يستجيب API بقائمة من المباريات المحتملة:
[
{
"id" : 1 ,
"hotelName" : " Mallorca Rocks " ,
"roomName" : " Serenity Suite " ,
"vectorDistance" : 0.06337405572419863
},
{
"id" : 10 ,
"hotelName" : " Mallorca Rocks " ,
"roomName" : " Serenity Double Room " ,
"vectorDistance" : 0.08145154924929454
},
{
"id" : 5 ,
"hotelName" : " Mallorca Rocks " ,
"roomName" : " Royal Executive Suite " ,
"vectorDistance" : 0.15970261195384094
},
{
"id" : 4 ,
"hotelName" : " Mallorca Rocks " ,
"roomName" : " Urban Escape Penthouse " ,
"vectorDistance" : 0.16005893649310143
},
{
"id" : 2 ,
"hotelName" : " Mallorca Rocks " ,
"roomName" : " Ocean View Deluxe " ,
"vectorDistance" : 0.16867594238009598
}
]افتح عميل PostgreSQL المفضل لديك (PSQL ، PGADMIN ، أو DBEAVER) وإنشاء اتصال جديد:
localhost5432roommapping-userroommapping-passwordroom-mappingيأتي جهاز Mapping-AI يحتوي على بيانات مسبقة المصنف لمساعدتك في البدء بسرعة. تتضمن هذه البيانات مجموعة من أسماء غرف الفندق مع متجهات التضمين الخاصة بها. لاستكشاف البيانات المصنفة مسبقًا وفهم قدرات التطبيق بشكل أفضل ، يمكنك تنفيذ عينة استعلامات مباشرة على قاعدة بيانات postgreSQL.
على سبيل المثال ، يمكنك استخدام الاستعلام التالي للعثور على أفضل 5 غرف فندقية متشابهة إلى معرف الغرفة = 1 (جناح الصفاء) ، استنادًا إلى متجهات التضمين الخاصة بهم:
SELECT Id
,HotelName
,RoomName
,CreatedDate
, ' Serenity Suite ' SearchedRoomName
,embedding <=> ( select embedding from rooms where id = 1 )
as vector_distance
FROM public . Rooms
ORDER BY vector_distance limit 5يعني المشغل <=> في الاستعلام السابق
cosine distance، يمكنك العثور على المشغلين الآخرين هنا
ستقوم قاعدة البيانات بإنشاء النتائج التالية
| بطاقة تعريف | اسم الفندق | اسم الغرفة | أنشأت | SearchRoomName | Vector_Distance |
|---|---|---|---|---|---|
| 1 | صخور مايوركا | جناح الصفاء | 2023-03-28 | جناح الصفاء | 0 |
| 13 | صخور مايوركا | الصفاء الرفاهية | 2023-03-28 | جناح الصفاء | 0.06337405572419863 |
| 10 | صخور مايوركا | الصفاء مزدوج غرفة | 2023-03-28 | جناح الصفاء | 0.06572621072063112 |
| 5 | صخور مايوركا | الجناح التنفيذي الملكي | 2023-03-28 | جناح الصفاء | 0.12737531341984398 |
| 3 | صخور مايوركا | غرفة شرفة الحديقة | 2023-03-28 | جناح الصفاء | 0.1471648253749488 |
لفهم أفضل لكيفية الانتهاء من البذر ، يمكنك التحقق من ملف Seed.sql
إلى Debug WEP API على Visual Studio ، تأكد أولاً من إزالة جميع الحاويات الحالية المتعلقة بآبار واجهة برمجة تطبيقات الويب من أجل تجنب النقل.
بمجرد إزالة الحاويات ، فقط افتح room-mapping-ai.sln على Visual Studio وإطلاق Docker Compose.
يجب تشغيل واجهة برمجة تطبيقات الويب وسيتم إرفاق مصحح الأخطاء.
مقتطف رمز للاتصال بتوجيه واجهة برمجة تطبيقات Openai وإنشاء متجه التضمين لاسم غرفة الفندق
curl https://api.openai.com/v1/embeddings
-H " Content-Type: application/json "
-H " Authorization: Bearer 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 "
-d ' {
"input": "Ocean View Deluxe",
"model": "text-embedding-ada-002"
} 'النتيجة المتوقعة:
{
"object" : " list " ,
"data" : [
{
"object" : " embedding " ,
"index" : 0 ,
"embedding" : [
0.0041769226 ,
0.0067320974 ,
...
]
}
],
"model" : " text-embedding-ada-002-v2 " ,
"usage" : {
"prompt_tokens" : 3 ,
"total_tokens" : 3
}
}تستخدم واجهة برمجة تطبيقات الغرفة Mapping-AI API Openai لتوليد ناقلات التضمين. السعر الآن هو 0.0004/1K الرموز
سلسلة متوسطة مثل "Serenity Double Room" لديها 3 رموز. يمكنك التحقق من الأسعار هنا