English | 简体中文 | 日本語 | 한국어 | Bahasa Indonesia
Dokumentasi | Peta Jalan | Twitter | Discord | Demo
📕 Daftar Isi
- 💡 Apa Itu RAGFlow?
- 🎮 Demo
- 📌 Pembaruan Terbaru
- 🌟 Fitur Utama
- 🔎 Arsitektur Sistem
- 🎬 Mulai
- 🔧 Konfigurasi
- 🔧 Membangun Image Docker tanpa Model Embedding
- 🔧 Membangun Image Docker dengan Model Embedding
- 🔨 Meluncurkan aplikasi dari Sumber untuk Pengembangan
- 📚 Dokumentasi
- 📜 Peta Jalan
- 🏄 Komunitas
- 🙌 Kontribusi
RAGFlow adalah mesin RAG (Retrieval-Augmented Generation) open-source berbasis pemahaman dokumen yang mendalam. Platform ini menyediakan alur kerja RAG yang efisien untuk bisnis dengan berbagai skala, menggabungkan LLM (Large Language Models) untuk menyediakan kemampuan tanya-jawab yang benar dan didukung oleh referensi dari data terstruktur kompleks.
Coba demo kami di https://demo.ragflow.io.
- 22-11-2024 Peningkatan definisi dan penggunaan variabel di Agen.
- 2024-11-01: Penambahan ekstraksi kata kunci dan pembuatan pertanyaan terkait untuk meningkatkan akurasi pengambilan.
- 2024-09-13: Penambahan mode pencarian untuk Q&A basis pengetahuan.
- 2024-08-22: Dukungan untuk teks ke pernyataan SQL melalui RAG.
- 2024-08-02: Dukungan GraphRAG yang terinspirasi oleh graphrag dan mind map.
⭐️ Star repositori kami untuk tetap mendapat informasi tentang fitur baru dan peningkatan menarik! 🌟
- Ekstraksi pengetahuan berbasis pemahaman dokumen mendalam dari data tidak terstruktur dengan format yang rumit.
- Menemukan "jarum di tumpukan data" dengan token yang hampir tidak terbatas.
- Cerdas dan dapat dijelaskan.
- Banyak pilihan template yang tersedia.
- Visualisasi pemotongan teks memungkinkan intervensi manusia.
- Tampilan cepat referensi kunci dan referensi yang dapat dilacak untuk mendukung jawaban yang didasarkan pada fakta.
- Mendukung Word, slide, excel, txt, gambar, salinan hasil scan, data terstruktur, halaman web, dan banyak lagi.
- Orkestrasi RAG yang ramping untuk bisnis kecil dan besar.
- LLM yang dapat dikonfigurasi serta model embedding.
- Peringkat ulang berpasangan dengan beberapa pengambilan ulang.
- API intuitif untuk integrasi yang mudah dengan bisnis.
- CPU >= 4 inti
- RAM >= 16 GB
- Disk >= 50 GB
- Docker >= 24.0.0 & Docker Compose >= v2.26.1
-
Pastikan
vm.max_map_count
>= 262144:Untuk memeriksa nilai
vm.max_map_count
:$ sysctl vm.max_map_count
Jika nilainya kurang dari 262144, setel ulang
vm.max_map_count
ke setidaknya 262144:# Dalam contoh ini, kita atur menjadi 262144: $ sudo sysctl -w vm.max_map_count=262144
Perubahan ini akan hilang setelah sistem direboot. Untuk membuat perubahan ini permanen, tambahkan atau perbarui nilai
vm.max_map_count
di /etc/sysctl.conf:vm.max_map_count=262144
-
Clone repositori:
$ git clone https://github.com/infiniflow/ragflow.git
-
Bangun image Docker pre-built dan jalankan server:
Perintah di bawah ini akan mengunduh versi dev dari Docker image RAGFlow slim (
dev-slim
). Image RAGFlow slim tidak termasuk model embedding atau library Python dan berukuran sekitar 1GB.$ cd ragflow/docker $ docker compose -f docker-compose.yml up -d
- Untuk mengunduh versi tertentu dari image Docker RAGFlow slim, perbarui variabel
RAGFlow_IMAGE
di * docker/.env* sesuai dengan versi yang diinginkan. Misalnya,RAGFLOW_IMAGE=infiniflow/ragflow:v0.14.1-slim
. Setelah mengubah ini, jalankan ulang perintah di atas untuk memulai unduhan. - Untuk mengunduh versi dev dari image Docker RAGFlow termasuk model embedding dan library Python, perbarui
variabel
RAGFlow_IMAGE
di docker/.env menjadiRAGFLOW_IMAGE=infiniflow/ragflow:dev
. Setelah mengubah ini, jalankan ulang perintah di atas untuk memulai unduhan. - Untuk mengunduh versi tertentu dari image Docker RAGFlow termasuk model embedding dan library Python, perbarui
variabel
RAGFlow_IMAGE
di docker/.env sesuai dengan versi yang diinginkan. Misalnya,RAGFLOW_IMAGE=infiniflow/ragflow:v0.14.1
. Setelah mengubah ini, jalankan ulang perintah di atas untuk memulai unduhan.
CATATAN: Image Docker RAGFlow yang mencakup model embedding dan library Python berukuran sekitar 9GB dan mungkin memerlukan waktu lebih lama untuk dimuat.
- Untuk mengunduh versi tertentu dari image Docker RAGFlow slim, perbarui variabel
-
Periksa status server setelah server aktif dan berjalan:
$ docker logs -f ragflow-server
Output berikut menandakan bahwa sistem berhasil diluncurkan:
____ ___ ______ ______ __ / __ \ / | / ____// ____// /____ _ __ / /_/ // /| | / / __ / /_ / // __ \| | /| / / / _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ / /_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/ * Running on all addresses (0.0.0.0) * Running on http://127.0.0.1:9380 * Running on http://x.x.x.x:9380 INFO:werkzeug:Press CTRL+C to quit
Jika Anda melewatkan langkah ini dan langsung login ke RAGFlow, browser Anda mungkin menampilkan error
network anormal
karena RAGFlow mungkin belum sepenuhnya siap. -
Buka browser web Anda, masukkan alamat IP server Anda, dan login ke RAGFlow.
Dengan pengaturan default, Anda hanya perlu memasukkan
http://IP_DEVICE_ANDA
(tanpa nomor port) karena port HTTP default80
bisa dihilangkan saat menggunakan konfigurasi default. -
Dalam service_conf.yaml, pilih LLM factory yang diinginkan di
user_default_llm
dan perbarui bidangAPI_KEY
dengan kunci API yang sesuai.Lihat llm_api_key_setup untuk informasi lebih lanjut.
Sistem telah siap digunakan!
Untuk konfigurasi sistem, Anda perlu mengelola file-file berikut:
- .env: Menyimpan pengaturan dasar sistem, seperti
SVR_HTTP_PORT
,MYSQL_PASSWORD
, danMINIO_PASSWORD
. - service_conf.yaml: Mengonfigurasi aplikasi backend.
- docker-compose.yml: Sistem ini bergantung pada docker-compose.yml untuk memulai.
Anda harus memastikan bahwa perubahan pada file .env sesuai dengan yang ada di file service_conf.yaml.
File ./docker/README menyediakan penjelasan detail tentang pengaturan lingkungan dan konfigurasi aplikasi, dan Anda DIWAJIBKAN memastikan bahwa semua pengaturan lingkungan yang tercantum di ./docker/README selaras dengan konfigurasi yang sesuai di service_conf.yaml.
Untuk memperbarui port HTTP default (80), buka docker-compose.yml dan ubah 80:80
menjadi <YOUR_SERVING_PORT>:80
.
Pembaruan konfigurasi ini memerlukan reboot semua kontainer agar efektif:
$ docker compose -f docker/docker-compose.yml up -d
Image ini berukuran sekitar 1 GB dan bergantung pada aplikasi LLM eksternal dan embedding.
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
pip3 install huggingface-hub nltk
python3 download_deps.py
docker build -f Dockerfile.slim -t infiniflow/ragflow:dev-slim .
Image ini berukuran sekitar 9 GB. Karena sudah termasuk model embedding, ia hanya bergantung pada aplikasi LLM eksternal.
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
pip3 install huggingface-hub nltk
python3 download_deps.py
docker build -f Dockerfile -t infiniflow/ragflow:dev .
-
Instal Poetry, atau lewati langkah ini jika sudah terinstal:
curl -sSL https://install.python-poetry.org | python3 -
-
Clone kode sumber dan instal dependensi Python:
git clone https://github.com/infiniflow/ragflow.git cd ragflow/ export POETRY_VIRTUALENVS_CREATE=true POETRY_VIRTUALENVS_IN_PROJECT=true ~/.local/bin/poetry install --sync --no-root # install modul python RAGFlow
-
Jalankan aplikasi yang diperlukan (MinIO, Elasticsearch, Redis, dan MySQL) menggunakan Docker Compose:
docker compose -f docker/docker-compose-base.yml up -d
Tambahkan baris berikut ke
/etc/hosts
untuk memetakan semua host yang ditentukan di docker/service_conf.yaml ke127.0.0.1
:127.0.0.1 es01 infinity mysql minio redis
Di docker/service_conf.yaml, perbarui port mysql ke
5455
dan es ke1200
, sesuai dengan yang ditentukan di docker/.env. -
Jika Anda tidak dapat mengakses HuggingFace, atur variabel lingkungan
HF_ENDPOINT
untuk menggunakan situs mirror:export HF_ENDPOINT=https://hf-mirror.com
-
Jalankan aplikasi backend:
source .venv/bin/activate export PYTHONPATH=$(pwd) bash docker/launch_backend_service.sh
-
Instal dependensi frontend:
cd web npm install --force
-
Jalankan aplikasi frontend:
npm run dev
Output berikut menandakan bahwa sistem berhasil diluncurkan:
Lihat Roadmap RAGFlow 2024
RAGFlow berkembang melalui kolaborasi open-source. Dalam semangat ini, kami menerima kontribusi dari komunitas. Jika Anda ingin berpartisipasi, tinjau terlebih dahulu Panduan Kontribusi.