Skip to content

Summarizer

Summarizer adalah service Python + FastAPI yang menangani hierarchical summarization dan Named Entity Recognition (NER) untuk RAGA. Diberi sebuah file teks, service ini memecahnya menjadi beberapa chunk, memproses tiap chunk secara paralel lewat LLM, lalu menggabungkan hasilnya menjadi satu ringkasan final beserta entitas bernama (nama orang, organisasi, lokasi, tanggal, dsb).

Service ini dipanggil oleh API Tarantula (env var SUMMARIZE_URL) untuk memproses dokumen dan transkrip audio menjadi ringkasan yang disimpan sebagai bagian dari knowledge source workspace.

Tech Stack

KomponenTeknologi
RuntimePython 3.11
FrameworkFastAPI + uvicorn
LLM Clientopenai Python SDK (OpenAI-compatible API)
HTTP Clienthttpx (async), requests (sync health probe)
Secret Managementinfisical_sdk (Python)
Concurrencyasyncio (dibatasi lewat semaphore)

Detail environment variable, endpoint, dan diagram pipeline lengkap ada di halaman Teknis.

Cara Kerja Singkat

  1. File teks dipecah menjadi beberapa chunk (dibatasi jumlah kata, tidak memotong kalimat).
  2. Setiap chunk diproses paralel — satu panggilan LLM per chunk menghasilkan ringkasan dan entitas sekaligus (strategi "merge-on-raw": NER dijalankan di teks mentah, bukan hasil ringkasan, supaya recall entitas lebih tinggi).
  3. Jika gabungan ringkasan masih terlalu panjang, pipeline melakukan pass merge tambahan secara iteratif.
  4. Panggilan LLM terakhir menggabungkan seluruh ringkasan chunk menjadi satu ringkasan final, dan entitas dari berbagai sumber digabung (union) menjadi hasil akhir.

Ketahanan

Kegagalan satu chunk tidak membatalkan proses keseluruhan (asyncio.gather(return_exceptions=True)) — chunk yang gagal digantikan hasil kosong, sementara chunk lain tetap diproses. Setiap panggilan LLM juga di-retry otomatis.

Ringkasan

Summarizer adalah satu-satunya titik di platform RAGA yang mengubah teks panjang (dokumen, transkrip audio) menjadi ringkasan terstruktur beserta entitas bernama — dirancang untuk tetap responsif lewat pemrosesan chunk paralel, dan tetap jalan meski sebagian chunk gagal diproses.