English | ็ฎไฝไธญๆ | ๆฅๆฌ่ช | ํ๊ตญ์ด |
Document | Roadmap | Twitter | Discord | Demo
๐ก RAGFlow๋?
RAGFlow๋ ์ฌ์ธต ๋ฌธ์ ์ดํด์ ๊ธฐ๋ฐํ ์คํ์์ค RAG (Retrieval-Augmented Generation) ์์ง์ ๋๋ค. ์ด ์์ง์ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ(LLM)๊ณผ ๊ฒฐํฉํ์ฌ ์ ํํ ์ง๋ฌธ ์๋ต ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ๋ค์ํ ๋ณต์กํ ํ์์ ๋ฐ์ดํฐ์์ ์ ๋ขฐํ ์ ์๋ ์ถ์ฒ๋ฅผ ๋ฐํ์ผ๋ก ํ ์ธ์ฉ์ ํตํด ์ด๋ฅผ ๋ท๋ฐ์นจํฉ๋๋ค. RAGFlow๋ ๊ท๋ชจ์ ์๊ด์์ด ๋ชจ๋ ๊ธฐ์ ์ ์ต์ ํ๋ RAG ์ํฌํ๋ก์ฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๐ฎ ๋ฐ๋ชจ
๋ฐ๋ชจ๋ฅผ https://demo.ragflow.io์์ ์คํํด ๋ณด์ธ์.
๐ฅ ์ ๋ฐ์ดํธ
2024-09-29 ๋ค๋จ๊ณ ๋ํ๋ฅผ ์ต์ ํํฉ๋๋ค.
2024-09-13 ์ง์๋ฒ ์ด์ค Q&A ๊ฒ์ ๋ชจ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
2024-09-09 Agent์ ์๋ฃ์๋ด ํ ํ๋ฆฟ์ ์ถ๊ฐํ์์ต๋๋ค.
2024-08-22 RAG๋ฅผ ํตํด SQL ๋ฌธ์ ํ ์คํธ๋ฅผ ์ง์ํฉ๋๋ค.
2024-08-02: graphrag์ ๋ง์ธ๋๋งต์์ ์๊ฐ์ ๋ฐ์ GraphRAG๋ฅผ ์ง์ํฉ๋๋ค.
๐ ๊ณ์ ์ง์ผ๋ด ์ฃผ์ธ์
โญ๏ธ์ฐ๋ฆฌ์ ์ ์ฅ์๋ฅผ ์ฆ๊ฒจ์ฐพ๊ธฐ์ ๋ฑ๋กํ์ฌ ํฅ๋ฏธ๋ก์ด ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ์ ๋ฐ์ดํธ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ์ธ์! ๋ชจ๋ ์๋ก์ด ๋ฆด๋ฆฌ์ค์ ๋ํ ์ฆ์ ์๋ฆผ์ ๋ฐ์ผ์ธ์! ๐
๐ ์ฃผ์ ๊ธฐ๋ฅ
๐ญ "Quality in, quality out"
- ์ฌ์ธต ๋ฌธ์ ์ดํด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณต์กํ ํ์์ ๋น์ ํ ๋ฐ์ดํฐ์์ ์ง์์ ์ถ์ถํฉ๋๋ค.
- ๋ฌธ์ ๊ทธ๋๋ก ๋ฌดํํ ํ ํฐ์์ "๋ฐ์ดํฐ ์์ ๋ฐ๋"์ ์ฐพ์๋ ๋๋ค.
๐ฑ ํ ํ๋ฆฟ ๊ธฐ๋ฐ์ chunking
- ๋๋ํ๊ณ ์ค๋ช ๊ฐ๋ฅํ ๋ฐฉ์.
- ๋ค์ํ ํ ํ๋ฆฟ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
๐ฑ ํ ๋ฃจ์๋ค์ด์ ์ ์ค์ธ ์ ๋ขฐํ ์ ์๋ ์ธ์ฉ
- ํ ์คํธ ์ฒญํน์ ์๊ฐํํ์ฌ ์ฌ์ฉ์๊ฐ ๊ฐ์ ํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ค์ํ ์ฐธ๊ณ ์๋ฃ์ ์ถ์ ๊ฐ๋ฅํ ์ธ์ฉ์ ๋น ๋ฅด๊ฒ ํ์ธํ์ฌ ์ ๋ขฐํ ์ ์๋ ๋ต๋ณ์ ์ง์ํฉ๋๋ค.
๐ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ฐ์ดํฐ ์์ค์์ ํธํ์ฑ
- ์๋, ์ฌ๋ผ์ด๋, ์์ , ํ ์คํธ ํ์ผ, ์ด๋ฏธ์ง, ์ค์บ๋ณธ, ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ, ์น ํ์ด์ง ๋ฑ์ ์ง์ํฉ๋๋ค.
๐ ์๋ํ๋๊ณ ์์ฌ์ด RAG ์ํฌํ๋ก์ฐ
- ๊ฐ์ธ ๋ฐ ๋๊ท๋ชจ ๋น์ฆ๋์ค์ ๋ง์ถ ํจ์จ์ ์ธ RAG ์ค์ผ์คํธ๋ ์ด์ .
- ๊ตฌ์ฑ ๊ฐ๋ฅํ LLM ๋ฐ ์๋ฒ ๋ฉ ๋ชจ๋ธ.
- ๋ค์ค ๊ฒ์๊ณผ ๊ฒฐํฉ๋ re-ranking.
- ๋น์ฆ๋์ค์ ์ํํ๊ฒ ํตํฉํ ์ ์๋ ์ง๊ด์ ์ธ API.
๐ ์์คํ ์ํคํ ์ฒ
๐ฌ ์์ํ๊ธฐ
๐ ์ฌ์ ์ค๋น ์ฌํญ
- CPU >= 4 cores
- RAM >= 16 GB
- Disk >= 50 GB
- Docker >= 24.0.0 & Docker Compose >= v2.26.1
๋ก์ปฌ ๋จธ์ (Windows, Mac, Linux)์ Docker๊ฐ ์ค์น๋์ง ์์ ๊ฒฝ์ฐ, Docker ์์ง ์ค์น๋ฅผ ์ฐธ์กฐํ์ธ์.
๐ ์๋ฒ ์์ํ๊ธฐ
vm.max_map_count
๊ฐ 262144 ์ด์์ธ์ง ํ์ธํ์ธ์:vm.max_map_count
์ ๊ฐ์ ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ธํ์ธ์:$ sysctl vm.max_map_count
๋ง์ฝ
vm.max_map_count
์ด 262144 ๋ณด๋ค ์๋ค๋ฉด ๊ฐ์ ์์ค์ ํ์ธ์.# ์ด ๊ฒฝ์ฐ์ 262144๋ก ์ค์ ํ์ต๋๋ค.: $ sudo sysctl -w vm.max_map_count=262144
์ด ๋ณ๊ฒฝ ์ฌํญ์ ์์คํ ์ฌ๋ถํ ํ์ ์ด๊ธฐํ๋ฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฉํ๋ ค๋ฉด /etc/sysctl.conf ํ์ผ์ vm.max_map_count ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ์ธ์:
vm.max_map_count=262144
๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ์ธ์:
$ git clone https://github.com/infiniflow/ragflow.git
๋ฏธ๋ฆฌ ๋น๋๋ Docker ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ ์๋ฒ๋ฅผ ์์ํ์ธ์:
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด dev ๋ฒ์ ์ RAGFlow Docker ์ด๋ฏธ์ง๊ฐ ์๋์ผ๋ก ๋ค์ด๋ก๋๋ฉ๋๋ค. ํน์ Docker ๋ฒ์ ์ ๋ค์ด๋ก๋ํ๊ณ ์คํํ๋ ค๋ฉด, docker/.env ํ์ผ์์
RAGFLOW_IMAGE
์ ์ํ๋ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ ํ, ์๋ฅผ ๋ค์ดRAGFLOW_IMAGE=infiniflow/ragflow:v0.12.0
๋ก ์ ๋ฐ์ดํธ ํ ๋ค, ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ธ์.$ cd ragflow/docker $ chmod +x ./entrypoint.sh $ docker compose up -d
๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ ์ฝ 9GB ํฌ๊ธฐ์ด๋ฉฐ ๋ก๋ํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
์๋ฒ๊ฐ ์์๋ ํ ์๋ฒ ์ํ๋ฅผ ํ์ธํ์ธ์:
$ docker logs -f ragflow-server
๋ค์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ก ์์คํ ์ด ์ฑ๊ณต์ ์ผ๋ก ์์๋์์์ ํ์ธํฉ๋๋ค:
____ ___ ______ ______ __ / __ \ / | / ____// ____// /____ _ __ / /_/ // /| | / / __ / /_ / // __ \| | /| / / / _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ / /_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/ * 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
๋ง์ฝ ํ์ธ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ๊ณ ๋ฐ๋ก RAGFlow์ ๋ก๊ทธ์ธํ๋ฉด, RAGFlow๊ฐ ์์ ํ ์ด๊ธฐํ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์์
network abnormal
์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.์น ๋ธ๋ผ์ฐ์ ์ ์๋ฒ์ IP ์ฃผ์๋ฅผ ์ ๋ ฅํ๊ณ RAGFlow์ ๋ก๊ทธ์ธํ์ธ์.
๊ธฐ๋ณธ ์ค์ ์ ์ฌ์ฉํ ๊ฒฝ์ฐ,
http://IP_OF_YOUR_MACHINE
๋ง ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค (ํฌํธ ๋ฒํธ๋ ์ ์ธ). ๊ธฐ๋ณธ HTTP ์๋น์ค ํฌํธ80
์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ผ๋ก ์ฌ์ฉํ ๋ ์๋ตํ ์ ์์ต๋๋ค.service_conf.yaml ํ์ผ์์ ์ํ๋ LLM ํฉํ ๋ฆฌ๋ฅผ
user_default_llm
์ ์ ํํ๊ณ ,API_KEY
ํ๋๋ฅผ ํด๋น API ํค๋ก ์ ๋ฐ์ดํธํ์ธ์.์์ธํ ๋ด์ฉ์ llm_api_key_setup๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด์ ์ผ๊ฐ ์์๋ฉ๋๋ค!
๐ง ์ค์
์์คํ ์ค์ ๊ณผ ๊ด๋ จํ์ฌ ๋ค์ ํ์ผ๋ค์ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค:
- .env:
SVR_HTTP_PORT
,MYSQL_PASSWORD
,MINIO_PASSWORD
์ ๊ฐ์ ์์คํ ์ ๊ธฐ๋ณธ ์ค์ ์ ํฌํจํฉ๋๋ค. - service_conf.yaml: ๋ฐฑ์๋ ์๋น์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- docker-compose.yml: ์์คํ ์ docker-compose.yml์ ์ฌ์ฉํ์ฌ ์์๋ฉ๋๋ค.
.env ํ์ผ์ ๋ณ๊ฒฝ ์ฌํญ์ด service_conf.yaml ํ์ผ์ ๋ด์ฉ๊ณผ ์ผ์นํ๋๋ก ํด์ผ ํฉ๋๋ค.
./docker/README ํ์ผ์๋ ํ๊ฒฝ ์ค์ ๊ณผ ์๋น์ค ๊ตฌ์ฑ์ ๋ํ ์์ธํ ์ค๋ช ์ด ์์ผ๋ฉฐ, ./docker/README ํ์ผ์ ๋์ด๋ ๋ชจ๋ ํ๊ฒฝ ์ค์ ์ด service_conf.yaml ํ์ผ์ ํด๋น ๊ตฌ์ฑ๊ณผ ์ผ์นํ๋๋ก ํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ HTTP ์๋น์ค ํฌํธ(80)๋ฅผ ์
๋ฐ์ดํธํ๋ ค๋ฉด docker-compose.yml ํ์ผ์์ 80:80
์ <YOUR_SERVING_PORT>:80
์ผ๋ก ๋ณ๊ฒฝํ์ธ์.
๋ชจ๋ ์์คํ ๊ตฌ์ฑ ์ ๋ฐ์ดํธ๋ ์ ์ฉ๋๊ธฐ ์ํด ์์คํ ์ฌ๋ถํ ์ด ํ์ํฉ๋๋ค.
$ docker compose -f docker/docker-compose.yml up -d
๐ง ์์ค ์ฝ๋๋ก Docker ์ด๋ฏธ์ง๋ฅผ ์ปดํ์ผํฉ๋๋ค(์๋ฒ ๋ฉ ๋ชจ๋ธ ํฌํจํ์ง ์์)
์ด Docker ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ ์ฝ 1GB์ด๋ฉฐ, ์ธ๋ถ ๋ํ ๋ชจ๋ธ๊ณผ ์๋ฒ ๋ฉ ์๋น์ค์ ์์กดํฉ๋๋ค.
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 .
๐ง ์์ค ์ฝ๋๋ก Docker ์ด๋ฏธ์ง๋ฅผ ์ปดํ์ผํฉ๋๋ค(์๋ฒ ๋ฉ ๋ชจ๋ธ ํฌํจ)
์ด Docker์ ํฌ๊ธฐ๋ ์ฝ 9GB์ด๋ฉฐ, ์ด๋ฏธ ์๋ฒ ๋ฉ ๋ชจ๋ธ์ ํฌํจํ๊ณ ์์ผ๋ฏ๋ก ์ธ๋ถ ๋ํ ๋ชจ๋ธ ์๋น์ค์๋ง ์์กดํ๋ฉด ๋ฉ๋๋ค.
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 .
๐จ ์์ค ์ฝ๋๋ก ์๋น์ค๋ฅผ ์์ํฉ๋๋ค.
Poetry๋ฅผ ์ค์นํ๊ฑฐ๋ ์ด๋ฏธ ์ค์น๋ ๊ฒฝ์ฐ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค:
curl -sSL https://install.python-poetry.org | python3 -
์์ค ์ฝ๋๋ฅผ ํด๋ก ํ๊ณ 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 RAGFlow dependent python modules
Docker Compose๋ฅผ ์ฌ์ฉํ์ฌ ์์กด ์๋น์ค(MinIO, Elasticsearch, Redis ๋ฐ MySQL)๋ฅผ ์์ํฉ๋๋ค:
docker compose -f docker/docker-compose-base.yml up -d
/etc/hosts
์ ๋ค์ ์ค์ ์ถ๊ฐํ์ฌ docker/service_conf.yaml ์ ์ง์ ๋ ๋ชจ๋ ํธ์คํธ๋ฅผ127.0.0.1
๋ก ํด๊ฒฐํฉ๋๋ค:127.0.0.1 es01 mysql minio redis
docker/service_conf.yaml ์์ mysql ํฌํธ๋ฅผ
5455
๋ก, es ํฌํธ๋ฅผ1200
์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค( docker/.env ์ ์ง์ ๋ ๋๋ก).HuggingFace์ ์ ๊ทผํ ์ ์๋ ๊ฒฝ์ฐ,
HF_ENDPOINT
ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ฌ ๋ฏธ๋ฌ ์ฌ์ดํธ๋ฅผ ์ฌ์ฉํ์ธ์:export HF_ENDPOINT=https://hf-mirror.com
๋ฐฑ์๋ ์๋น์ค๋ฅผ ์์ํฉ๋๋ค:
source .venv/bin/activate export PYTHONPATH=$(pwd) bash docker/launch_backend_service.sh
ํ๋ก ํธ์๋ ์์กด์ฑ์ ์ค์นํฉ๋๋ค:
cd web npm install --force
.umirc.ts ์์
proxy.target
์http://127.0.0.1:9380
์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค:ํ๋ก ํธ์๋ ์๋น์ค๋ฅผ ์์ํฉ๋๋ค:
npm run dev
๋ค์ ์ธํฐํ์ด์ค๋ ์์คํ ์ด ์ฑ๊ณต์ ์ผ๋ก ์์๋์์์ ๋ํ๋ ๋๋ค:
๐ ๋ฌธ์
๐ ๋ก๋๋งต
RAGFlow ๋ก๋๋งต 2024์ ํ์ธํ์ธ์.
๐ ์ปค๋ฎค๋ํฐ
๐ ์ปจํธ๋ฆฌ๋ทฐ์
RAGFlow๋ ์คํ์์ค ํ์ ์ ํตํด ๋ฐ์ ํฉ๋๋ค. ์ด๋ฌํ ์ ์ ์ ๋ฐํ์ผ๋ก, ์ฐ๋ฆฌ๋ ์ปค๋ฎค๋ํฐ์ ๋ค์ํ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค. ์ฐธ์ฌํ๊ณ ์ถ์ผ์๋ค๋ฉด, ๋จผ์ ๊ฐ์ด๋๋ผ์ธ์ ๊ฒํ ํด ์ฃผ์ธ์.