Pernahkah Anda membayangkan bisa ngobrol langsung dengan semua dokumen Anda? Bertanya apapun, dan langsung mendapat jawaban yang relevan dari tumpukan file PDF, HTML, atau bahkan Excel yang Anda miliki? Perkenalkan Kotaemon: Open-source RAG UI, sebuah proyek yang dibuat untuk mewujudkan hal tersebut. Ini adalah antarmuka pengguna RAG (Retrieval Augmented Generation) yang bersih dan bisa disesuaikan, dirancang untuk berinteraksi dengan dokumen Anda, baik untuk pengguna biasa maupun pengembang.
Apa Itu Kotaemon?
Pada dasarnya, Kotaemon adalah UI RAG fungsional. Artinya, ia memungkinkan Anda melakukan Tanya Jawab (QA) langsung pada dokumen Anda. Namun, lebih dari itu, proyek ini juga menyediakan kerangka kerja bagi para pengembang yang ingin membangun pipeline RAG mereka sendiri.
Ada tiga jenis peran utama yang diakomodasi oleh Kotaemon:
- Pengguna Akhir: Ini adalah Anda yang ingin memakai aplikasi seperti yang ada di demo, untuk bertanya ke dokumen.
- Pengembang: Anda yang membangun sesuatu menggunakan
kotaemon, mungkin denganimport kotaemondi proyek Anda. - Kontributor: Anda yang membantu membuat
kotaemonlebih baik dengan mengirimkan pull request ke repositori proyek.
Fitur Utama untuk Pengguna Akhir
Bagi Anda yang hanya ingin langsung pakai, Kotaemon menawarkan beberapa keunggulan:
- UI Bersih & Minimalis: Antarmuka yang ramah pengguna untuk QA berbasis RAG.
- Dukungan Berbagai LLM: Kompatibel dengan penyedia API LLM populer seperti OpenAI, AzureOpenAI, Cohere, serta LLM lokal melalui Ollama dan
llama-cpp-python. - Instalasi Mudah: Tersedia skrip sederhana untuk memulai dengan cepat.
Fitur Utama untuk Pengembang
Jika Anda seorang pengembang yang ingin lebih dalam bereksperimen, Kotaemon juga punya banyak tawaran:
- Framework untuk Pipeline RAG: Alat untuk membangun pipeline QA dokumen berbasis RAG Anda sendiri.
- UI yang Dapat Disesuaikan: Anda bisa melihat pipeline RAG Anda beraksi dengan UI yang sudah disediakan, dibangun menggunakan Gradio.
- Tema Gradio: Jika Anda mengembangkan dengan Gradio, ada juga tema
kotaemon-gradio-themeyang bisa Anda coba.
Daftar Fitur Unggulan Kotaemon
Selain fitur spesifik di atas, Kotaemon juga menyajikan beberapa kapabilitas inti yang patut Anda ketahui:
- Host Web-UI QA Dokumen (RAG) Anda Sendiri: Mendukung multi-user login, mengatur file dalam koleksi pribadi atau publik, serta berkolaborasi dan berbagi chat favorit Anda.
- Organisasi Model LLM & Embedding: Mendukung LLM lokal dan penyedia API populer seperti OpenAI, Azure, Ollama, dan Groq.
- Pipeline RAG Hibrida: Menggunakan pipeline RAG default dengan retriever hibrida (pencarian teks penuh dan vektor) serta re-ranking untuk memastikan kualitas pengambilan yang terbaik.
- Dukungan QA Multi-modal: Melakukan Tanya Jawab pada beberapa dokumen dengan dukungan angka dan tabel. Mendukung parsing dokumen multi-modal (opsi dapat dipilih di UI).
- Citations Lanjutan dengan Pratinjau Dokumen: Sistem menyediakan citation detail untuk memastikan kebenaran jawaban LLM. Anda dapat melihat citation beserta skor relevansinya langsung di penampil PDF dalam browser dengan highlight. Ada juga peringatan jika pipeline retrieval mengembalikan artikel yang kurang relevan.
- Dukungan Metode Penalaran Kompleks: Menggunakan dekomposisi pertanyaan untuk menjawab pertanyaan kompleks atau multi-hop. Mendukung penalaran berbasis agen dengan ReAct, ReWOO, dan agen lainnya.
- UI Pengaturan yang Dapat Dikonfigurasi: Anda bisa mengatur sebagian besar aspek penting dari proses retrieval dan generation langsung di UI, termasuk prompt.
- Ekstensibel: Dibangun di atas Gradio, Anda bebas menyesuaikan atau menambahkan elemen UI sesuka Anda. Kotaemon juga bertujuan untuk mendukung berbagai strategi untuk pengindeksan dan retrieval dokumen. Pipeline pengindeksan GraphRAG disediakan sebagai contoh.
Panduan Instalasi Singkat
Untuk pengguna yang bukan pengembang dan hanya ingin memakai aplikasi, Anda bisa melihat User Guide untuk langkah-langkah yang lebih mudah. Unduh file .zip dari rilis terbaru untuk mendapatkan semua fitur dan perbaikan bug.
Berikut adalah persyaratan sistem dasar untuk menjalankan Kotaemon:
| Persyaratan Sistem | Detail |
|---|---|
| Python | >= 3.10 |
| Docker | Opsional, jika Anda memilih instalasi via Docker. |
| Unstructured | Opsional, jika Anda ingin memproses file selain .pdf, .html, .mhtml, dan .xlsx (mis. .doc, .docx). Instalasi bervariasi per OS. |
Dengan Docker (Direkomendasikan)
Kotaemon mendukung versi Docker lite dan full. Versi full akan menginstal paket tambahan unstructured untuk mendukung tipe file seperti .doc atau .docx, namun ukuran citra Docker akan lebih besar. Untuk sebagian besar pengguna, citra lite sudah cukup.
Untuk menggunakan versi full:
bashdocker run \ -e GRADIO_SERVER_NAME=0.0.0.0 \ -e GRADIO_SERVER_PORT=7860 \ -v ./ktem_app_data:/app/ktem_app_data \ -p 7860:7860 -it --rm \ ghcr.io/cinnamon/kotaemon:main-full
Untuk versi full dengan Ollama terintegrasi (untuk RAG lokal atau privat):
bashdocker run \ <...> \ ghcr.io/cinnamon/kotaemon:main-ollama
Untuk versi lite:
bashdocker run \ <...> \ ghcr.io/cinnamon/kotaemon:main-lite
Anda dapat menentukan platform dengan --platform linux/arm64 jika diperlukan, misalnya untuk Mac terbaru. Setelah semua siap, kunjungi http://localhost:7860/ untuk mengakses WebUI.
Tanpa Docker
Jika Anda memilih untuk tidak menggunakan Docker, ikuti langkah-langkah ini:
- Clone repositori:
bash
git clone https://github.com/Cinnamon/kotaemon cd kotaemon - Siapkan lingkungan (pilih salah satu opsi):
- Opsi 1: Menggunakan
uv(Direkomendasikan)bashuv sync --python 3.10 source .venv/bin/activate - Opsi 2: Menggunakan
condabashconda create -n kotaemon python=3.10 conda activate kotaemon pip install -e "libs/kotaemon[all]" pip install -e "libs/ktem"
- Opsi 1: Menggunakan
- Buat file
.envdi root proyek. Anda bisa menggunakan.env.examplesebagai templat. File ini hanya akan digunakan untuk mengisi database sekali pada saat pertama kali dijalankan. - (Opsional) Untuk mengaktifkan penampil PDF_JS di browser, unduh PDF_JS_DIST lalu ekstrak ke
libs/ktem/ktem/assets/prebuilt. - Mulai server web:
bash
python app.py
Aplikasi akan otomatis terbuka di browser Anda. Nama pengguna dan kata sandi default keduanya adalah admin. Anda bisa mengatur pengguna tambahan langsung melalui UI. Pastikan juga api_key Anda di tab Resources dan LLMs and Embeddings sudah diatur dengan benar, atau atur di sana.
Integrasi dan Kustomisasi
Kotaemon sangat fleksibel dalam hal integrasi dengan berbagai teknologi RAG dan kustomisasi.
Setup GraphRAG
Perlu diingat, pengindeksan MS GraphRAG resmi hanya berfungsi dengan OpenAI atau Ollama API. Sebagian besar pengguna direkomendasikan untuk menggunakan implementasi NanoGraphRAG untuk integrasi yang lebih mudah.
-
Setup Nano GraphRAG:
bashpip install nano-graphrag # Untuk memperbaiki konflik versi jika ada pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlibLuncurkan Kotaemon dengan variabel lingkungan
USE_NANO_GRAPHRAG=true. Atur model LLM & Embedding default Anda di pengaturan Resources, dan akan dikenali secara otomatis oleh NanoGraphRAG. -
Setup LIGHTRAG:
bashpip install git+https://github.com/HKUDS/LightRAG.git # Untuk memperbaiki konflik versi jika ada pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlibLuncurkan Kotaemon dengan variabel lingkungan
USE_LIGHTRAG=true. Atur model LLM & Embedding default Anda di pengaturan Resources, dan akan dikenali secara otomatis oleh LIGHTRAG. -
Setup MS GraphRAG: Untuk instalasi non-Docker, instal GraphRAG dengan:
bashpip install "graphrag<=0.3.6" futureAtur variabel lingkungan
GRAPHRAG_API_KEY(atau di file.env). Jika ingin menggunakan model lokal (seperti Ollama) atau kustomisasi pengaturan LLM, aturUSE_CUSTOMIZED_GRAPHRAG_SETTING=truedan sesuaikansettings.yaml.exampleAnda.
Setup Model Lokal (untuk RAG lokal/privat)
Kotaemon mendukung penggunaan model LLM yang berjalan secara lokal di mesin Anda.
-
Menggunakan Ollama: Instal Ollama dan mulai aplikasinya. Tarik model yang Anda inginkan, misalnya:
bashollama pull llama3.1:8b ollama pull nomic-embed-textKemudian, atur nama model di UI web dan jadikan sebagai default.
-
Menggunakan GGUF dengan
llama-cpp-python: Anda dapat mencari dan mengunduh LLM dari Hugging Face Hub yang didukung format GGUF. Pilih model yang ukurannya lebih kecil dari memori perangkat Anda, sisakan sekitar 2 GB. Misalnya, jika Anda punya 16 GB RAM dan 12 GB tersedia, pilih model yang maksimal 10 GB. Model yang lebih besar cenderung memberikan generation yang lebih baik, namun memakan waktu pemrosesan lebih lama. Contoh model yang direkomendasikan adalah Qwen1.5-1.8B-Chat-GGUF, sekitar 2 GB. Tambahkan model LlamaCpp baru dengan nama model yang disediakan di UI web.
Setup Parsing Dokumen Multi-modal (OCR, table parsing, figure extraction)
Opsi-opsi ini tersedia dan dapat dipilih di Settings -> Retrieval Settings -> File loader:
- Azure Document Intelligence (API)
- Adobe PDF Extract (API)
- Docling (lokal, open-source)
- PaddleOCR (lokal, open-source)
Kustomisasi Aplikasi Anda
Secara default, semua data aplikasi disimpan di folder ./ktem_app_data. Anda bisa mencadangkan atau menyalin folder ini untuk memindahkan instalasi ke mesin baru. Untuk pengguna tingkat lanjut, Anda dapat menyesuaikan file flowsettings.py dan .env.
flowsettings.py: File ini berisi konfigurasi aplikasi Anda. Contoh tersedia. Beberapa pengaturan penting:
| Pengaturan | Deskripsi | Opsi yang Tersedia |
|---|---|---|
KH_DOCSTORE | Menyimpan dokumen pilihan Anda dengan kemampuan pencarian teks penuh. | Elasticsearch, LanceDB, SimpleFileDocumentStore |
KH_VECTORSTORE | Menyimpan vectorstore pilihan Anda untuk pencarian berbasis vektor. | ChromaDB, LanceDB, InMemory, Milvus, Qdrant |
KH_REASONINGS_USE_MULTIMODAL | Mengaktifkan/menonaktifkan QA multi-modal. | True, False |
KH_REASONINGS | Menyiapkan pipeline penalaran baru atau memodifikasi yang sudah ada. | Daftar pipeline seperti FullQAPipeline, ReactAgentPipeline, RewooAgentPipeline |
.env: File ini menyediakan cara lain untuk mengonfigurasi model dan kredensial Anda. Anda bisa mengonfigurasi model LLM via file .env dengan informasi yang diperlukan untuk menghubungkan ke LLM. Jika Anda tidak melihatnya, Anda bisa membuatnya.
Contoh konfigurasi untuk penyedia yang didukung:
-
OpenAI:
dotenvOPENAI_API_BASE=https://api.openai.com/v1 OPENAI_API_KEY=<your OpenAI API key here> OPENAI_CHAT_MODEL=gpt-3.5-turbo OPENAI_EMBEDDINGS_MODEL=text-embedding-ada-002 -
Azure OpenAI:
dotenvAZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= OPENAI_API_VERSION=2024-02-15-preview AZURE_OPENAI_CHAT_DEPLOYMENT=gpt-35-turbo AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT=text-embedding-ada-002
Membangun Pipeline RAG Anda Sendiri
Kotaemon juga memungkinkan Anda memperluas kemampuannya dengan menambahkan pipeline RAG kustom.
-
Pipeline Penalaran Kustom: Anda bisa melihat implementasi pipeline default sebagai referensi. Buat penyesuaian cepat pada cara kerja pipeline QA default. Tambahkan implementasi
.pybaru dilibs/ktem/ktem/reasoning/dan masukkan keflowssettingsuntuk mengaktifkannya di UI. -
Pipeline Pengindeksan Kustom: Implementasi contoh dapat ditemukan di
libs/ktem/ktem/index/file/graph.
Kotaemon hadir sebagai solusi serbaguna untuk berinteraksi dengan dokumen Anda, baik untuk penggunaan pribadi maupun pengembangan aplikasi RAG tingkat lanjut. Dengan fleksibilitas dan fitur yang ditawarkan, eksplorasi Anda dengan dokumen digital bisa jadi lebih produktif.
Referensi
https://github.com/Cinnamon/kotaemon
