🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
الصفحة الرئيسية
  • النماذج
  • Home
  • Docs
  • النماذج

  • التضمينات

  • لمحة عامة

نظرة عامة على التضمين

التضمين هو مفهوم للتعلم الآلي لتعيين البيانات في فضاء عالي الأبعاد، حيث يتم وضع البيانات ذات الدلالات المتشابهة بالقرب من بعضها البعض. وعادةً ما تكون شبكة عصبية عميقة من BERT أو غيرها من عائلات المحولات، يمكن لنموذج التضمين أن يمثل دلالات النصوص والصور وأنواع البيانات الأخرى بشكل فعال بسلسلة من الأرقام المعروفة باسم المتجهات. الميزة الرئيسية لهذه النماذج هي أن المسافة الرياضية بين المتجهات في الفضاء عالي الأبعاد يمكن أن تشير إلى تشابه دلالات النصوص أو الصور الأصلية. وتفتح هذه الخاصية العديد من تطبيقات استرجاع المعلومات، مثل محركات البحث على الويب مثل Google وBing، والبحث عن المنتجات والتوصيات على مواقع التجارة الإلكترونية، ونموذج التوليد المعزز للاسترجاع (RAG) الذي شاع مؤخرًا في الذكاء الاصطناعي التوليدي.

هناك فئتان رئيسيتان من التضمينات، تنتج كل منهما نوعًا مختلفًا من المتجهات:

  • التضمين الكثيف: تمثل معظم نماذج التضمين المعلومات كمتجه ذي نقطة عائمة من مئات إلى آلاف الأبعاد. ويسمى الناتج متجهات "كثيفة" لأن معظم الأبعاد لها قيم غير صفرية. على سبيل المثال، يُخرج نموذج التضمين مفتوح المصدر الشهير BAAI/bge-base-en-v1.5 متجهات مكونة من 768 رقم فاصلة عائمة (متجه عائم ذو 768 بُعدًا).

  • التضمين المتناثر: في المقابل، تحتوي متجهات مخرجات التضمينات المتفرقة على معظم أبعادها صفر، أي المتجهات "المتفرقة". هذه المتجهات غالبًا ما يكون لها أبعاد أعلى بكثير (عشرات الآلاف أو أكثر) والتي يتم تحديدها حسب حجم المفردات الرمزية. يمكن توليد المتجهات المتفرقة بواسطة الشبكات العصبية العميقة أو التحليل الإحصائي للنصوص. ونظرًا لقابليتها للتفسير وقدرات التعميم الأفضل خارج النطاق، يتم اعتماد التضمينات المتفرقة بشكل متزايد من قبل المطورين كمكمل للتضمينات الكثيفة.

Milvus هي قاعدة بيانات متجهة مصممة لإدارة البيانات المتجهة وتخزينها واسترجاعها. من خلال دمج نماذج التضمين وإعادة التصنيف السائدة، يمكنك بسهولة تحويل النص الأصلي إلى متجهات قابلة للبحث أو إعادة تصنيف النتائج باستخدام نماذج قوية لتحقيق نتائج أكثر دقة لـ RAG. يعمل هذا التكامل على تبسيط عملية تحويل النص وإلغاء الحاجة إلى مكونات تضمين أو إعادة ترتيب إضافية، وبالتالي تبسيط عملية تطوير RAG والتحقق من صحة النتائج.

لإنشاء تضمينات أثناء العمل، راجع استخدام نموذج PyMilvus لتوليد تضمينات نصية.

وظيفة التضمينالنوعواجهة برمجة التطبيقات أو مفتوحة المصدر
Openaiكثيفةواجهة برمجة التطبيقات
محول الجملةكثيفمفتوح المصدر
سبليدمتناثرمفتوح المصدر
بجي-م3هجينمفتوح المصدر
فوياجايكثيفواجهة برمجة التطبيقات
جيناكثيفةواجهة برمجة التطبيقات
التماسككثيفواجهة برمجة التطبيقات
مدربكثيفمفتوح المصدر
ميسترال للذكاء الاصطناعيكثيفواجهة برمجة التطبيقات
نوميكسكثيفواجهة برمجة التطبيقات
mGTEهجينمفتوح المصدر

مثال 1: استخدام دالة التضمين الافتراضية لتوليد متجهات كثيفة

لاستخدام دالات التضمين مع Milvus، قم أولاً بتثبيت مكتبة عميل PyMilvus مع الحزمة الفرعية model التي تغلف جميع الأدوات المساعدة لتوليد التضمين.

pip install "pymilvus[model]"

تدعم الحزمة الفرعية model نماذج التضمين المختلفة، من OpenAI، ومحولات الجملة، و BGE M3، إلى نماذج SPLADE المدربة مسبقًا. وللتبسيط، يستخدم هذا المثال DefaultEmbeddingFunction وهو نموذج محولات الجمل من طراز MiniLM-L6-v2 بالكامل، ويبلغ حجم النموذج حوالي 70 ميغابايت وسيتم تنزيله أثناء الاستخدام الأول:

from pymilvus import model

# This will download "all-MiniLM-L6-v2", a light weight model.
ef = model.DefaultEmbeddingFunction()

# Data from which embeddings are to be generated 
docs = [
    "Artificial intelligence was founded as an academic discipline in 1956.",
    "Alan Turing was the first person to conduct substantial research in AI.",
    "Born in Maida Vale, London, Turing was raised in southern England.",
]

embeddings = ef.encode_documents(docs)

# Print embeddings
print("Embeddings:", embeddings)
# Print dimension and shape of embeddings
print("Dim:", ef.dim, embeddings[0].shape)

الناتج المتوقع مشابه لما يلي:

Embeddings: [array([-3.09392996e-02, -1.80662833e-02,  1.34775648e-02,  2.77156215e-02,
       -4.86349640e-03, -3.12581174e-02, -3.55921760e-02,  5.76934684e-03,
        2.80773244e-03,  1.35783911e-01,  3.59678417e-02,  6.17732145e-02,
...
       -4.61330153e-02, -4.85207550e-02,  3.13997865e-02,  7.82178566e-02,
       -4.75336798e-02,  5.21207601e-02,  9.04406682e-02, -5.36676683e-02],
      dtype=float32)]
Dim: 384 (384,)

مثال 2: توليد متجهات كثيفة ومتناثرة في مكالمة واحدة باستخدام نموذج BGE M3

في هذا المثال، نستخدم في هذا المثال نموذج BGE M3 الهجين لتضمين النص في كل من المتجهات الكثيفة والمتناثرة واستخدامها لاسترداد المستندات ذات الصلة. الخطوات الإجمالية هي كما يلي:

  1. تضمين النص كمتجهات كثيفة ومتناثرة باستخدام نموذج BGE-M3;

  2. إعداد مجموعة Milvus لتخزين المتجهات الكثيفة والمتناثرة;

  3. إدراج البيانات في ملفوس;

  4. البحث وفحص النتيجة.

أولاً، نحتاج إلى تثبيت التبعيات اللازمة.

from pymilvus.model.hybrid import BGEM3EmbeddingFunction
from pymilvus import (
    utility,
    FieldSchema, CollectionSchema, DataType,
    Collection, AnnSearchRequest, RRFRanker, connections,
)

استخدم BGE M3 لترميز المستندات والاستعلامات لتضمين الاسترجاع.

# 1. prepare a small corpus to search
docs = [
    "Artificial intelligence was founded as an academic discipline in 1956.",
    "Alan Turing was the first person to conduct substantial research in AI.",
    "Born in Maida Vale, London, Turing was raised in southern England.",
]
query = "Who started AI research?"

# BGE-M3 model can embed texts as dense and sparse vectors.
# It is included in the optional `model` module in pymilvus, to install it,
# simply run "pip install pymilvus[model]".

bge_m3_ef = BGEM3EmbeddingFunction(use_fp16=False, device="cpu")

docs_embeddings = bge_m3_ef(docs)
query_embeddings = bge_m3_ef([query])

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟