PRODمنصة BaaS الأوروبية السياديةافتح لوحة المعلومات →

الذكاء الاصطناعي الأصلي · 7 دقيقة للقراءة

حجم التضمين: 768، 1536 أو 3072 الأبعاد؟

Affane Daylami · Fondateur · 3 أبريل 2026

العودة إلى بلوق

إن الاختيار بين الأبعاد 768 و1536 و3072 ليس تعديلاً تجميليًا. فهو يحدد حجم تخزين قاعدة بيانات المتجهات الخاصة بك، ونوع الفهرس الذي يمكن استخدامه والسعر المدفوع لكل استدعاء لواجهة برمجة التطبيقات. توثق OpenAI نفسها فجوة الجودة بين نموذجيها الحاليين: تضمين النص 3-صغير، في 1536 بُعدًا أصليًا، حيث وصلت إلى 62.3% في معيار MTEB، مقارنة بـ 64.6% في تضمين النص 3-كبير في 3072 بُعدًا أصليًا. مكسب حقيقي، ولكن يتم دفع ثمنه في مكان آخر مما قد تعتقد.

تم إنشاء هذا النص الإنجليزي تلقائيًا من النص الأصلي الفرنسي ولم تتم مراجعته بعد.
تمت ترجمة هذه الصفحة تلقائيًا. النسخة الإنجليزية موثوقة.

تستند هذه المقالة إلى الوثائق الرسمية التي نشرتها OpenAI، وعلى تعليقات الفريق التي تم جمعها في مناقشات مجتمع مطوري OpenAI، وعلى السلوك الذي تم التحقق منه في كود Aurabase، الذي يوجه أصلاً فئات الأبعاد الثلاثة هذه إلى ثلاثة أعمدة متجهة متميزة. تم تأريخ كل شخصية خارجية ومصدرها؛ للتعرف على المنهجية التي نطبقها على قياساتنا الخاصة، راجع ركيزة المنهجية المرجعية .

الأساسيات
  • تظل أبعاد 1536 هي الخيار الأكثر توازنًا بالنسبة لغالبية الحالات: تضمين النص الأصلي-3-صغير، أو تضمين النص المقتطع-3-كبير، دون الخروج عن دعم HNSW الأصلي لـ pgvector.
  • توفر أبعاد 3072 (text-embedding-3-large) أعلى درجة MTEB نشرتها OpenAI (64.6% مقابل 62.3%)، ولكنها تتجاوز حد البعد 2000 لنوع pgvector's vector: يتطلب مؤشر HNSW تحويلًا إلى halfvec.
  • يؤدي اقتطاع التضمين عبر معلمة OpenAI dimensions (تقنية Matryoshka) إلى تقليل التخزين وتسريع البحث، لكنه لا يقلل من السعر: يعتمد هذا على النموذج الذي تم الاستعلام عنه، وليس على حجم المتجه الذي تم إرجاعه.
  • بفضل تخزين halfvec (2 بايت لكل بُعد)، يشغل المتجه ذو 3072 بُعدًا نفس مساحة القرص الأولية في Aurabase كمتجه 1536 في vector الكلاسيكي (4 بايت لكل بُعد): حوالي 6 كيلوبايت.
  • يدعم Aurabase أصلاً 3 فئات أبعاد بالضبط، 768 و1536 و3072، كل منها في العمود الخاص بها (محدد في aura-ai/src/embeddings/mod.rs): لا يوجد حقل أبعاد مجاني.
#
نظرة عامة

768، 1536 أو 3072: ما الذي يتغير حقًا في كل مستوى

من الواضح أن الاختيار بين تضمين النص 3 صغير ونص تضمين 3 كبير في البداية يعني الاختيار بين 1536 و3072 بُعدًا أصليًا، حتى قبل الحديث عن الاقتطاع. يلخص الجدول أدناه الحقائق التي يمكن التحقق منها على المستويات الثلاثة التي يتعرف عليها pgvector أصلاً على جانب الفهرسة، ومسار Aurabase.

المعيار768 الأبعاد1536 الأبعاد3072 الأبعاد
النموذج (النماذج) ذات الصلةاقتطاع OpenAI، أو النموذج القديم/مفتوح المصدر (الأصلي).تضمين النص-3-صغير (أصلي) أو مبتور 3-كبيرتضمين النص-3-كبير (أصلي)
متوسط درجة MTEBلم يتم إصداره أصلاً بواسطة OpenAI بهذا الحجم62,3 %64,6 %
سعر OpenAI الإرشادي / مليون رمزيعتمد على الموديل المطلوب وليس على الحجم0.02 USD (صغير) أو 0.13 USD (كبير مقطوع)0.13 دولار (تضمين النص 3 كبير)
إجمالي الوزن المخزن / الناقل3 كيلو بايت (float32)6 كيلو بايت (float32)12 كيلو بايت (متجه) أو 6 كيلو بايت (halfvec، Aurabase)
مؤشر pgvector الأصلي لـ HNSWنعمنعملا: مطلوب نصف مصبوب (> 2000 خافت)
عمود Aurabase (رمز تم التحقق منه)التضمين_768التضمين_1536embedding_3072

المصادر: OpenAI، المدونة الرسمية "نماذج التضمين الجديدة وتحديثات واجهة برمجة التطبيقات"، 25 يناير 2024 (نتائج MTEB وأسعار الإطلاق، تحقق من صفحة التسعير الحالية قبل الاستخدام)؛ aura-ai/src/embeddings/mod.rs، Aurabase (دعم الأعمدة والفهرس، تم التحقق منه في 24 أغسطس 2026).

#
التخزين

التأثير على التخزين: الحساب الذي يغير كل شيء

يتم تخزين التضمين مثل مجموعة من أرقام الفاصلة العائمة. في pgvector، يقوم النوع vector الكلاسيكي بتشفير كل بُعد على 4 بايت (float32): وبالتالي، فإن 768 بُعدًا تزن حوالي 3 كيلو بايت من البيانات الأولية لكل متجه، و1536 بُعدًا حوالي 6 كيلو بايت، و3072 بُعدًا حوالي 12 كيلو بايت، حتى قبل حساب رأس pgvector والحمل الزائد لصفحة Postgres.

هذا هو المكان الذي يأتي فيه نوع halfvec من pgvector، الذي يشفر كل بُعد في 2 بايت (float16) بدلاً من 4. يزن المتجه ذو 3072 بُعدًا المخزن في halfvec حوالي 6 كيلوبايت: بالضبط وزن المتجه ذي 1536 بُعدًا المخزن في vectorالكلاسيكي.

3 كيلو بايت
768 شمس
المتجه، float32 (4 بايت/خافت)
6 كيلو بايت
1536 شمس
المتجه، float32: نفس وزن 3072 في halfvec
12 كيلو بايت
3072 شمس
المتجه الكلاسيكي، float32 (قبل صب halfvec)

نتيجة مباشرة وغير بديهية: في Aurabase، الانتقال من 1536 إلى 3072 أبعاد لا يضاعف مساحة التخزين الفعلية على القرص، حيث يتم الاستعلام عن عمود embedding_3072 عبر قالب halfvec. وبالتالي فإن التكلفة الإضافية الحقيقية لأبعاد 3072 لا تتمثل في القرص بشكل أساسي: إنها سعر نموذج OpenAI المرتبط، ومخرجات دعم الفهرس الأصلي من النوع vector، المفصلة في القسم التالي.

#
بجفيكتور / هنسو

لماذا تغير أبعاد 3072 نوع الفهرس تحت pgvector

لا يسمح نوع vector من pgvector ببناء فهرس HNSW أو IVFFlat يتجاوز 2000 بُعد. وبالتالي فإن أبعاد 3072 تتجاوز هذا الحد: لا يمكن لاستعلام بحث متجه في عمود vector(3072) أن يعتمد على فهرس تقريبي، فهو يتراجع إلى فحص تسلسلي كامل، وهو غير قابل للاستخدام على مقياس مجموعة RAG في الإنتاج.

يتعامل رمز Aurabase مع هذه الحالة بشكل صريح: يتم تحويل العمود embedding_3072 إلى halfvec(3072) في كل إدراج واستعلام بحث، وهو نوع يمكن لـ pgvector فهرسته لما يصل إلى 4000 بُعد. يظل العمودان 768 و1536 أصليين vector، غير ملقيين، لأنهما لا يقتربان من الحد الأقصى.

embeddings/mod.rs (extrait simplifié)rust
// بالنسبة إلى 3072 (>2000)، لا تقوم HNSW بفهرسة النوع `المتجه` → cast halfvec
fn vec_query_parts(dims: usize) -> AuraResult<(&'static str, &'static str, &'static str)> {
    match dims {
        768  => Ok(("embedding_768",  "", "::vector")),
        1536 => Ok(("embedding_1536", "", "::vector")),
        3072 => Ok(("embedding_3072", "::halfvec(3072)", "::halfvec(3072)")),
        other => Err(...), // البعد غير معتمد
    }
}

تشرح هذه التفاصيل أيضًا سبب فشل بُعد التضمين غير المُدرج في [768, 1536, 3072] بشكل صريح على جانب Aurabase، بدلاً من قبوله ومن ثم فهرسته بشكل سيئ: يأتي اسم العمود دائمًا من قائمة مسموح بها ثابتة، وليس من قيمة مجانية يرسلها العميل أبدًا. للتعمق أكثر في إنشاء فهرس HNSW على Postgres بما يتجاوز هذه الحالة المحددة، راجع مقالتنا فهرس HNSW وبحث متجهات Postgres.

#
تكلفة واجهة برمجة التطبيقات

تقليل البعد دون فقدان كل شيء: اقتطاع Matryoshka من OpenAI

اعتبارًا من يناير 2024، تقبل واجهة برمجة التطبيقات Embeddings API الخاصة بـ OpenAI معلمة dimensions التي تعمل على تقصير المتجه الذي تم إرجاعه دون إعادة استدعاء نموذج مختلف. يُطلق على هذه التقنية اسم تعلم تمثيل ماتريوشكا: حيث يتم تدريب النموذج على تركيز المعلومات المفيدة في الأبعاد الأولى للمتجه، بحيث يفقد الاقتطاع الدقة تدريجيًا وليس بشكل مفاجئ.

توضح OpenAI فعالية هذه التقنية بمثال محدد في إعلانها: text-embedding-3-large، الذي تم اقتطاعه إلى 256 بُعدًا فقط، ولا يزال يتجاوز درجة MTEB الخاصة بـ text-embedding-ada-002 القديم المستخدم بحجمه الكامل البالغ 1536 بُعدًا (المصدر: OpenAI، المدونة الرسمية، 25 يناير 2024). ناقل أصغر بـ 12 مرة والذي يؤدي أداءً أفضل من المتجه الكامل، وفقًا لهذا المعيار المحدد.

llm/openai.rs (extrait, requête d'embedding)rust
let body = json!({
    "model": self.embed_model,       // على سبيل المثال "تضمين النص-3-كبير"
    "input": text,
    "dimensions": self.embed_dimensions, // يقتطع 3072 → القيمة التي تم تكوينها
});

نقطة مهمة، وغالبًا ما يُساء فهمها: الاقتطاع لا يقلل من السعر الذي يتم تحصيله. تتقاضى OpenAI رسومًا بناءً على النموذج الذي تم الاستعلام عنه، وليس حجم المتجه الذي يتم إرجاعه، نظرًا لأن التكلفة الفعلية هي الحساب الذي يتم إجراؤه على النص المُدخل. وبالتالي فإن طلب 1536 بُعدًا من text-embedding-3-large يكلف نفس سعر أبعاده الأصلية 3072 (المصدر: OpenAI، المدونة الرسمية، 25 يناير 2024)؛ فقط تتغير سرعة التخزين والبحث.

هذا هو بالضبط الاختيار الافتراضي لـ Aurabase، الذي تم التحقق منه في config/mod.rs: النموذج الذي تم تكوينه افتراضيًا هو text-embedding-3-large، لكن بُعد الإخراج الذي تم تكوينه افتراضيًا هو 1536، وليس 3072. وبالتالي تدفع الخدمة مقابل تمثيل النموذج الواسع، الذي يتم اقتطاعه ليظل في عمود vector قابل للفهرسة في HNSW الأصلي، دون الحاجة إلى قالب halfvec 3072.

#
القرار

البعد الذي تختاره وفقًا لحالة الاستخدام الخاصة بك

تظل أبعاد 1536 هي نقطة البداية المعقولة لغالبية RAG أو مشاريع البحث الدلالي: تظل درجة MTEB الخاصة بدمج النص 3-صغير (62.3%) قريبة من درجة النموذج الكبير، ويظل التخزين خفيفًا، والنوع الكلاسيكي vector من فهارس pgvector في HNSW دون أي تكوين معين.

يتم تبرير أبعاد 3072 عندما تكون المجموعة غامضة أو تقنية، حيث تترجم فجوة الجودة بين 62.3% و64.6% إلى نتائج بحث أفضل بشكل واضح على استعلاماتك الخاصة، وليس على معيار OpenAI العام. تشير العديد من تعليقات الفريق المسجلة في مناقشات مجتمع مطوري OpenAI إلى هذا الاتجاه: يتم قياس كسب 3072 بُعدًا على أساس كل حالة على حدة، ولا يمكن افتراض ذلك.

تعد أبعاد 768 مناسبة بشكل خاص عندما يكون للحجم الأسبقية على الفروق الدقيقة: مجموعة كبيرة حيث تكون ميزانية التخزين أو الحساب هي القيد الحقيقي، أو استخدام نموذج تضمين قديم بالفعل في 768 بُعدًا أصليًا.

قاعدة بسيطة قبل اتخاذ القرار

لا تقم بتعيين البعد حتى تقوم بقياس جودة البحث على عينة تمثيلية من مجموعتك الخاصة، وليس فقط النتيجة العامة لـ MTEB التي نشرتها OpenAI. متوسط ​​MTEB العشرات من المهام غير المتجانسة؛ مجموعة RAG الخاصة بك هي واحدة فقط.

يعد اختيار البعد هذا جزءًا من مكدس RAG أكبر، والتضمينات، وفهرس HNSW، والبحث المختلط، الذي توثقه صفحتنا Native AI.

#
الأسئلة المتداولة

ما نسأل عنه في أغلب الأحيان

هل يمكننا تغيير حجم مجموعة مفهرسة بالفعل دون إعادة فهرسة كل شيء؟+
لا، يقوم Aurabase بتصفية كل بحث دلالي حسب النموذج والبعد المحددين (عمودembedding_model + عمود مخصص للبعد). تصبح المجموعة المفهرسة في أبعاد 1536 غير مرئية للبحث الذي تم إجراؤه في 3072، والعكس صحيح: يتطلب تغيير البعد إعادة فهرسة المجموعة ضمن الفئة الجديدة.
هل يسمح لك الجوزاء بتجاوز أبعاد 3072؟+
لا. يحدد عميل Gemini الخاص بـ Aurabase البعد بشكل صريح عند 3072 (outputDimensionality). 3072 هو السقف المشترك للفئات الثلاث التي تدعمها Aurabase، جميع الموردين مجتمعين.
هل يجب عليك دائمًا اختيار أبعاد 3072 للحصول على أفضل النتائج؟+
ليس بالضرورة. يظل الفرق في درجة MTEB بين 1536 و3072 (62.3% مقابل 64.6% وفقًا لـ OpenAI) متواضعًا في مواجهة التغيير المعماري الذي ينطوي عليه 3072: إطلاق دعم HNSW الأصلي من النوع vector، وطاقم halfvec الإلزامي، وسعر النموذج الواسع. يجب التحقق من المكسب في مجموعتك قبل تبرير هذه التكلفة.
تضمين النص 3-صغير أم تضمين النص 3-كبير لمشروع RAG قيد الإنتاج؟+
ذلك يعتمد على الميزانية وطبيعة المجموعة، وليس قاعدة عالمية. يغطي تطبيق Text-embedding-3-small (1536 أبعادًا أصلية) غالبية الحالات بتكلفة أقل؛ يتم تبرير text-embedding-3-large في مجموعة غامضة حيث يتم قياس الكسب في الدقة بشكل ملموس في استعلامات الاختبار الخاصة بك، وليس فقط على النتيجة العامة لـ MTEB.
#
باختصار

الاختيار الصحيح ليس هو الأعظم، بل هو الأفضل قياسًا

الأبعاد 768 و1536 و3072 غير مقسمة على محور واحد. 3072 مكاسب في درجة MTEB التي نشرتها OpenAI، لكنها تترك دعم HNSW الأصلي لـ pgvector وتدفع ثمن النموذج الكبير، مهما كان البعد المطلوب في النهاية. يظل 1536 هو الرصيد الافتراضي الأكثر شيوعًا، بما في ذلك في Aurabase. يخدم 768 الحالات التي يكون فيها للحجم الأسبقية على الفروق الدقيقة.

تعمل معلمة dimensions الخاصة بـ OpenAI على تغيير السؤال الذي يجب طرحه: لم يعد السؤال "أي نموذج يجب اختياره"، ولكن "أي اقتطاع يجب قبوله، وما الربح الذي تم قياسه في مجموعتي". قبل الانتهاء من الاختيار في الإنتاج، اختبر جودة البحث على عينة حقيقية، وليس فقط على معيار عام. يقدم دليلنا خط أنابيب RAG المزود بـ pgvector تفاصيل الإعداد الكامل، بدءًا من الاستيعاب وحتى البحث المختلط.

هل أنت جاهز للنشر؟

الواجهة الخلفية الخاصة بك في خمس دقائق.

لا حاجة لبطاقة ائتمان · 500 ميجابايت مجانًا · 50000 MAU