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

هذا المشروع جزء من Llamapp
المتجهات المبسطة هو تطبيق ويب مصمم لتصور تضمينات المتجهات. يوفر هذا المشروع واجهة سهلة الاستخدام لإدخال النص ، وإنشاء تضمينات متجه ، وتصور أوجه تشابهها باستخدام المخططات التفاعلية. يوضح جوهر التطبيق مفهوم تشابه جيب التمام بين المتجهات ، مما يجعل من السهل فهم مدى تشابه قطع النص المشابهة في مساحة متعددة الأبعاد.
تضمينات المتجهات هي تمثيلات رقمية للنص الذي يلتقط المعنى الدلالي في مساحة عالية الأبعاد. يتم استخدامها في مختلف مهام معالجة اللغة الطبيعية (NLP) مثل تصنيف النص ، والتجميع ، وأنظمة التوصية. يتكون كل ناقل من مكونات متعددة تشفر معلومات حول ميزات النص.
تشابه جيب التمام هو مقياس يستخدم لقياس مدى تشابه المتجهات ، بناءً على جيب التمام للزاوية بينهما. يتراوح من -1 (متباينة تمامًا) إلى 1 (مشابه تمامًا). يتم استخدامه على نطاق واسع في تحليل النص لتحديد كيفية تعتمد قطعتين مماثلة من النص على تمثيلات المتجهات الخاصة بهم.
إليك مثال بسيط على كيفية عمل تشابه جيب التمام مع المتجهات الأساسية:
function calculateCosineSimilarity ( vec1 , vec2 ) {
const dotProduct = vec1 . reduce ( ( acc , val , idx ) => acc + val * vec2 [ idx ] , 0 ) ;
const magnitude1 = Math . sqrt ( vec1 . reduce ( ( acc , val ) => acc + val * val , 0 ) ) ;
const magnitude2 = Math . sqrt ( vec2 . reduce ( ( acc , val ) => acc + val * val , 0 ) ) ;
return dotProduct / ( magnitude1 * magnitude2 ) ;
}
// Example vectors
const vectorA = [ 1 , 2 , 3 ] ;
const vectorB = [ 4 , 5 , 6 ] ;
const similarity = calculateCosineSimilarity ( vectorA , vectorB ) ;
console . log ( `Cosine Similarity: ${ similarity . toFixed ( 2 ) } ` ) ; // Output: Cosine Similarity: 0.9746 عند تصور تضمينات المتجهات ، خاصةً عندما تحتوي على عدد كبير من العناصر ، يمكن أن يصبح الرسم البياني متجمعًا للغاية ويصعب تفسيره. لمعالجة هذا ، يتم استخدام وظيفة تجانس.
تساعد وظيفة التنعيم في تقليل الضوضاء في البيانات عن طريق حساب القيم على حجم نافذة محدد. هذا يجعل الرسم البياني أكثر قابلية للقراءة ويسمح بتصور أفضل للاتجاهات الكلية في البيانات.
إليك كيفية تنفيذ وظيفة التنعيم في التطبيق:
const smoothData = ( data , windowSize ) => {
const smoothed = [ ] ;
for ( let i = 0 ; i < data . length ; i ++ ) {
const start = Math . max ( 0 , i - Math . floor ( windowSize / 2 ) ) ;
const end = Math . min ( data . length , i + Math . floor ( windowSize / 2 ) + 1 ) ;
const window = data . slice ( start , end ) ;
const average = window . reduce ( ( sum , val ) => sum + val , 0 ) / window . length ;
smoothed . push ( average ) ;
}
return smoothed ;
} ;يمكن تبديل التنعيم أو إيقاف تشغيله باستخدام مربع اختيار في واجهة المستخدم ، مما يوفر المرونة للمستخدم.
نموذج Ollama و Nomic-Text-embed
http://localhost:11434 .nomic-embed-text في المحطة عن طريق الاتصال ollama pull nomic-embed-text
يساعد Ollama في تشغيل نماذج اللغة محليًا وكبيرة وصغيرة. نموذج التضمين المفتوح عالي الأداء في نص عالي الأداء مع نافذة سياق رمزي كبير.
تثبيت node.js و npm
استنساخ المستودع:
git clone www.github.com/rajatasusual/realtime-vector-embeddings.git
cd realtime-vector-embeddingsتثبيت التبعيات:
npm installقم بتشغيل الخادم:
npm run cli ابدأ في الكتابة في المحطة لإدخال النص والحصول على تضمينات متجه. سيتم حفظ النتائج والمؤامرة على أنها embedding_plot.png في الدليل الحالي.
يمكن العثور على ملف ENV في دليل جذر المشروع مع الإعدادات الافتراضية
PORT=3000
EMBEDDINGS_MODEL=nomic-embed-text
EMBEDDINGS_BASE_URL=http://localhost:11434
SMOOTH=TRUE

ابدأ خادم الويب :
npm startسيؤدي هذا إلى بدء الخادم مع المنفذ الافتراضي 3000.
فتح index.html .
استخدم حقل الإدخال لكتابة النص وانقر فوق "إرسال" لإنشاء تضمينات متجه. سيتم عرض النتائج على الرسم البياني ، ويمكنك التفاعل معها لعرض أوجه التشابه.
خيار التنعيم : استخدم مربع الاختيار "السلس" لتبديل التنعيم أو الإيقاف للحصول على تصور أفضل للرسم البياني.
هذا المشروع مرخص بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. انظر ملف الترخيص لمزيد من التفاصيل.