Evaluation

إيقاف الدوران: دليل المطورين للكشف القوي عن الهلوسة في نماذج اللغات الكبيرة

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

فهم أنواع الهلوسة

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

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

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

الاستراتيجية 1: التشابه الدلالي باستخدام التضمينات

أكثر الطرق سهولة للكشف عن الهلوسة الواقعية في أنظمة RAG هي قياس التشابه الدلالي بين مخرجات النموذج والسياق المسترجع. إذا زعم النموذج أن $X$ ولكن السياق يدعم $Y$، فإن المسافة بين التضمين (embedding) للادعاء والسياق ذي الصلة ستكون كبيرة.

إليك تنفيذ عملي باستخدام langchain و sentence-transformers:


from langchain.embeddings import SentenceTransformerEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from sklearn.metrics.pairwise import cosine_similarity

def check_hallucination(context_chunk, generated_answer, model_name="all-MiniLM-L6-v2"):
    # Initialize embeddings
    embeddings = SentenceTransformerEmbeddings(model_name=model_name)
    
    # Generate embeddings
    context_embedding = embeddings.embed_documents([context_chunk])[0]
    answer_embedding = embeddings.embed_documents([generated_answer])[0]
    
    # Calculate cosine similarity
    similarity = cosine_similarity([context_embedding], [answer_embedding])[0][0]
    
    # Threshold logic
    return similarity > 0.85  # Returns True if plausible, False if likely hallucination

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

الاستراتيجية 2: استخدام نموذج لغوي كحكم

في مهام الاستدلال المعقدة، غالباً ما يكون تشابه التضمينات غير كافٍ. نهج أكثر متانة هو استخدام نموذج لغوي ثانوي وأقوى لتقييم مدى التزام استجابة النموذج الأساسي بالسياق. تستفيد هذه التقنية، المعروفة بـ "النموذج اللغوي كحكم" (LLM-as-a-Judge)، من قدرات الاستدلال في النماذج الأحدث للكشف عن التناقضات الدقيقة.


def verify_with_llm(context, claim, judge_model):
    prompt = f"""
    Analyze the following claim based strictly on the provided context.
    Context: {context}
    Claim: {claim}
    
    Determine if the claim is fully supported by the context.
    Return only 'SUPPORTED' or 'NOT_SUPPORTED'.
    """
    response = judge_model.invoke(prompt)
    return response.content == 'SUPPORTED'

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

الاستراتيجية 3: الاتساق الذاتي والتصويت

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

الخاتمة

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

Share: