جودة البحث في المتجهات لا تتعلق فقط بقاعدة البيانات. إنها تبدأ بالرياضيات التي تستخدمها لمقارنة التمثيلات. غالبًا ما تختار الفرق مقياس تشابه تقريبا بشكل عشوائي، ثم تتساءل لماذا تبدو جودة الاسترجاع غير متسقة.
الفرق العملي
يحترم مقياس تشابه جيب التمام الزاوية، مما يعني أنه يقيس ما إذا كانت المتجهات تشير إلى نفس الاتجاه. يجمع حاصل الضرب بين الزاوية والحجم.
تعتبر هذه الفروق مهمة لأن بعض نماذج التمثيلات تنتج متجهات مُعَنَاة وأخرى لا تفعل ذلك. إذا كانت المتجهات مُعَنَاة إلى طول وحدة، يصبح تشابه جيب التمام وحاصل الضرب متصلين ارتباطا وثيقا:
function dot(a: number[], b: number[]) {
return a.reduce((sum, value, index) => sum + value * b[index], 0);
}
function cosine(a: number[], b: number[]) {
const normA = Math.sqrt(dot(a, a));
const normB = Math.sqrt(dot(b, b));
return dot(a, b) / (normA * normB);
}
لماذا هذا مهم في الاسترجاع
إذا كان الحجم يحمل معنى في خط أنابيب التمثيل الخاص بك، فقد يكون حاصل الضرب مفيدا. إذا كانت التشابه الاتجاهي فقط هو المهم، فإن جيب التمام غالبا ما يكون الخيار الأكثر أمانًا.
هذا يعني أن المقياس الصحيح يعتمد على:
- ما إذا كانت التمثيلات مُعَنَاة
- ما إذا كان حجم المتجه يشفر إشارة مفيدة
- ما يتوقعه نموذج الاسترجاع الخاص بك
قاعدة أفضل
لا تختار جيب التمام أو حاصل الضرب لأن درساً فعل ذلك. تحقق من وثائق نموذج التمثيل، وتفقد ما إذا كانت المتجهات مُعَنَاة، وقيم المقياس مقابل أحكامك الفعلية عن الصلة.
البحث في المتجهات هو رياضيات بالإضافة إلى بيانات بالإضافة إلى توقعات المنتج. إن ترك أي من هذه الثلاثة عادة ما ينتج استرجاعاً ضعيفًا.
مزيد من القراءة