المؤلف: سفين لويسكان
التقنيات: الزاوي ، الزاوي ، المادة الزاوية ، typescript ، الحذاء الربيعي ، الربيع AI ، Openai ، Ollama ، PostgreSQL (متجه ، HSTORE) ، Liquibase ، JPA ، Gradle ، Java
هذا مشروع لإظهار Howto استخدم Springai للدردشة مع المستندات في المكتبة. يمكن تحميل المستند بعد ذلك يتم تخزينه في قاعدة بيانات عادية وناقل. يتم استخدام الذكاء الاصطناعي لإنشاء التضمينات من قطع المستندات المخزنة في قاعدة بيانات المتجهات. في أسئلة الدردشة ، يمكن طرح أسئلة يتم تشغيلها في التضمينات ويتم استخدامها لطلبات قاعدة بيانات المتجهات. يتم استخدام متجه المستند مع أدنى مسافة لتحميل المستند من قاعدة البيانات وطلب إجابة من الذكاء الاصطناعى بناءً على رموز محتوى المستند. يمكّن ذلك الذكاء الاصطناعى من إنشاء الإجابة بناءً على محتوى المستند وحد الهلوسة. يتم توفير رابط إلى المستند المصدر لمزيد من البحث.
يستخدم المشروع الحذاء الربيعي مع SPRING AI للوصول إلى Openai وقاعدة بيانات المتجه. يتم استخدام PostgreSQL DB مع المتجه ، HSTORE وتمديد UUID-OSSP. يتم استخدام liquibase لإدارة ترحيل قاعدة البيانات. يتم استخدام JPA للوصول إلى قاعدة البيانات في الخدمات بواسطة وحدات التحكم في REST. بالنسبة للواجهة الأمامية ، يتم استخدام المادة الزاوية والمواد الزاوية لإنشاء جدول المستندات وحوار التحميل ودردشة المستند. يستخدم Angular CLI لبناء الواجهة الأمامية و Gradle لبناء المشروع.
يستخدم Ollama لاستخدام نماذج AI/LLM محليًا. يمكن تثبيت Ollama أو تشغيله كصورة Docker في جهاز محلي. يدعم Ollama مكتبة من نماذج AI/LLM لحالات الاستخدام المختلفة. نماذج مثل LLAVA لوصف الصورة ، يمكن استخدام Falcon للإجابة على الأسئلة القائمة على RAG ، SQLCODER لتوليد SQL و MIXTRAL لاتصال الوظيفة. يمكن لـ Ollama استخدام وحدات معالجة الرسومات إذا كانت متوفرة وتعمل على وحدة المعالجة المركزية بدونها. Spring AI لديه دعم Ollama الذي يجعل الاستخدام مماثلا استخدام خدمة الذكاء الاصطناعى. في وحدات المعالجة المركزية الحالية ، غالبًا ما تكون هناك مشكلات في الأداء. يرغب مقدمو وحدة المعالجة المركزية في إضافة محركات الذكاء الاصطناعي إلى وحدات المعالجة المركزية الخاصة بهم في المستقبل لحل هذه القضايا.
يستخدم المشروع Boot Spring مع SPRING AI للتشكيك في قاعدة بيانات الصور التي تستخدم postgreSQL مع امتداد PGVector و Ollama. بالنسبة للصور المستوردة والمجازية هي أوصاف تم إنشاؤها مع نموذج LLAVA الذي يعمل محليًا على Ollama. يتم تشغيل هذه الأوصاف في التضمين ويتم تخزينها مع الوصف في قاعدة بيانات المتجه. يتم تخزين الصورة والبيانات الوصفية في قاعدة البيانات العلائقية. يتم تشغيل سؤال في قاعدة بيانات الصور في التضمين ويتم الاستعلام عن قاعدة بيانات المتجه لأقرب جار. يتم إرجاع أفضل المباريات مع الصورة والوصف. يتم عرض النتيجة في الواجهة الأمامية. هذا يمكّن هو نوع جديد من البحث عن الصور الذي لم يكن ممكنًا قبل أن تصبح AI/LLMs قابلة للاستخدام.
يستخدم المشروع SPRING AI لتحويل الأسئلة باستخدام LLMS إلى استعلامات SQL وعرض النتيجة في الواجهة الأمامية. استنادًا إلى البيانات الوصفية التي يتم توفيرها لمجموعة البيانات العلائقية ، يمكن لـ LLM إنشاء تضمينات لبيانات التعريف للجداول والأعمدة. يقوم المشروع أيضًا بإنشاء تضمينات لمحتوى أعمدة معينة لتكون قادرة على تحديد ما إذا كان ينبغي استخدام العمود كجمع في استعلام SQL. مع هذا التعريف المضغوط ، فإن LLM قادرة على تحويل سؤال في استعلام معقول SQL وعرض النتيجة في الواجهة الأمامية. تستخدم الواجهة الأمامية جدول مواد زاوي مع كمية مرنة من الأعمدة والصفوف.
يستخدم المشروع SPRING AI لتحويل أسئلة حول الكتب إلى استدعاء وظيفة REST إلى واجهة برمجة تطبيقات OpenLibrary. يستخدم نموذج LLAMA3.1 ودالة AI SPRING AI API. يتم استخدام استجابة API لإنشاء الاستجابة.
يستخدم المشروع SPRING AI لإنشاء فصول اختبار. للقيام بذلك ، يتم توفير الفصل للاختبار والفئات التي يعتمد عليها الفصل للاختبار. يمكن أيضًا توفير فئة مثال اختبار. ثم يحصل AI/LLM على أساس Ollama على جميع المعلومات ويقوم بإنشاء مسودة لمصدر فئة الاختبار.
يستخدم المشروع SPRING AI لإنشاء ملخصات للكتب. لتوليد الملخصات ، يجب توفير عناوين الفصل والعنصر بعد الفصل الأخير. ثم يتم إنشاء ملخصات للفصول في شكل نقاط الرصاص. يتم إنشاء ملخص للكتاب من ملخصات الفصل.
يوضح المشروع Howto استخدام Spring AI لإنشاء إجابات بناءً على مجموعة من المستندات المقدمة مع رابط للمصدر. توفر الواجهة الأمامية الزاوية واجهة المستخدم للواجهة الخلفية وتظهر الاستجابات.
يعرض المشروع Howto استخدام Spring AI لإنشاء أوصاف للصور التي تم تحميلها وتخزين الصورة والأوصاف والتضمينات الوصف في قاعدة البيانات. يتم تشغيل الأسئلة التي يتم طرحها على قاعدة بيانات الصور في التضمين ويتم إرجاع أفضل أوصاف مناسبة مع الصور. توفر الواجهة الأمامية الزاوية واجهة مستخدم لعرض النتيجة وتحميل الصور.
يوضح المشروع Howto استخدام Spring AI لإنشاء استعلامات SQL استنادًا إلى البيانات الوصفية المقدمة للجداول/الأعمدة. توفر الواجهة الأمامية الزاوية واجهة مستخدم لعرض النتيجة في الجدول.
يعرض المشروع Howto استخدام Spring AI لتحديد واجهة REST للاتصال وتوفير المعلمات لمكالمة REST. توفر الواجهة الأمامية الزاوية واجهة المستخدم لطرح السؤال وعرض نتيجة مكالمة REST.
يعرض المشروع Howto استخدام Spring AI لإنشاء قاعدة بيانات صور يمكن الاستعلام عنها بأسئلة اللغة الطبيعية وإرجاع أقرب الصور المطابقة مع أوصافها.
SPRING AI يجعل استخدام خدمات Openai / Ollama بسيطة ومفيدة وهذا المشروع يوضح ذلك.
يحتوي المشروع على مخطط سياق النظام ومخطط حاوية ومخطط مكون. تم إنشاء الرسوم البيانية مع structurizr. يحتوي File RunStructurizr.sh على الأوامر لاستخدام structurizr ويحتوي هيكل الدليل على ملف DSL.
في دليل Helm يوجد إعداد Kubernetes لتشغيل مشروع AidocumentLibraryChat مع Minikube. ينشر مخطط Helm قاعدة بيانات Postgres و AidocumentLibraryChat مع المعلمات المطلوبة (SpringProfile في القيم. Yaml) لتشغيلها. يستخدم دعم الحد من الموارد من JDK 16 للحد من الذاكرة. يحد Kubernetes من استخدام وحدة المعالجة المركزية ويستخدم startupprobes و livencedprobes التي يوفرها مشغل الربيع.
في ملف Runpostgresql.sh توجد الأوامر لسحب وتشغيل صورة Docker PostgreSQL مع ملحق المتجه محليًا.
للحصول على مفتاح Openai API ، تحتاج إلى إنشاء حساب على https://platform.openai.com وإنشاء مفتاح في إعدادات المستخدم. يجب إضافة هذا المفتاح في التطبيق. كبديل يمكن توفيره كمتغير البيئة "مفتوح api-key".
يمكن لـ Ollama تشغيل نموذج الذكاء الاصطناعي محليًا. لدى ملف Runollama.sh الأوامر لتشغيله كحاوية Docker. يجب بناء التطبيق باستخدام "useollama = true" خاصية إنشاء Gradle لتضمين التبعيات. يجب بدء التطبيق مع ملف تعريف "Ollama" لتبديل التكوينات/الميزات لاستخدام النماذج القائمة على Ollama. لدى Ollama دعم لتسريع GPU.
postgreSQL مع تمديد المتجه 0.5.1 أو الأحدث
جافا 21 أو الأحدث
Gradle 8.3 أو أحدث
Nodejs 18.13.x أو الأحدث
NPM 8.19.x أو الأحدث
الزاوي CLI 17 أو الأحدث