يمكنك المساهمة في هذا البرنامج المساعد في هذا المستودع.
HNSW هي الرسوم البيانية للعالم الصغير الهرمي القابل للملاحة لقاعدة بيانات المتجهات (HNSW) وهي من بين الفهارس الأفضل أداءً للبحث عن تشابه المتجهات. تعد HNSW تقنية شائعة جدًا، حيث تنتج مرارًا وتكرارًا أداءً متطورًا مع سرعات بحث فائقة السرعة واسترجاع رائع. اعرف المزيد عن HNSW.
يمكنك تفضيل قاعدة بيانات المتجهات هذه إذا كنت تفضل ذلك
من خلال هذا، يمكنك تحقيق أداء عالٍ في توليد تعزيز الاسترجاع (RAG) في الذكاء الاصطناعي التوليدي، لذلك لا تحتاج إلى بناء نموذج الذكاء الاصطناعي الخاص بك أو إعادة تدريب نموذج الذكاء الاصطناعي للحصول على مزيد من السياق أو المعرفة، وبدلاً من ذلك يمكنك إضافة طبقة إضافية من السياق بحيث يمكن لنموذج الذكاء الاصطناعي الخاص بك أن يفهم معرفة أكثر مما يعرفه نموذج الذكاء الاصطناعي الأساسي. يعد هذا مفيدًا إذا كنت ترغب في الحصول على مزيد من السياق أو المزيد من المعرفة بناءً على معلومات أو معرفة محددة تحددها.
لديك تطبيق مطعم أو موقع ويب، يمكنك إضافة معلومات محددة عن مطاعمك وعنوانك وقائمة قائمة الطعام وسعرها والأشياء المحددة الأخرى، بحيث عندما يسأل عميلك شيئًا ما إلى الذكاء الاصطناعي عن مطعمك، يستطيع الذكاء الاصطناعي الخاص بك الإجابة عليه بدقة . يمكن أن يؤدي هذا إلى إزالة الجهد الذي تبذله لبناء Chatbot، وبدلاً من ذلك يمكنك استخدام الذكاء الاصطناعي التوليدي الغني بمعارف محددة.
مثال للمحادثة:
You
: ما هي قائمة أسعار مطعمي في مدينة سورابايا؟
AI
: قائمة الأسعار:
قبل تثبيت البرنامج المساعد، تأكد من تثبيت المتطلبات الأساسية التالية:
npm install -g typescript
)لتثبيت هذا البرنامج المساعد، يمكنك تشغيل هذا الأمر أو باستخدام مدير الحزم المفضل لديك
npm install genkitx-hnsw
يحتوي هذا البرنامج المساعد على العديد من الوظائف على النحو التالي:
HNSW Indexer
لإنشاء فهرس متجه استنادًا إلى جميع البيانات والمعلومات التي قدمتها. سيتم استخدام مؤشر المتجهات هذا كمرجع معرفي لمسترد HNSW.HNSW Retriever
للحصول على استجابة الذكاء الاصطناعي التوليدية باستخدام نموذج Gemini كقاعدة غنية بالمعرفة الإضافية والسياق استنادًا إلى مؤشر المتجهات الخاص بك. يعد هذا استخدامًا لتدفق البرنامج الإضافي Genkit لحفظ البيانات في متجر المتجهات باستخدام HNSW Vector Store وGemini Embedder وGemini LLM.
قم بإعداد بياناتك أو مستنداتك في مجلد
قم باستيراد البرنامج المساعد إلى مشروع Genkit الخاص بك
import { hnswIndexer } from " genkitx-hnsw " ;
export default configureGenkit({
plugins: [
hnswIndexer({ apiKey: " GOOGLE_API_KEY " })
]
}) ;
افتح Genkit UI واختر البرنامج المساعد المسجل HNSW Indexer
قم بتنفيذ التدفق باستخدام معلمة الإدخال والإخراج المطلوبة
dataPath
: مسار البيانات والمستندات الأخرى الذي يجب أن يتعلمه الذكاء الاصطناعيindexOutputPath
: مسار الإخراج المتوقع لفهرس متجر Vector الخاص بك والذي تتم معالجته بناءً على البيانات والمستندات التي قدمتها سيتم حفظ مخزن المتجهات في مسار الإخراج المحدد. سيتم استخدام هذا الفهرس لعملية الإنشاء الفوري باستخدام البرنامج الإضافي HNSW Retriever. يمكنك متابعة التنفيذ باستخدام البرنامج المساعد HNSW Retriever
chunkSize: number
مقدار البيانات التي تتم معالجتها في المرة الواحدة. إنه مثل تقسيم مهمة كبيرة إلى أجزاء أصغر لجعلها أكثر قابلية للإدارة. من خلال تعيين حجم القطعة، نقرر مقدار المعلومات التي يتعامل معها الذكاء الاصطناعي دفعة واحدة، مما قد يؤثر على سرعة ودقة عملية التعلم الخاصة بالذكاء الاصطناعي.
default value : 12720
separator: string
أثناء إنشاء فهرس متجه، يتم استخدام رمز أو حرف لفصل أجزاء مختلفة من المعلومات في بيانات الإدخال. فهو يساعد الذكاء الاصطناعي على فهم أين تنتهي وحدة من البيانات وتبدأ وحدة أخرى، مما يمكّنه من معالجة البيانات والتعلم منها بشكل أكثر فعالية.
default value : "n"
يعد هذا استخدامًا لتدفق البرنامج الإضافي Genkit لمعالجة المطالبة الخاصة بك باستخدام نموذج Gemini LLM المخصب بمعلومات أو معرفة إضافية ومحددة ضمن قاعدة بيانات HNSW Vector التي قدمتها. مع هذا البرنامج المساعد سوف تحصل على استجابة LLM مع سياق محدد إضافي.
قم باستيراد البرنامج المساعد إلى مشروع Genkit الخاص بك
import { googleAI } from " @genkit-ai/googleai " ;
import { hnswRetriever } from " genkitx-hnsw " ;
export default configureGenkit({
plugins: [
googleAI (),
hnswRetriever({ apiKey: " GOOGLE_API_KEY " })
]
}) ;
تأكد من استيراد مكون GoogleAI الإضافي لموفر Gemini LLM Model، حاليًا يدعم هذا المكون الإضافي Gemini فقط، وسيوفر المزيد من النماذج قريبًا!
افتح Genkit UI واختر Plugin HNSW Retriever
المسجل، وقم بتنفيذ التدفق باستخدام المعلمة المطلوبة
prompt
: اكتب مطالبتك حيث ستحصل على إجابات ذات سياق أكثر إثراء بناءً على المتجه الذي قدمته.indexPath
: حدد مسار فهرس المتجهات للمجلد الذي تريد استخدامه كمرجع للمعرفة، حيث يمكنك الحصول على مسار الملفات هذا من البرنامج المساعد HNSW Indexer.في هذا المثال، دعونا نحاول أن نسأل عن معلومات قائمة أسعار أحد المطاعم في مدينة سورابايا، حيث تم توفيرها ضمن مؤشر المتجهات.
يمكننا كتابة الموجه وتشغيله، وبعد انتهاء التدفق، سوف تحصل على استجابة غنية بمعرفة محددة بناءً على فهرس المتجهات الخاص بك.
temperature: number
في عشوائية المخرجات المتولدة. تؤدي درجات الحرارة المنخفضة إلى مخرجات أكثر حتمية، حيث يختار النموذج الرمز المميز الأكثر احتمالاً في كل خطوة. تؤدي درجات الحرارة المرتفعة إلى زيادة العشوائية، مما يسمح للنموذج باستكشاف الرموز المميزة الأقل احتمالًا، مما قد يؤدي إلى إنشاء نص أكثر إبداعًا ولكن أقل تماسكًا.
default value : 0.1
maxOutputTokens: number
تحدد هذه المعلمة الحد الأقصى لعدد الرموز المميزة (الكلمات أو الكلمات الفرعية) التي يجب أن ينشئها النموذج في خطوة استدلال واحدة. يساعد على التحكم في طول النص الذي تم إنشاؤه.
default value : 500
topK: number
يقوم أخذ عينات Top-K بتقييد اختيارات النموذج إلى الرموز المميزة الأكثر احتمالاً لـ K في كل خطوة. يساعد هذا في منع النموذج من النظر في الرموز المميزة النادرة أو غير المحتملة، مما يؤدي إلى تحسين تماسك النص الذي تم إنشاؤه.
default value : 1
topP: number
أخذ العينات Top-P، المعروف أيضًا باسم أخذ العينات النواة، يأخذ في الاعتبار التوزيع الاحتمالي التراكمي للرموز المميزة ويختار أصغر مجموعة من الرموز المميزة التي يتجاوز احتمالها التراكمي عتبة محددة مسبقًا (غالبًا ما يُشار إليها بـ P). يسمح هذا بالاختيار الديناميكي لعدد الرموز المميزة التي يتم أخذها في الاعتبار في كل خطوة، اعتمادًا على احتمالية ظهور الرموز المميزة.
default value : 0
stopSequences: string[]
هذه هي تسلسلات من الرموز المميزة التي، عند إنشائها، تشير إلى النموذج لإيقاف إنشاء النص. يمكن أن يكون هذا مفيدًا للتحكم في طول أو محتوى المخرجات التي تم إنشاؤها، مثل التأكد من توقف النموذج عن الإنشاء بعد الوصول إلى نهاية الجملة أو الفقرة.
default value : []
الترخيص: أباتشي 2.0