Ana Sayfaya Dön EN

TürkResearcher

Türkçe Akademik Araştırma Ajanı — 740K kaynak üzerinde LangChain + LangGraph multi-agent LLM

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 multi-agent LLM ajanıdır: kullanıcı Türkçe bir araştırma sorusu sorar, sistem 740 binlik bir Türkçe akademik korpus üzerinde delil toplar ve gerçek YÖK PDF'lerine bağlanan IEEE atıflı Türkçe akademik bir özet üretir.

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

Mimari

5 ajanlı LangGraph state machine. Critic ajanı kapsam yetersizse Retriever'a geri döner; iki tur sonra hâlâ yetersizse LiveSearch (OpenAlex + Semantic Scholar + DergiPark live) devreye girer.

SORU (TR) │ ▼ [ PLANNER ] → 3-5 alt-soru üretir │ ▼ [ RETRIEVER ] → 740K korpustan multi-query (cosine, top-30) │ ▼ [ 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 Tek Chroma collection, cosine, mpnet-base-v2 (768-dim)

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: sentence-transformers/paraphrase-multilingual-mpnet-base-v2
  • LLM: DeepSeek-Chat (OpenAI uyumlu API)
  • Live API'ler: OpenAlex, Semantic Scholar, DergiPark OAI-PMH
  • Eval: 30 soru × 4 metrik (LLM-as-judge), per-category breakdown
  • Reproducibility: tüm kod GitHub'da, 16 GB index Hugging Face'de

Sonraki Adımlar (Future Work)

3 aşamalı yol haritası mevcut veriden Türkçe-spesifik bir akademik LLM eğitmek için yeterli:

  1. Custom embedder — SimCSE ile Türkçe akademik dile özel fine-tune (retrieval %15-25 artış beklenir)
  2. SFT modeli — synthetic 100-200K Q&A üret + Türkçe 7B base modeline QLoRA (TürkResearcher-7B-instruct)
  3. DPO hizalama — eval judgment'larından preference pair'ler ile

Linkler