CoolFace
Apppublic

osmantalayhan/medical-rag-benchmark

sourceHugging Faceupdated 2mo agoView on Hugging Face
0likes
App README

Medical RAG Benchmark

Bu proje, bir RAG (Retrieval-Augmented Generation) altyapı çalışmasıdır.

Hugging Face üzerindeki tıbbi makaleler indirilmiş, parçalanmış (chunking), vektörleştirilmiş (embedding) ve yerel bir vektör veritabanına (ChromaDB) kaydedilmiştir. Ardından 30 soruluk bir benchmark testi ile sistemin doğruluk performansı ölçülmüştür.

1. Chunking Stratejisi

  • —Kullanılan Yöntem: RecursiveCharacterTextSplitter (Sabit token + Overlap)
  • —Değerler: Chunk Size = 500 karakter, Overlap = 50 karakter.
  • —Neden Seçildi? Tıbbi metinlerde cümlelerin veya paragrafların yarım kesilmesi anlam kaybına yol açar. RecursiveCharacterTextSplitter metni bölerken önce paragraflara (\n\n), sonra cümlelere (.) dikkat eder. 50 karakterlik overlap (örtüşme) payı ise, bir parçadan diğerine geçerken bağlamın (context) kopmasını engeller. Bu sayede vektör aramalarında daha isabetli (anlamsal) eşleşmeler yakalanır.

2. Embedding Modeli Seçimi

  • —Kullanılan Model: magibu/embeddingmagibu-200m
  • —Boyut (Dimension): 768 float
  • —Neden Seçildi? Yönergede önerilen bu model, Türkçe odaklı eğitilmiş bir embedding modelidir. Türkçe tıbbi terimleri vektör uzayında doğru konumlandırır. 8192 token context window desteklemesi sayesinde uzun metin parçalarını kırpmadan anlamsal vektörlere dönüştürebilir.

3. Vektör Veritabanı ve Şema (ChromaDB)

Verilerin depolanması ve aranması için ChromaDB tercih edilmiştir. Veritabanındaki her bir kayıt (chunk) şu 3 temel veriyi içerir:

  1. 1.chunk_text (Document): Metnin parçalanmış kendisi.
  2. 2.chunk_vector (Embedding): Metnin 768 boyutlu matematiksel vektör karşılığı.
  3. 3.url ve title (Metadata): Verinin çekildiği makalenin kaynağı.

4. Eşik (Threshold) Analizi ve Halüsinasyon Engelleme

  • —Kullanılan Metrik: Kosinüs Benzerliği (Cosine Similarity)
  • —Belirlenen Eşik (Threshold) Değeri: 0.55

Eşik Değerinin Açıklaması: Sisteme 20 adet tıbbi soru (Pozitif) ve 10 adet alakasız soru (Negatif) sorulmuştur. Yapılan testlerde;

  • —Tıbbi soruların veritabanındaki parçalarla olan benzerlik skoru genellikle 0.60 ile 0.85 arasında çıkmıştır.
  • —Alakasız soruların tıbbi makalelerle olan benzerliği ise 0.20 ile 0.40 aralığına düşmüştür.
  • —Güvenli bir ayrım yapabilmek adına 0.55 değeri Threshold (Eşik) olarak belirlenmiştir.

Sonuç: Bir sorunun benzerlik skoru 0.55'in altında kalırsa sistem veritabanını LLM'e göndermeyi reddeder ve doğrudan "Bu sorunun cevabı dokümanlarımda yer almamaktadır" uyarısı verir. Bu sayede LLM'in halüsinasyon yapması engellenmiş olur.