قواعد بيانات المتجهات: ذاكرة الذكاء الاصطناعي
يستخدم SQL المطابقة الدقيقة للكلمات الرئيسية. تستخدم قواعد بيانات المتجهات البحث الدلالي. كيفية بناء محركات بحث تفهم أن "Scarlet" يشبه "Red".
تاريخ البحث: من SQL إلى المتجهات
لفهم سبب أهمية قواعد بيانات المتجهات، علينا أن ننظر إلى تاريخ استرجاع المعلومات.
الجيل الأول: التطابق التام (السبعينيات)
عامل تشغيل SQL LIKE.
الاستعلام: `اختر * من المنتجات حيث الوصف مثل ‘%dress%”.
هذا ثنائي. إما أنه يحتوي على السلسلة “فستان” أو لا يحتوي عليه.
إذا قام المستخدم بكتابة “ملابس”، فلن يحصل على أي نتائج.
أجبر هذا المستخدمين على تعلم “البحث والتحدث” (كتابة كلمات رئيسية محددة يعرفون أنها ستنجح).
الجيل الثاني: المؤشرات المقلوبة (التسعينيات)
لوسين، Elasticsearch، Algolia.
يقوم هذا بتقسيم النص إلى رموز مميزة (["أزرق"، "فستان"])، وإزالة كلمات التوقف ("the"، "a")، وإجراء عملية نبع ("running" -> "run").
ثم يقومون بعد ذلك بتسجيل المستندات باستخدام TF-IDF (تردد المصطلح - تردد المستند العكسي) أو BM25.
سمح هذا بالمطابقة الغامضة والتسامح مع الأخطاء المطبعية.
لكنها ما زالت فاشلة في المعنى.
لا يتطابق “المعطف الدافئ” مع “سترة الشتاء” في محرك الكلمات الرئيسية ما لم تتم مرادفته يدويًا.
الجيل الثالث: البحث الدلالي (2020)
المتجهات.
لم نعد ننظر إلى الكلمات. نحن ننظر إلى المفاهيم.
لم تعد كلمة “King” عبارة عن سلسلة مكونة من 4 أحرف (K-i-n-g).
إنها نقطة في فضاء ذو 1536 بعدًا.
وتخمين ماذا؟ نقطة “الملكة” بجوارها مباشرة.
باستخدام تشابه جيب التمام، يمكننا العثور على المستندات المتشابهة من الناحية المفاهيمية، حتى لو كانت لا تشترك في أي كلمات رئيسية.
لماذا يناقش Maison Code هذا الأمر
نحن لا نبني أشرطة البحث؛ نحن نبني محركات الاكتشاف. بالنسبة لعملائنا الذين لديهم كتالوجات تزيد عن 1000 وحدة SKU، يعد البحث القياسي بمثابة قاتل للتحويلات. قمنا مؤخرًا بتنفيذ بحث مختلط عن علامة تجارية للأثاث الفاخر:
- التحدي: بحث المستخدمون عن “Vibes” (“جمالية مريحة لزاوية القراءة”)، وليس الكلمات الرئيسية (“كرسي مخملي”).
- الإجراء: قمنا بتوجيه الكتالوج بأكمله باستخدام OpenAI Embeddings.
- النتيجة: انخفض معدل الارتداد على صفحات البحث بنسبة 35%. نحن نؤمن أنه في عام 2026، يجب أن يكون البحث دلاليًا وليس نحويًا.
فهم التضمينات (الرياضيات)
كيف يفهم الكمبيوتر “المعنى”؟ يقوم بتحويل النص إلى أرقام. تسمى هذه العملية التضمين.
تخيل رسمًا بيانيًا بسيطًا ثنائي الأبعاد لجميع المفاهيم.
- المحور X: الملكية (ما مدى ملكيتها؟)
- المحور ص: الجنس (المذكر مقابل المؤنث)
الآن دعونا نرسم بعض الكلمات:
- “ملك”:
[0.9, 0.9](ملكي جدًا، مذكر) - “الملكة”:
[0.9, 0.1](ملكي جدًا، مؤنث) - “رجل”:
[0.1، 0.9](ليس ملكيًا، مذكر) - “امرأة”:
[0.1، 0.1](ليست ملكية، مؤنث)
هنا هو السحر. يمكنك القيام بالرياضيات بهذه الكلمات. ملك - رجل + امرأة = ?
[0.9، 0.9] - [0.1، 0.9] + [0.1، 0.1]= [0.9، 0.1]= الملكة.
هذا هو حرفيًا كيف “يفكّر” حاملو شهادة LLM. إنهم يفهمون العلاقات عبر الحساب المتجه. تستخدم النماذج الحديثة مثل “text-embedding-3-small” من OpenAI 1536 بُعدًا (وليس 2 فقط) لالتقاط الفروق الدقيقة مثل المشاعر واللون والإلحاح والشكليات ومئات من الميزات اللغوية الأخرى التي لا يمكننا حتى تسميتها.
مكدس قاعدة بيانات المتجهات
لا يمكنك تخزين هذه المتجهات في قاعدة بيانات MySQL عادية بكفاءة. تم تحسين قواعد البيانات القياسية لفهرسة B-Tree (الفرز أبجديًا رقميًا). تم تحسين قواعد بيانات Search Vector للبحث عن أقرب جار تقريبي (ANN). قد يستغرق مسح مليون متجه للعثور على أقرب متجه ثوانٍ (المسح الخطي). تستخدم قواعد بيانات المتجهات الرسوم البيانية HNSW (عالم صغير قابل للملاحة الهرمي) للقيام بذلك بالمللي ثانية.
أفضل اللاعبين:
- Pinecone: مُدار ومعتمد على السحابة. معيار الصناعة. من السهل أن تبدأ.
- Weaviate: مفتوح المصدر ومعياري. يسمح بتخزين الكائنات بجانب المتجهات. جيد للاستضافة الذاتية.
- ميلفوس: نطاق عالٍ، زيليز. بنيت لمليارات من المتجهات.
- pgvector: مكون إضافي لـ PostgreSQL. رائع إذا كنت تريد الاحتفاظ بكل شيء في مكان واحد (يدعم Supabase هذا).
مصفوفة المقارنة
| ميزة | كوز الصنوبر | بجفيكتور | ويفييت |
|---|---|---|---|
| النوع | ادارة العلاقات مع | ملحق بوستجرس | OSS / مُدار |
| ** الكمون ** | منخفض للغاية | متوسطة | منخفض |
| التعقيد | منخفض | منخفض | متوسطة |
| التكلفة | $$$ | $ (مجاني إذا تمت استضافته ذاتيًا) | $$ |
| تصفية البيانات الوصفية | ممتاز | جيد (SQL) | ممتاز |
التنفيذ: إنشاء محرك بحث دلالي
إليك كيفية إنشاء “البحث حسب المعنى” باستخدام Node.js وPinecone.
استيراد { Pinecone } من '@pinecone-database/pinecone'؛
استيراد OpenAI من "openai"؛
// تهيئة العملاء
const pinecone = new Pinecone({ apiKey:process.env.PINECONE_KEY });
const openai = new OpenAI({ apiKey:process.env.OPENAI_KEY });
مؤشر const = pinecone.index('maison-products');
وظيفة البحث غير المتزامنة (userQuery: string) {
console.log("البحث عن: ${userQuery}`);
// 1. تحويل استعلام المستخدم إلى متجه
تضمين const = انتظار openai.embeddings.create({
النموذج: "تضمين النص-3-صغير"،
الإدخال: استعلام المستخدم،
});
const Vector = Embedding.data[0].embedding;
// 2. الاستعلام عن قاعدة بيانات Vector لأقرب الجيران
نتائج ثابتة = انتظار الفهرس.الاستعلام({
ناقلات: ناقلات،
topK: 5, // احصل على أفضل 5 مباريات
تضمين البيانات الوصفية: صحيح،
// اختياري: التصفية حسب الفئة
الفلتر: {
السعر: { $lt: 200 } // العناصر الرخيصة فقط
}
});
// 3. عرض النتائج
results.matches.forEach(match => {
console.log(`تم العثور على: ${match.metadata.title} (النتيجة: ${match.score})`);
});
}
// الاستخدام
searchProducts("شيء أنيق لحفل زفاف صيفي بأقل من 200 دولار");
ماذا يحدث:
- يقوم OpenAI بتحويل “شيء أنيق…” إلى ناقل.
- يحسب Pinecone المسافة بين هذا المتجه وكل منتج في الكتالوج الخاص بك.
- تجد “فستان حريري مزين بالزهور” و”بدلة من الكتان”.
- على الرغم من أن كلمة “زفاف” لا تظهر أبدًا في وصف المنتج! يعرف نموذج التضمين أن “الحرير” و”الكتان” مرتبطان بـ “حفلات الزفاف الصيفية”.
التحدي: البحث المختلط
يعد البحث عن المتجهات أمرًا سحريًا، لكنه ليس مثاليًا. في بعض الأحيان يهلوس أو يفتقد تطابقات الكلمات الرئيسية الواضحة.
- الاستعلام: “معرف المنتج 1234”.
- بحث المتجهات: قد يعرض “معرف المنتج 1235” لأن الأرقام متقاربة رياضيًا في مساحة المتجهات. يعامل المعرف كميزات مميزة.
- المستخدم: “لقد كتبت الرقم التعريفي الدقيق، لماذا أعطيتني الرقم الخطأ؟”
الحل: البحث المختلط. يمكنك دمج البحث عن الكلمات الرئيسية (BM25) مع البحث المتجه (كثيف).
- نقاط الكلمات الرئيسية: 1.0 (مطابقة تامة)
- نقاط المتجهات: 0.2 (مطابقة منخفضة)
- المجموع المرجح: تفوز مطابقة الكلمة الرئيسية.
يدعم Pinecone وWeaviate الآن البحث المختلط خارج الصندوق (ناقلات “متناثرة كثيفة”). يمكنك تمرير كل من المتجه الكثيف (التضمين) والمتجه المتناثر (الكلمات الأساسية) إلى الاستعلام. هذا هو المعيار الذهبي للبحث في التجارة الإلكترونية.
RAG: الجيل المعزز للاسترجاع
تعد قواعد بيانات المتجهات أيضًا العمود الفقري لـ Enterprise AI (RAG). (راجع LLM Fine-Tuning). عندما تطرح سؤالاً على ChatGPT حول مستنداتك، فإنه يستخدم بشكل صارم خطوة بحث المتجهات خلف الكواليس للعثور على “رقم الصفحة” قبل الإجابة. بدون قواعد بيانات Vector، يكون الذكاء الاصطناعي المؤسسي مستحيلًا. لا يمكنك تغذية 10000 صفحة في الموجه. يمكنك تغذية الصفحات الثلاث الأكثر صلة. يبحث Vector Search عن تلك الصفحات الثلاث.
وجهة نظر المتشككين: متى لا يجب استخدام المتجهات
هناك ضجة كبيرة حول المتجهات في الوقت الحالي، لكنها باهظة الثمن ومعقدة. لا تستخدم بحث المتجهات إذا:
- لديك أقل من 100 عنصر: ما عليك سوى استخدام
Array.filter(). - ** يبحث المستخدمون لديك عن طريق SKU الدقيق **: بحث المتجهات سيئ جدًا عند استخدام الرموز الدقيقة.
- ميزانيتك هي 0 دولار: تكلفة عمليات التضمين أموال (OpenAI API). قواعد بيانات المتجهات تكلف أموالاً. غالبًا ما تكون الغوليا أرخص و”جيدة بما فيه الكفاية”.
الأسئلة الشائعة
س: هل يمكنني استخدام المتجهات للبحث عن الصور؟ ج: نعم! يمكن لنماذج مثل CLIP (التدريب المسبق على اللغة التقابلية للصورة) تضمين الصور في نفس مساحة المتجهات مثل النص. يمكنك البحث عن “كلب” والعثور على صورة كلب.
س: كم مرة يجب أن أقوم بتحديث الفهرس؟ ج: في الوقت الحقيقي. إذا نفد مخزون أحد المنتجات، فيجب عليك تحديث البيانات التعريفية في Pinecone على الفور حتى لا يعرض البحث عناصر OOS.
10. التكميم: خفض التكاليف
النواقل ثقيلة (Float32). 1 مليون متجه * 1536 خافت * 4 بايت = 6 جيجابايت من ذاكرة الوصول العشوائي. هذا مكلف. التكميم يضغط المتجهات إلى Int8 أو Binary. نفقد بعض الدقة (تنخفض الدقة بنسبة 1%)، ولكن الحجم ينخفض بمقدار 4x-32x. للحصول على كتالوج يضم 100 مليون منتج، يكون التكميم إلزاميًا. يتعامل Pinecone مع هذا تلقائيًا.
11. إعادة الترتيب: التمريرة الثانية
يعثر بحث Vector على عناصر “متشابهة من حيث المفهوم”. لكنها لا تعرف “قواعد العمل”. قد تقوم بإرجاع عنصر غير متوفر في المخزون لأنه تطابق دلالي مثالي. نحن نستخدم إعادة الترتيب (نموذج التشفير المتقاطع مثل Cohere).
- استرداد: احصل على أفضل 100 مرشح من Vector DB (سريع).
- إعادة التصنيف: قم بتمريرها من خلال نموذج ثقيل يتحقق من حالة المخزون والهامش والتداخل الدقيق للكلمات الرئيسية.
- الإرجاع: أعلى 10 للمستخدم. يوفر هذا “الاسترجاع على مرحلتين” أفضل توازن بين السرعة والدقة.
13. تحت الغطاء: خوارزمية HNSW
كيف يبحث Pinecone عن مليار متجه في 10 مللي ثانية؟ يستخدم ** الرسوم البيانية الهرمية للعالم الصغير القابلة للملاحة **. تخيل خريطة متعددة الطبقات.
- الطبقة العليا: الطرق السريعة عالية السرعة التي تربط المدن البعيدة.
- الطبقة السفلية: الشوارع المحلية. يبدأ الاستعلام من الأعلى، ثم يقوم بالتكبير إلى المنطقة العامة للمتجه، ثم ينخفض إلى الشوارع للعثور على المنزل المحدد. هذا هو تعقيد $O(log(N))$. المسح الخطي هو $O(N)$. هذا هو التقدم في علوم الكمبيوتر الذي جعل Vector Search قابلاً للتطبيق في الإنتاج.
14. تكلفة التضمين
لا تظهر المتجهات من فراغ. أنت تدفع لـ OpenAI لإنشائها. الأسعار رخيصة: 0.00013 دولار / 1 ألف رمز. تكلفة تضمين سلسلة هاري بوتر بأكملها (مليون رمز مميز) هي 0.13 دولار. ومع ذلك، بالنسبة لموقع المحتوى الذي ينشئه المستخدم (ملايين التعليقات يوميًا)، فإن هذا يضيف مبلغًا إضافيًا. التحسين: استخدم نماذج مفتوحة المصدر (Hugging Face) تعمل على وحدة معالجة الرسومات/وحدة المعالجة المركزية الخاصة بك (ONNX Runtime) لإنشاء عمليات التضمين مجانًا. الجودة هي 95% من OpenAI، والتكلفة 0.
15. الاستنتاج
إذا أظهر بحث موقعك عبارة “لم يتم العثور على نتائج”، فأنت بذلك تترك أموالاً على الطاولة. لا يعرف المستخدمون مصطلحاتك الدقيقة. يتحدثون بقصد (“معطف دافئ”، “هدية رخيصة”، “شيء لأبي”). يعمل البحث المتجه على سد الفجوة بين القصد البشري ومخزون قاعدة البيانات. إنها الترقية من “استرجاع البيانات” إلى “استرجاع المعرفة”.
العثور على نتائج صفر؟
نحن نطبق أنظمة بحث Hybrid Vector Search للتأكد من أن عملائك يجدون دائمًا ما يحتاجون إليه.