0Pricing
AI Agents · درس

HyDE: Embeddings المستندات الافتراضية

أنشئ إجابة زائفة «مثالية» باستخدام LLM، وأنشئ embedding لها، ثم ابحث باستخدامها؛ فهي تتفوق على embeddings للاستعلامات القصيرة.

HyDE: Embeddings المستندات الافتراضية درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

مشكلة تضمينات الاستعلام

تكون استعلامات المستخدمين قصيرة عادةً، ولا تشبه المستندات التي تريد استرجاعها بأي شكل يُذكر.

  • الاستعلام: «أصلح لوحة المفاتيح لدي»
  • المستند: «إذا كانت مفاتيح لوحة المفاتيح الميكانيكية لديك عالقة، فيمكنك تنظيف المفاتيح باستخدام كحول الأيزوبروبيل...»

تكون المتجهات متباعدة دلاليًا، ولذلك يفشل الاسترجاع في العثور على المستند.

فكرة HyDE

HyDE = التضمينات الافتراضية للمستندات (Gao et al. 2022).

  1. اطلب من LLM كتابة «إجابة مثالية» وهمية عن الاستعلام
  2. ضمّن الإجابة الوهمية (وليس الاستعلام)
  3. استخدم ذلك المتجه للبحث في مجموعة النصوص الحقيقية

لماذا تنجح هذه الطريقة

تبدو الإجابة الافتراضية كمستند حقيقي (من حيث المفردات والبنية المتشابهة). ويكون تضمينها قريبًا من تضمينات المستندات الحقيقية، ولذلك يعثر الاسترجاع عليها بموثوقية أكبر.

Implementation

def hyde_search(query, k=5):
    # Step 1: hallucinate an answer
    hypo_answer = llm.invoke(f'Please write a passage to answer the question: {query}').content
    # Step 2: embed it
    vec = embed(hypo_answer)
    # Step 3: retrieve
    return vector_db.query(vec, k=k)

لا بأس بأن تكون الإجابة خاطئة

قد تكون الإجابة الافتراضية في HyDE خاطئة من الناحية الواقعية — ولا مشكلة في ذلك. فنحن نستخدم تضمينها للاسترجاع فقط. ثم تُستخدم المستندات الحقيقية المسترجعة لإنشاء الإجابة النهائية.

Code Example with LangChain

from langchain.chains import HypotheticalDocumentEmbedder
from langchain_openai import OpenAIEmbeddings, ChatOpenAI

embeddings = HypotheticalDocumentEmbedder.from_llm(
    ChatOpenAI(),
    OpenAIEmbeddings(),
    'web_search'   # built-in prompt template
)
vector = embeddings.embed_query('How do I fix a sticky keyboard?')

مقايضة التكلفة

تتطلب HyDE استدعاءً إضافيًا واحدًا لـ LLM لكل استعلام. وتستحق ذلك عندما:

  • تختلف صياغة الاستعلام كثيرًا عن صياغة المستند
  • يمثل استرجاع أكبر قدر من النتائج عنق الزجاجة لديك
  • تحتوي مجموعة النصوص على كتابة تقنية يعيد المستخدم صياغتها

HyDE متعددة العينات

أنشئ N من الإجابات الافتراضية، وضمّن كل إجابة، واسترجع أفضل K لكل منها، ثم اجمع النتائج. هذه الطريقة أغلى، لكنها تحقق استرجاعًا أكبر في الاستعلامات الصعبة.

hypos = [llm.invoke(...).content for _ in range(3)]
vecs = [embed(h) for h in hypos]
results = set()
for v in vecs:
    results.update(vector_db.query(v, k=5))

دمج HyDE مع إعادة الترتيب

استخدم HyDE لزيادة الاسترجاع، والمشفّر المتقاطع لزيادة الدقة:

  1. تسترجع HyDE أفضل 50 نتيجة
  2. يعيد المشفّر المتقاطع ترتيبها لاختيار أفضل 5
  3. يجيب LLM باستخدام أفضل 5

متى لا تستخدم HyDE

  • عندما تتوافق الاستعلامات أصلًا مع لغة المستندات (الأسئلة الشائعة)
  • المسارات الحساسة لزمن الاستجابة
  • مجموعات النصوص القصيرة جدًا، حيث ينجح الاسترجاع الساذج

HyDE للبحث في التعليمات البرمجية

للبحث في التعليمات البرمجية: اختلق الدالة التي يبحث عنها المستخدم، وضمّنها، ثم استرجع الدوال الحقيقية.

code_hypo = llm.invoke(f'Write the Python function that does: {user_request}').content
results = code_index.search(embed(code_hypo))

متغيرات: Step-Back Prompting

تقنية ذات صلة: اطلب من النموذج اشتقاق سؤال أكثر عمومية أولًا («كيف أنظف لوحات المفاتيح؟» ← «ما طريقة التنظيف العامة المناسبة للوحات المفاتيح الميكانيكية؟»)، ثم ضمّن ذلك السؤال واسترجع النتائج.

لماذا تنجح HyDE

ما الذي يجعل HyDE تحقق استرجاعًا أفضل من تضمين الاستعلام الخام؟

مراجعة

HyDE: اختلق إجابة، وضمّن تلك الإجابة، ثم ابحث. تتطلب استدعاءً إضافيًا واحدًا لـ LLM، لكنها تحسن الاسترجاع في الاستعلامات الصعبة أو المعاد صياغتها أو التقنية.

الأسئلة الشائعة

هل درس «HyDE: Embeddings المستندات الافتراضية» مجاني؟

نعم — نص درس «HyDE: Embeddings المستندات الافتراضية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.

ماذا ستتعلم في «HyDE: Embeddings المستندات الافتراضية»؟

أنشئ إجابة زائفة «مثالية» باستخدام LLM، وأنشئ embedding لها، ثم ابحث باستخدامها؛ فهي تتفوق على embeddings للاستعلامات القصيرة. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟

لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «HyDE: Embeddings المستندات الافتراضية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟

نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إعادة الترتيب باستخدام Cross-Encoders
  2. HyDE: Embeddings المستندات الافتراضية
  3. الاسترجاع متعدد المتجهات (ColBERT)
  4. تقييم RAG (RAGAS وRecall@K)
← العودة إلى AI Agents