Ana Sayfaya Dön EN

TürkResearcher

Türkçe Akademik Araştırma Ajanı — 633K tez üzerinde fine-tuned embedder + cross-encoder reranker'lı çok-ajanlı RAG

Proje Özeti

İngilizce dünyasında Elicit ve Consensus.app gibi araştırmacılara kaynak-temelli özet üreten LLM tabanlı asistanlar var. Türkçe için eşdeğeri yoktu. TürkResearcher bu açığı kapatmak için geliştirdiğim açık kaynak (MIT) bir çok-ajanlı RAG sistemidir: kullanıcı Türkçe bir araştırma sorusu sorar, sistem 633K Türkçe tez üzerinde (fine-tuned trakad-embed-v2 + cross-encoder reranker ile) delil toplar ve gerçek tez.yok.gov.tr kayıtlarına bağlanan IEEE atıflı Türkçe akademik bir özet üretir. Gerçek sistem HF Space'te canlı; sağlayıcı-bağımsız (lokal model de çalışır).

Proje, İstanbul Medipol Üniversitesi'nde aldığım Large Language Models dersinin final projesidir (Track 1 — Novel Idea).

Mimari

LangGraph state machine. Erişimden sonra bir cross-encoder reranker adayları yeniden sıralayıp gürültüyü filtreler (asıl kalite kazancı burada). Critic ajanı kapsam yetersizse Retriever'a döner. LiveSearch (OpenAlex/SS/DergiPark) isteğe bağlıdır; ürün varsayılanında kapalı (ölçülen sistemle tutarlı).

SORU (TR) │ ▼ [ PLANNER ] → 3-5 alt-soru üretir │ ▼ [ RETRIEVER ] → 633K tez, trakad-embed-v2 ile multi-query (cosine) │ ▼ [ RERANKER ] → cross-encoder yeniden sıralama (gürültü filtreler) │ ▼ [ SYNTHESIZER ]→ bulguları kümeler, çelişkileri işaretler │ ▼ [ CRITIC ] → coverage_ok? ──Hayır── RETRIEVER (loop ≤2) │ veya LIVE_SEARCH │ Evet (OpenAlex / SS / DergiPark) ▼ [ WRITER ] → Türkçe akademik özet + IEEE atıflar │ ▼ YANIT (~30 atıf, gerçek tez.yok.gov.tr URL'leri)

Veri

İki kaynaktan birleşik Türkçe akademik korpus:

Kaynak Kayıt Toplama yöntemi
YÖK Ulusal Tez Merkezi 633.998 Hugging Face Hub (CC-BY-4.0) → kalite filtresi
DergiPark dergi makaleleri 106.641 OAI-PMH harvest (kendi yazdığım resumable scraper)
Toplam 740.639 Chroma, cosine, fine-tuned trakad-embed-v2 (768-dim). Ürün 633K v2 indeksini kullanır.

Index Colab T4 GPU üzerinde inşa edildi ve açık kaynak olarak Hugging Face Hub'a yüklendi (hakansabunis/tr-academic-research-agent-index, 16 GB).

Değerlendirme

30 soruluk Türkçe benchmark, 10 farklı konu kategorisi (sağlık, eğitim, mühendislik, hukuk, bilgisayar, ekonomi, vb.). LLM-as-judge ile dört metrik:

İki konfigürasyonu karşılaştırdım: 633K tez-yalnız ve 740K + DergiPark:

Metrik 633K 740K Δ
Citation accuracy0.600.51−0.10
Faithfulness0.590.49−0.10
Coverage0.490.47−0.03
Holistic2.632.40−0.23
#Citations30.132.8+2.7

Sürpriz Bulgu — "Corpus Expansion Paradox"

Naif corpus genişletme her zaman daha iyi metrik getirmiyor: kapsamı zayıf kategorilerde (CS, business) iyileşme, kapsamı zaten güçlü kategorilerde (sağlık, mühendislik, hukuk) gerileme. Üç sebep belirledim:

  1. Abstract uzunluk dağılım kayması — tezler ~1600 char, dergi makaleleri ~500 char; yazarın ifade groundlama alanı azaldı.
  2. Citation enflasyonu — yazar +2.7 daha çok atıf üretiyor; her ek atıf zayıf grounded.
  3. Source-mixing — tezler geniş-tutarlı, makaleler dar-ampirik. Yazar prompt'u bunu ayırt etmiyor.

Bu, basit bir "biz yaptık çalıştı" sonucu değil — gerçek bir bilimsel gözlem.

Teknik Yığın

  • Dil: Python 3.13
  • Orchestration: LangChain + LangGraph (5+1 ajan, conditional routing)
  • Vector store: ChromaDB (cosine, 768-dim)
  • Embedder: trakad-embed-v2 — 633K tezle fine-tuned (citation +%9.9)
  • Reranker: cross-encoder bge-reranker-base (citation +%16, $0)
  • LLM: sağlayıcı-bağımsız — herhangi OpenAI-uyumlu (DeepSeek/OpenRouter/OpenAI) veya lokal Ollama/vLLM
  • Live API'ler: OpenAlex/Semantic Scholar/DergiPark (isteğe bağlı, varsayılan kapalı)
  • Eval: 30 soru × 4 metrik (LLM-as-judge), per-category breakdown
  • Reproducibility: tüm kod GitHub'da, 16 GB index Hugging Face'de

Yapılanlar & Öğrenilenler (dürüst)

Yol haritası kanıta dayalı yürütüldü; ne çalışmadığı da raporlandı:

Anlatı: embedder erişimi iyileştirdi ama korpus büyüyünce gürültü arttı (Corpus Expansion Paradox); writer'ı iyileştirmek işe yaramadı çünkü darboğaz writer değildi; reranker tam o gürültüyü filtreleyerek paradoksu kapattı.

Linkler