Evaluation

Altın Veri Setleri Oluşturma: Sağlam LLM Değerlendirmesinin Temeli

Hızla gelişen Büyük Dil Modeli (LLM) geliştirme ortamında, yalnızca perplexity veya temel benzerlik puanları gibi otomatik metriklere güvenme isteği güçlüdür. Ancak bu metrikler, üretim kalitesinde uygulamalar için gereken nüansları, olgusal doğruluğu ve spesifik niyeti yakalamakta genellikle yetersiz kalır. İşte bu noktada Altın Veri Setleri devreye girer. Bir altın veri seti, "altın" çıktının ideal veya gerçek durumu (ground-truth) temsil ettiği, özenle seçilmiş, yüksek kaliteli girdi-çıktı çiftlerinin bir koleksiyonudur. Bu veri setleri, modelinizin gerçek dünya beklentilerine karşı ne kadar iyi performans gösterdiğini ölçmek için kesin referans noktası görevi görür.

Neden Altın Veri Setleri Önemlidir?

Geleneksel birim testleri tam dize eşleşmelerini kontrol eder, ancak üretken yapay zekâda bu nadiren uygulanabilir. Bunun yerine altın veri setleri anlamsal değerlendirmeyi mümkün kılar. Şunları ölçmenizi sağlarlar:

  • Olgusal Doğruluk: Model, belirli bir gerçeklik kaynağına dayalı doğru bilgi sağlıyor mu?
  • Talimat Uyum: Çıktı, belirli kısıtlamalara (ör. JSON formatı, ton, uzunluk) uyuyor mu?
  • Güvenlik ve Önyargı: Model, zararlı veya önyargılı içerik üretmeden kenar durumlarını (edge cases) ele alabiliyor mu?

Kararlı bir altın veri seti olmadan, her yeni model sürümü bir kumar olur. Tutarlı olarak ölçemediğiniz şeyi optimize edemezsiniz.

Altın Veri Setinin Yapısı ve Bileşenleri

İyi yapılandırılmış bir altın veri seti genellikle üç ana bileşenden oluşur:

  1. Girdi İfadesi (Input Prompt): LLM'ye sağlanan kullanıcı sorgusu veya bağlam.
  2. Altın Çıktı (Golden Output): İnsan uzmanları veya doğrulanmış kaynaklar tarafından yazılan, beklenen ideal yanıt.
  3. Değerlendirme Kriterleri: Modelin gerçek çıktısı ile altın çıktı arasındaki benzerliği yargılamak için kullanılan spesifik rubrikler veya kurallar.

Basit bir JSON yapısı kullanarak Python'daki aşağıdaki örneği göz önünde bulundurun:


import json

golden_dataset = [
    {
        "id": "case_001",
        "input": "What is the capital of France?",
        "golden_output": "The capital of France is Paris.",
        "category": "factual_accuracy",
        "tolerance": "high"
    },
    {
        "id": "case_002",
        "input": "Write a haiku about coding.",
        "golden_output": "Silent cursor blinks.\nLogic flows in endless streams.\nBug found, fix applied.",
        "category": "creative_formatting",
        "tolerance": "medium"
    }
]

# Save to file for version control
with open('golden_data.json', 'w') as f:
    json.dump(golden_dataset, f, indent=2)

Veri Setlerinizi Bakım ve Sürümleme

Altın veri setleri statik değildir; bakıma ihtiyaç duyarlar. Uygulamanız evrildikçe yeni kenar durumları ortaya çıkacaktır. Veri setlerinizi korumak için en iyi uygulamalar şunlardır:

1. Sürüm Kontrolü

Altın veri setlerinizi kodunuza gösterdiğiniz aynı titizlikle ele alın. Onları Git depolamanızda saklayın. Önemli değişiklikleri izlemek için anlamsal sürümleme (ör. v1.0.0) kullanın. Altın çıktıları güncellediğinizde, elma ile elmayı karşılaştırdığınızdan emin olmak için değerlendirme sonuçlarınızı yeniden temel almanız (re-baseline) gerekir.

2. İnsan Döngüde (Human-in-the-Loop) Düzenleme

Başlangıç çıktılarını üretmek için güçlü bir model (GPT-4 veya Claude 3 gibi) kullanarak bir veri seti oluşturabilirsiniz, ancak bunların insan uzmanlar tarafından gözden geçirilmesi gerekir. İnsan gözden geçirenler hataları düzeltmeli, nüansları rafine etmeli ve altın çıktıların belirli alanınız için en yüksek olası kalite standartlarını yansıttığından emin olmalıdır.

3. Çeşitli Kapsam

Yaygın bir tuzak, veri setinin yaygın durumlara ağırlıklı olarak kaymış olmasıdır. Altın veri setinizin şunları içerdiğinden emin olun:

  • Standart olumlu yollar (happy paths).
  • Kenar durumları ve belirsiz sorgular.
  • Negatif durumlar (modelin reddetmesi veya netleştirmesi gereken durumlar).
  • Çeşitli girdiler (farklı diller, tonlar ve karmaşıklıklar).

Değerlendirme Hattını Otomatikleştirme

Çıktıları manuel olarak karşılaştırmak sürdürülebilir değildir. Her kod taahhüdünde veya model güncellemesinde altın veri setinize karşı çalışan bir otomatik hatta ihtiyacınız var. LangSmith, DeepEval veya LLM-as-a-Judge kullanan özel betikler gibi araçlar bu süreci otomatikleştirebilir.

Bir LLM-as-a-Judge'in bir yanıtı altın çıktıya karşı nasıl değerlendirebileceğini gösteren kavramsal bir parça aşağıdadır:


def evaluate_response(actual_output: str, golden_output: str, prompt: str) -> float:
    """
    Uses an LLM to score the actual output against the golden output.
    Returns a score between 0 and 1.
    """
    judge_prompt = f"""
    Compare the following two responses.
    
    Original Prompt: {prompt}
    Golden Response: {golden_output}
    Actual Response: {actual_output}
    
    Rate the Actual Response on a scale of 0 to 1, where 1 means it is
    factually and semantically equivalent to the Golden Response, and 0
    means it is completely incorrect. Provide only the number.
    """
    # Call LLM API here to get the score
    # For this example, we return a mock score
    return 0.95

Sonuç

Altın veri setleri, güvenilir LLM değerlendirmesinin temelidir. Model performansına dair belirsiz izlenimlerden somut, ölçülebilir içgörülere geçmenizi sağlarlar. Yüksek kaliteli bir altın veri setini düzenlemek, sürümlemek ve korumak için zaman ayırarak sürekli iyileşmeyi mümkün kılar, regresyon risklerini azaltır ve yapay zekâ uygulamalarınızın tutarlı, doğru ve güvenli sonuçlar sunmasını garanti altına alırsınız. Küçük başlayın, özenle düzenleyin ve uygulamanız büyüdükçe ölçeklendirin.

Share: