Retrieval-Augmented Generation (RAG)

تعزيز دقة RAG: غوص عميق في تقنيات توسيع الاستعلام

أصبحت عملية التوليد المعزز بالاسترجاع (RAG) هي البنية القياسية لبناء تطبيقات النماذج اللغوية الكبيرة (LLM) الجاهزة للإنتاج. من خلال grounding النماذج التوليدية في قواعد المعرفة الخارجية، يمكن للمؤسسات التخفيف من الهلوسة وتوفير المراجع. ومع ذلك، لا يزال هناك عنق زجاجة حاسم: جودة خطوة الاسترجاع. إذا فشل الاستعلام الأولي في مطابقة المعنى الدقيق للمستندات المخزنة، حتى أقوى نموذج لغوي كبير (LLM) سيُنتج نتائج سيئة.

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

لماذا يفشل البحث المتجه البسيط

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

في هذا السيناريو، يسبب الفجوة المعجمية والدلالية بين استعلام المستخدم غير الرسمي وعنوان المستند الرسمي فشل الاسترجاع. يعالج توسيع الاستعلام هذه الفجوة من خلال إنشاء نسخ متعددة من الاستعلام، يركز كل منها على جوانب أو مرادفات مختلفة.

استراتيجيات توسيع الاستعلام الشائعة

هناك ثلاث طرق رئيسية لتنفيذ توسيع الاستعلام في خط أنابيب RAG:

1. التوسيع متعدد المتجهات (RQ-RAG)

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

2. التوسيع الاصطناعي القائم على LLM

هنا، يتم مطالبة نموذج لغوي كبير (LLM) بإعادة صياغة الاستعلام الأصلي. قد يقوم بتوليد مرادفات، أو أسئلة ذات صلة، أو بيان أوسع. هذه الطريقة مرنة للغاية ولكنها تقدم زخماً (Latency) وتكلفة أعلى.

3. التوسيع بالكلمات المفتاحية والمفصولة بشرطة

الجمع بين البحث المتجه الكثيف والبحث المعجمي المتناثر (مثل BM25). من خلال استخراج الكلمات المفتاحية من الاستعلام والبحث عنها جنباً إلى جنب مع التمثيل المتجه، يمكنك التقاط المطابقات الدقيقة التي قد يفوتها البحث الدلالي.

تنفيذ توسيع الاستعلام القائم على LLM

فيما يلي مثال عملي بلغة Python باستخدام LangChain ونموذج لغوي كبير (LLM) لتوليد تنوعات متعددة للاستعلام. تُعرف هذه التقنية غالباً باسم "HyDE" (تضمينات المستندات الافتراضية) أو ببساطة الاسترجاع متعدد الاستعلامات.

from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

# Define the prompt for generating related queries
prompt_template = """You are an AI assistant tasked with improving search results. 
Given the following user query, generate 3 distinct variations that might retrieve more relevant documents. 
Focus on synonyms, related technical terms, and different phrasing.

User Query: "{query}"

Generated Variations:
1.
2.
3.
"""

llm_chain = LLMChain(
    llm=OpenAI(temperature=0), 
    prompt=PromptTemplate(
        input_variables=["query"], 
        template=prompt_template
    )
)

# Example usage
original_query = "How to fix database connection timeout in Python?"
response = llm_chain.run(original_query)

# In a real pipeline, you would parse the response into a list of strings
# and pass those strings to your vector store retriever.
print(response)

أفضل الممارسات والمفاضلات

بينما يحسن توسيع الاستعلام بشكل كبير من الاستدعاء (Recall)، إلا أنه يأتي مع مفاضلات. يزداد زخم الاستجابة (Latency) لأنك تقوم بإجراء مكالمات API إضافية إلى نموذج LLM وإجراء عمليات بحث متعددة في قاعدة البيانات. كما ترتفع التكلفة بسبب استهلاك الرموز (Tokens) الأعلى.

للتخفيف من هذه المشكلات، ضع في اعتبارك أفضل الممارسات التالية:

  • التخزين المؤقت: قم بتخزين الاستعلامات الموسعة مؤقتاً لتجنب الحسابات المكررة للكلمات البحثية الشائعة.
  • إعادة ترتيب النتائج: استخدم مُعيد ترتيب متقاطع المشفر (cross-encoder reranker) على النتائج الـ K الأولى من جميع الاستعلامات الموسعة لضمان أن السياق النهائي ذو صلة عالية.
  • البحث الهجين: اجمع بين توسيع الاستعلام ومطابقة الكلمات المفتاحية BM25 لالتقاط كل من النية الدلالية والمصطلحات الدقيقة.

الخاتمة

توسيع الاستعلام ليس مجرد ميزة إضافية مرغوبة؛ بل هو مكون أساسي لأنظمة RAG القوية. من خلال الاعتراف بأن استعلامات المستخدم غالباً ما تكون نادرة ومبهمة، يمكن للمطورين تنفيذ استراتيجيات توسيع تسد الفجوة بين نية الإنسان واسترجاع الآلة. سواء اخترت التحليل متعدد المتجهات أو الاستعلامات الاصطناعية المدعومة من LLM، يبقى الهدف واحداً: تزويد نموذج LLM بالسياق الدقيق الذي يحتاجه لتوليد استجابات دقيقة ومفيدة وموثقة.

مع تطور بنية RAG، سيُفصل دمج توسيع الاستعلام الديناميكي التطبيقات الجاهزة للإنتاج عن النماذج التجريبية. ابدأ ببساطة، وقيس مقاييس الاسترجاع الخاصة بك، وكرر العملية.

Share: