README_ko.md
</a>
<a href="https://cloud.ragflow.io" target="_blank">
</a>
<a href="https://hub.docker.com/r/infiniflow/ragflow" target="_blank">
</a>
<a href="https://github.com/infiniflow/ragflow/releases/latest">
</a>
<a href="https://github.com/infiniflow/ragflow/blob/main/LICENSE">
</a>
<a href="https://deepwiki.com/infiniflow/ragflow">
</a>
RAGFlow ๋ ์ต์ฒจ๋จ RAG(Retrieval-Augmented Generation)์ Agent ๊ธฐ๋ฅ์ ์ตํฉํ์ฌ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ(LLM)์ ์ํ ์ฐ์ํ ์ปจํ ์คํธ ๊ณ์ธต์ ์์ฑํ๋ ์ ๋์ ์ธ ์คํ์์ค RAG ์์ง์ ๋๋ค. ๋ชจ๋ ๊ท๋ชจ์ ๊ธฐ์ ์ ์ ์ฉ ๊ฐ๋ฅํ ํจ์จ์ ์ธ RAG ์ํฌํ๋ก๋ฅผ ์ ๊ณตํ๋ฉฐ, ํตํฉ ์ปจํ ์คํธ ์์ง๊ณผ ์ฌ์ ๊ตฌ์ถ๋ Agent ํ ํ๋ฆฟ์ ํตํด ๊ฐ๋ฐ์๋ค์ด ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์์ธ์ ์ธ ํจ์จ์ฑ๊ณผ ์ ๋ฐ๋๋ก ๊ณ ๊ธ ๊ตฌํ๋์ ํ๋ก๋์ ์ค๋น ์๋ฃ AI ์์คํ ์ผ๋ก ๋ณํํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
๋ฐ๋ชจ๋ฅผ https://cloud.ragflow.io์์ ์คํํด ๋ณด์ธ์.
<div align="center" style="margin-top:20px;margin-bottom:20px;"> </div>โญ๏ธ์ฐ๋ฆฌ์ ์ ์ฅ์๋ฅผ ์ฆ๊ฒจ์ฐพ๊ธฐ์ ๋ฑ๋กํ์ฌ ํฅ๋ฏธ๋ก์ด ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ์ ๋ฐ์ดํธ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ์ธ์! ๋ชจ๋ ์๋ก์ด ๋ฆด๋ฆฌ์ค์ ๋ํ ์ฆ์ ์๋ฆผ์ ๋ฐ์ผ์ธ์! ๐
<div align="center" style="margin-top:20px;margin-bottom:20px;"> </div>[!TIP] ๋ก์ปฌ ๋จธ์ (Windows, Mac, Linux)์ Docker๊ฐ ์ค์น๋์ง ์์ ๊ฒฝ์ฐ, Docker ์์ง ์ค์น๋ฅผ ์ฐธ์กฐํ์ธ์.
vm.max_map_count๊ฐ 262144 ์ด์์ธ์ง ํ์ธํ์ธ์:
vm.max_map_count์ ๊ฐ์ ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ธํ์ธ์:bash$ sysctl vm.max_map_count๋ง์ฝ
vm.max_map_count์ด 262144 ๋ณด๋ค ์๋ค๋ฉด ๊ฐ์ ์์ค์ ํ์ธ์.bash# ์ด ๊ฒฝ์ฐ์ 262144๋ก ์ค์ ํ์ต๋๋ค.: $ sudo sysctl -w vm.max_map_count=262144์ด ๋ณ๊ฒฝ ์ฌํญ์ ์์คํ ์ฌ๋ถํ ํ์ ์ด๊ธฐํ๋ฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฉํ๋ ค๋ฉด /etc/sysctl.conf ํ์ผ์ vm.max_map_count ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ์ธ์:
bashvm.max_map_count=262144
๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ์ธ์:
$ git clone https://github.com/infiniflow/ragflow.git
๋ฏธ๋ฆฌ ๋น๋๋ Docker ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ ์๋ฒ๋ฅผ ์์ํ์ธ์:
[!CAUTION] ๋ชจ๋ Docker ์ด๋ฏธ์ง๋ x86 ํ๋ซํผ์ ์ํด ๋น๋๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ์ฌ ARM64 ํ๋ซํผ์ ์ํ Docker ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. ARM64 ํ๋ซํผ์ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด, ์์คํ ๊ณผ ํธํ๋๋ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ค๋ฉด ์ด ๊ฐ์ด๋๋ฅผ ์ฌ์ฉํด ์ฃผ์ธ์.
์๋ ๋ช ๋ น์ด๋ RAGFlow Docker ์ด๋ฏธ์ง์ v0.25.1 ๋ฒ์ ์ ๋ค์ด๋ก๋ํฉ๋๋ค. ๋ค์ํ RAGFlow ๋ฒ์ ์ ๋ํ ์ค๋ช ์ ๋ค์ ํ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. v0.25.1๊ณผ ๋ค๋ฅธ RAGFlow ๋ฒ์ ์ ๋ค์ด๋ก๋ํ๋ ค๋ฉด, docker/.env ํ์ผ์์ RAGFLOW_IMAGE ๋ณ์๋ฅผ ์ ์ ํ ์ ๋ฐ์ดํธํ ํ docker compose๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ๋ฅผ ์์ํ์ญ์์ค.
$ cd ragflow/docker
# git checkout v0.25.1
# Optional: use a stable tag (see releases: https://github.com/infiniflow/ragflow/releases)
# ์ด ๋จ๊ณ๋ ์ฝ๋์ entrypoint.sh ํ์ผ์ด Docker ์ด๋ฏธ์ง ๋ฒ์ ๊ณผ ์ผ์นํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
# Use CPU for DeepDoc tasks:
$ docker compose -f docker-compose.yml up -d
# To use GPU to accelerate DeepDoc tasks:
# sed -i '1i DEVICE=gpu' .env
# docker compose -f docker-compose.yml up -d
์ฐธ๊ณ :
v0.22.0์ด์ ๋ฒ์ ์์๋ embedding ๋ชจ๋ธ์ด ํฌํจ๋ ์ด๋ฏธ์ง์ embedding ๋ชจ๋ธ์ด ํฌํจ๋์ง ์์ slim ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ ์ ๊ณตํ์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
| RAGFlow image tag | Image size (GB) | Has embedding models? | Stable? |
|---|---|---|---|
| v0.21.1 | โ9 | โ๏ธ | Stable release |
| v0.21.1-slim | โ2 | โ | Stable release |
v0.22.0๋ถํฐ๋ slim ์๋์ ๋ง ๋ฐฐํฌํ๋ฉฐ ์ด๋ฏธ์ง ํ๊ทธ์ -slim ์ ๋ฏธ์ฌ๋ฅผ ๋ ์ด์ ๋ถ์ด์ง ์์ต๋๋ค.
์๋ฒ๊ฐ ์์๋ ํ ์๋ฒ ์ํ๋ฅผ ํ์ธํ์ธ์:
$ docker logs -f docker-ragflow-cpu-1
๋ค์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ก ์์คํ ์ด ์ฑ๊ณต์ ์ผ๋ก ์์๋์์์ ํ์ธํฉ๋๋ค:
____ ___ ______ ______ __
/ __ \ / | / ____// ____// /____ _ __
/ /_/ // /| | / / __ / /_ / // __ \| | /| / /
/ _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ /
/_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/
* Running on all addresses (0.0.0.0)
๋ง์ฝ ํ์ธ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ๊ณ ๋ฐ๋ก RAGFlow์ ๋ก๊ทธ์ธํ๋ฉด, RAGFlow๊ฐ ์์ ํ ์ด๊ธฐํ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์์
network abnormal์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์น ๋ธ๋ผ์ฐ์ ์ ์๋ฒ์ IP ์ฃผ์๋ฅผ ์ ๋ ฅํ๊ณ RAGFlow์ ๋ก๊ทธ์ธํ์ธ์.
๊ธฐ๋ณธ ์ค์ ์ ์ฌ์ฉํ ๊ฒฝ์ฐ,
http://IP_OF_YOUR_MACHINE๋ง ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค (ํฌํธ ๋ฒํธ๋ ์ ์ธ). ๊ธฐ๋ณธ HTTP ์๋น์ค ํฌํธ80์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ผ๋ก ์ฌ์ฉํ ๋ ์๋ตํ ์ ์์ต๋๋ค.
service_conf.yaml.template ํ์ผ์์ ์ํ๋ LLM ํฉํ ๋ฆฌ๋ฅผ user_default_llm์ ์ ํํ๊ณ , API_KEY ํ๋๋ฅผ ํด๋น API ํค๋ก ์
๋ฐ์ดํธํ์ธ์.
์์ธํ ๋ด์ฉ์ llm_api_key_setup๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด์ ์ผ๊ฐ ์์๋ฉ๋๋ค!
์์คํ ์ค์ ๊ณผ ๊ด๋ จํ์ฌ ๋ค์ ํ์ผ๋ค์ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค:
SVR_HTTP_PORT, MYSQL_PASSWORD, MINIO_PASSWORD์ ๊ฐ์ ์์คํ
์ ๊ธฐ๋ณธ ์ค์ ์ ํฌํจํฉ๋๋ค..env ํ์ผ์ ๋ณ๊ฒฝ ์ฌํญ์ด service_conf.yaml.template ํ์ผ์ ๋ด์ฉ๊ณผ ์ผ์นํ๋๋ก ํด์ผ ํฉ๋๋ค.
./docker/README ํ์ผ ./docker/README์ service_conf.yaml.template ํ์ผ์์ ${ENV_VARS}๋ก ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ ์ค์ ๊ณผ ์๋น์ค ๊ตฌ์ฑ์ ๋ํ ์์ธํ ์ค๋ช ์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ๋ณธ HTTP ์๋น์ค ํฌํธ(80)๋ฅผ ์
๋ฐ์ดํธํ๋ ค๋ฉด docker-compose.yml ํ์ผ์์ 80:80์ <YOUR_SERVING_PORT>:80์ผ๋ก ๋ณ๊ฒฝํ์ธ์.
๋ชจ๋ ์์คํ ๊ตฌ์ฑ ์ ๋ฐ์ดํธ๋ ์ ์ฉ๋๊ธฐ ์ํด ์์คํ ์ฌ๋ถํ ์ด ํ์ํฉ๋๋ค.
bash$ docker compose -f docker-compose.yml up -d
RAGFlow ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Elasticsearch ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ํ ์คํธ ๋ฐ ๋ฒกํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. [Infinity]๋ก ์ ํ(https://github.com/infiniflow/infinity/), ๋ค์ ์ ์ฐจ๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
$docker compose-f docker/docker-compose.yml down -v
-v ๋ docker ์ปจํ
์ด๋์ ๋ณผ๋ฅจ์ ์ญ์ ํ๊ณ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๋ฉฐ, ์ด ์์
์ ์ปจํ
์ด๋๋ฅผ ์ค์งํ๋ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค.$docker compose-f docker/docker-compose.yml up -d
[!WARNING] Linux/arm64 ์์คํ ์์ Infinity๋ก ์ ํํ๋ ๊ฒ์ ๊ณต์์ ์ผ๋ก ์ง์๋์ง ์์ต๋๋ค.
์ด Docker ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ ์ฝ 1GB์ด๋ฉฐ, ์ธ๋ถ ๋ํ ๋ชจ๋ธ๊ณผ ์๋ฒ ๋ฉ ์๋น์ค์ ์์กดํฉ๋๋ค.
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
docker build --platform linux/amd64 -f Dockerfile -t infiniflow/ragflow:nightly .
ํ๋ก์ ํ๊ฒฝ์ธ ๊ฒฝ์ฐ, ํ๋ก์ ์ธ์๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค๏ผ
docker build --platform linux/amd64 \
--build-arg http_proxy=http://YOUR_PROXY:PORT \
--build-arg https_proxy=http://YOUR_PROXY:PORT \
-f Dockerfile -t infiniflow/ragflow:nightly .
uv ์ pre-commit ์ ์ค์นํ๊ฑฐ๋, ์ด๋ฏธ ์ค์น๋ ๊ฒฝ์ฐ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค:
pipx install uv pre-commit
์์ค ์ฝ๋๋ฅผ ํด๋ก ํ๊ณ Python ์์กด์ฑ์ ์ค์นํฉ๋๋ค:
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
uv sync --python 3.12 # install RAGFlow dependent python modules
uv run python3 download_deps.py
pre-commit install
Docker Compose๋ฅผ ์ฌ์ฉํ์ฌ ์์กด ์๋น์ค(MinIO, Elasticsearch, Redis ๋ฐ MySQL)๋ฅผ ์์ํฉ๋๋ค:
docker compose -f docker/docker-compose-base.yml up -d
/etc/hosts ์ ๋ค์ ์ค์ ์ถ๊ฐํ์ฌ conf/service_conf.yaml ์ ์ง์ ๋ ๋ชจ๋ ํธ์คํธ๋ฅผ 127.0.0.1 ๋ก ํด๊ฒฐํฉ๋๋ค:
127.0.0.1 es01 infinity mysql minio redis sandbox-executor-manager
HuggingFace์ ์ ๊ทผํ ์ ์๋ ๊ฒฝ์ฐ, HF_ENDPOINT ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ฌ ๋ฏธ๋ฌ ์ฌ์ดํธ๋ฅผ ์ฌ์ฉํ์ธ์:
export HF_ENDPOINT=https://hf-mirror.com
๋ง์ฝ ์ด์ ์ฒด์ ์ jemalloc์ด ์์ผ๋ฉด ๋ค์ ๋ฐฉ์์ผ๋ก ์ค์นํ์ธ์:
# ubuntu
sudo apt-get install libjemalloc-dev
# centos
sudo yum install jemalloc
# mac
sudo brew install jemalloc
๋ฐฑ์๋ ์๋น์ค๋ฅผ ์์ํฉ๋๋ค:
source .venv/bin/activate
export PYTHONPATH=$(pwd)
bash docker/launch_backend_service.sh
ํ๋ก ํธ์๋ ์์กด์ฑ์ ์ค์นํฉ๋๋ค:
cd web
npm install
ํ๋ก ํธ์๋ ์๋น์ค๋ฅผ ์์ํฉ๋๋ค:
npm run dev
๋ค์ ์ธํฐํ์ด์ค๋ ์์คํ ์ด ์ฑ๊ณต์ ์ผ๋ก ์์๋์์์ ๋ํ๋ ๋๋ค:
๊ฐ๋ฐ์ด ์๋ฃ๋ ํ RAGFlow ํ๋ก ํธ์๋ ๋ฐ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ์ค์งํฉ๋๋ค.
pkill -f "ragflow_server.py|task_executor.py"
RAGFlow ๋ก๋๋งต 2026์ ํ์ธํ์ธ์.
RAGFlow๋ ์คํ์์ค ํ์ ์ ํตํด ๋ฐ์ ํฉ๋๋ค. ์ด๋ฌํ ์ ์ ์ ๋ฐํ์ผ๋ก, ์ฐ๋ฆฌ๋ ์ปค๋ฎค๋ํฐ์ ๋ค์ํ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค. ์ฐธ์ฌํ๊ณ ์ถ์ผ์๋ค๋ฉด, ๋จผ์ ๊ฐ์ด๋๋ผ์ธ์ ๊ฒํ ํด ์ฃผ์ธ์.