نماذج تضمين النصوص

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

نصيحة: للمعرفة الأساسية حول نماذج تضمين النصوص، يرجى الرجوع إلى البرنامج التعليمي المقدم حول نماذج تضمين النصوص

الفرق بين البحث بالفيكتور والبحث بالكلمات الرئيسية

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

فئة التضمينات هي نوع من الفئات مصممة خصيصًا للتفاعل مع نماذج تضمين النص. هناك العديد من مزودي نماذج التضمين (مثل OpenAI، Cohere، Hugging Face، إلخ)، وصممت هذه الفئة لتوفير واجهة قياسية لجميع المزودين.

تقوم فئة التضمينات بإنشاء التمثيل الفيكتوري للنص. باستخدام البحث بالفيكتور، يمكن القيام بعمليات بحث دلالية، على سبيل المثال، البحث عن أقرب مقاطع نصية مماثلة في الفضاء الفيكتوري.

فئة التضمينات الأساسية في LangChain تكشف عن طريقة لنوعين من الوظائف: واحدة لتضمين المستندات والأخرى لتضمين الاستفسارات. السبب في معاملتهما على أنهما وظيفتان مختلفتان هو أن بعض موفري التضمين لديهما طرق تضمين مختلفة للمستندات المراد البحث فيها والاستفسارات (استعلامات البحث ذاتها).

البداية السريعة

أدناه مثال باستخدام نموذج التضمين من OpenAI:

التكوين

أولاً، نحتاج إلى تثبيت حزمة Python الخاصة بشركة OpenAI. نظرًا لوجود العديد من تطبيقات نماذج تضمين النصوص في LangChain، يحتاج المطورون إلى تثبيت تبعيات نماذج مختلفة وفقًا لاختياراتهم:

pip install langchain-openai

قم بتكوين مفتاح OpenAI من خلال متغيرات البيئة:

export OPENAI_API_KEY="..."

إذا كنت لا ترغب في تعيين متغيرات البيئة، يمكنك تمرير المعلمة المسماة openai_api_key مباشرة عند تهيئة فئة OpenAI LLM لتمرير المفتاح:

from langchain_openai import OpenAIEmbeddings

embeddings_model = OpenAIEmbeddings(openai_api_key="...")

ولذلك، يمكنك التهيئة دون أي معلمات:

from langchain_openai import OpenAIEmbeddings

embeddings_model = OpenAIEmbeddings()

embed_documents

حساب ميزات الفيكتور الخاصة بدُفعة من النصوص:

embeddings = embeddings_model.embed_documents(
    [
        "مرحباً!",
        "أوه، مرحباً!",
        "ما اسمك؟",
        "أصدقائي ينادونني العالم",
        "مرحباً بالعالم!"
    ]
)
len(embeddings), len(embeddings[0])
(5, 1536)

embed_query

تقوم هذه الوظيفة بحساب ميزة الفيكتور لنص الاستعلام. عمومًا، ينطوي ذلك على تحويل السؤال الذي سيتم البحث عنه إلى فيكتور ميزة، ومن ثم استخدام هذا الفيكتور للاستعلام عن النصوص المماثلة في قاعدة البيانات الفيكتورية.

embedded_query = embeddings_model.embed_query("ما هو الاسم الذي ذُكر في المحادثة؟")
embedded_query[:5]
[0.0053587136790156364,
 -0.0004999046213924885,
 0.038883671164512634,
 -0.003001077566295862,
 -0.00900818221271038]