ragflow / README_ko.md
Kevin Hu
prepare document for release (#2438)
9cb9cc1
|
raw
history blame
13.2 kB
<div align="center">
<a href="https://demo.ragflow.io/">
<img src="web/src/assets/logo-with-text.png" width="520" alt="ragflow logo">
</a>
</div>
<p align="center">
<a href="./README.md">English</a> |
<a href="./README_zh.md">็ฎ€ไฝ“ไธญๆ–‡</a> |
<a href="./README_ja.md">ๆ—ฅๆœฌ่ชž</a> |
<a href="./README_ko.md">ํ•œ๊ตญ์–ด</a> |
</p>
<p align="center">
<a href="https://github.com/infiniflow/ragflow/releases/latest">
<img src="https://img.shields.io/github/v/release/infiniflow/ragflow?color=blue&label=Latest%20Release" alt="Latest Release">
</a>
<a href="https://demo.ragflow.io" target="_blank">
<img alt="Static Badge" src="https://img.shields.io/badge/Online-Demo-4e6b99"></a>
<a href="https://hub.docker.com/r/infiniflow/ragflow" target="_blank">
<img src="https://img.shields.io/badge/docker_pull-ragflow:v0.11.0-brightgreen" alt="docker pull infiniflow/ragflow:v0.11.0"></a>
<a href="https://github.com/infiniflow/ragflow/blob/main/LICENSE">
<img height="21" src="https://img.shields.io/badge/License-Apache--2.0-ffffff?labelColor=d4eaf7&color=2e6cc4" alt="license">
</a>
</p>
<h4 align="center">
<a href="https://ragflow.io/docs/dev/">Document</a> |
<a href="https://github.com/infiniflow/ragflow/issues/162">Roadmap</a> |
<a href="https://twitter.com/infiniflowai">Twitter</a> |
<a href="https://discord.gg/4XxujFgUN7">Discord</a> |
<a href="https://demo.ragflow.io">Demo</a>
</h4>
## ๐Ÿ’ก RAGFlow๋ž€?
[RAGFlow](https://ragflow.io/)๋Š” ์‹ฌ์ธต ๋ฌธ์„œ ์ดํ•ด์— ๊ธฐ๋ฐ˜ํ•œ ์˜คํ”ˆ์†Œ์Šค RAG (Retrieval-Augmented Generation) ์—”์ง„์ž…๋‹ˆ๋‹ค. ์ด ์—”์ง„์€ ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(LLM)๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ •ํ™•ํ•œ ์งˆ๋ฌธ ์‘๋‹ต ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ๋ณต์žกํ•œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ์—์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ถœ์ฒ˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ์ธ์šฉ์„ ํ†ตํ•ด ์ด๋ฅผ ๋’ท๋ฐ›์นจํ•ฉ๋‹ˆ๋‹ค. RAGFlow๋Š” ๊ทœ๋ชจ์— ์ƒ๊ด€์—†์ด ๋ชจ๋“  ๊ธฐ์—…์— ์ตœ์ ํ™”๋œ RAG ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
## ๐ŸŽฎ ๋ฐ๋ชจ
๋ฐ๋ชจ๋ฅผ [https://demo.ragflow.io](https://demo.ragflow.io)์—์„œ ์‹คํ–‰ํ•ด ๋ณด์„ธ์š”.
<div align="center" style="margin-top:20px;margin-bottom:20px;">
<img src="https://github.com/infiniflow/ragflow/assets/7248/2f6baa3e-1092-4f11-866d-36f6a9d075e5" width="1200"/>
<img src="https://github.com/infiniflow/ragflow/assets/12318111/b083d173-dadc-4ea9-bdeb-180d7df514eb" width="1200"/>
</div>
## ๐Ÿ”ฅ ์—…๋ฐ์ดํŠธ
- 2024-09-13 ์ง€์‹๋ฒ ์ด์Šค Q&A ๊ฒ€์ƒ‰ ๋ชจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
- 2024-09-09 Agent์— ์˜๋ฃŒ์ƒ๋‹ด ํ…œํ”Œ๋ฆฟ์„ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
- 2024-08-22 RAG๋ฅผ ํ†ตํ•ด SQL ๋ฌธ์— ํ…์ŠคํŠธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
- 2024-08-02: [graphrag](https://github.com/microsoft/graphrag)์™€ ๋งˆ์ธ๋“œ๋งต์—์„œ ์˜๊ฐ์„ ๋ฐ›์€ GraphRAG๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
- 2024-07-23: ์˜ค๋””์˜ค ํŒŒ์ผ ๋ถ„์„์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
- 2024-07-08: [Graph](./agent/README.md)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
- 2024-06-27 Q&A ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐฉ์‹์—์„œ Markdown ๋ฐ Docx๋ฅผ ์ง€์›ํ•˜๊ณ , Docx ํŒŒ์ผ์—์„œ ์ด๋ฏธ์ง€ ์ถ”์ถœ, Markdown ํŒŒ์ผ์—์„œ ํ…Œ์ด๋ธ” ์ถ”์ถœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
- 2024-05-23: ๋” ๋‚˜์€ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด [RAPTOR](https://arxiv.org/html/2401.18059v1)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
## ๐ŸŒŸ ์ฃผ์š” ๊ธฐ๋Šฅ
### ๐Ÿญ **"Quality in, quality out"**
- [์‹ฌ์ธต ๋ฌธ์„œ ์ดํ•ด](./deepdoc/README.md)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณต์žกํ•œ ํ˜•์‹์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ์—์„œ ์ง€์‹์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
- ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋ฌดํ•œํ•œ ํ† ํฐ์—์„œ "๋ฐ์ดํ„ฐ ์†์˜ ๋ฐ”๋Š˜"์„ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค.
### ๐Ÿฑ **ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜์˜ chunking**
- ๋˜‘๋˜‘ํ•˜๊ณ  ์„ค๋ช… ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹.
- ๋‹ค์–‘ํ•œ ํ…œํ”Œ๋ฆฟ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
### ๐ŸŒฑ **ํ• ๋ฃจ์‹œ๋„ค์ด์…˜์„ ์ค„์ธ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์šฉ**
- ํ…์ŠคํŠธ ์ฒญํ‚น์„ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ์ž…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
- ์ค‘์š”ํ•œ ์ฐธ๊ณ  ์ž๋ฃŒ์™€ ์ถ”์  ๊ฐ€๋Šฅํ•œ ์ธ์šฉ์„ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜์—ฌ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ต๋ณ€์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
### ๐Ÿ” **๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€์˜ ํ˜ธํ™˜์„ฑ**
- ์›Œ๋“œ, ์Šฌ๋ผ์ด๋“œ, ์—‘์…€, ํ…์ŠคํŠธ ํŒŒ์ผ, ์ด๋ฏธ์ง€, ์Šค์บ”๋ณธ, ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ, ์›น ํŽ˜์ด์ง€ ๋“ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
### ๐Ÿ›€ **์ž๋™ํ™”๋˜๊ณ  ์†์‰ฌ์šด RAG ์›Œํฌํ”Œ๋กœ์šฐ**
- ๊ฐœ์ธ ๋ฐ ๋Œ€๊ทœ๋ชจ ๋น„์ฆˆ๋‹ˆ์Šค์— ๋งž์ถ˜ ํšจ์œจ์ ์ธ RAG ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜.
- ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ LLM ๋ฐ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ.
- ๋‹ค์ค‘ ๊ฒ€์ƒ‰๊ณผ ๊ฒฐํ•ฉ๋œ re-ranking.
- ๋น„์ฆˆ๋‹ˆ์Šค์™€ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง๊ด€์ ์ธ API.
## ๐Ÿ”Ž ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜
<div align="center" style="margin-top:20px;margin-bottom:20px;">
<img src="https://github.com/infiniflow/ragflow/assets/12318111/d6ac5664-c237-4200-a7c2-a4a00691b485" width="1000"/>
</div>
## ๐ŸŽฌ ์‹œ์ž‘ํ•˜๊ธฐ
### ๐Ÿ“ ์‚ฌ์ „ ์ค€๋น„ ์‚ฌํ•ญ
- CPU >= 4 cores
- RAM >= 16 GB
- Disk >= 50 GB
- Docker >= 24.0.0 & Docker Compose >= v2.26.1
> ๋กœ์ปฌ ๋จธ์‹ (Windows, Mac, Linux)์— Docker๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, [Docker ์—”์ง„ ์„ค์น˜]((https://docs.docker.com/engine/install/))๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
### ๐Ÿš€ ์„œ๋ฒ„ ์‹œ์ž‘ํ•˜๊ธฐ
1. `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 ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”:
>
> ```bash
> vm.max_map_count=262144
> ```
2. ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํด๋ก ํ•˜์„ธ์š”:
```bash
$ git clone https://github.com/infiniflow/ragflow.git
```
3. ๋ฏธ๋ฆฌ ๋นŒ๋“œ๋œ Docker ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”:
> ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด *dev* ๋ฒ„์ „์˜ RAGFlow Docker ์ด๋ฏธ์ง€๊ฐ€ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ํŠน์ • Docker ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ ค๋ฉด, **docker/.env** ํŒŒ์ผ์—์„œ `RAGFLOW_VERSION`์„ ์›ํ•˜๋Š” ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ ํ›„, ์˜ˆ๋ฅผ ๋“ค์–ด `RAGFLOW_VERSION=v0.11.0`๋กœ ์—…๋ฐ์ดํŠธ ํ•œ ๋’ค, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.
```bash
$ cd ragflow/docker
$ chmod +x ./entrypoint.sh
$ docker compose up -d
```
> ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋Š” ์•ฝ 9GB ํฌ๊ธฐ์ด๋ฉฐ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
4. ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์„ธ์š”:
```bash
$ docker logs -f ragflow-server
```
_๋‹ค์Œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋กœ ์‹œ์Šคํ…œ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:_
```bash
____ ______ __
/ __ \ ____ _ ____ _ / ____// /____ _ __
/ /_/ // __ `// __ `// /_ / // __ \| | /| / /
/ _, _// /_/ // /_/ // __/ / // /_/ /| |/ |/ /
/_/ |_| \__,_/ \__, //_/ /_/ \____/ |__/|__/
/____/
* 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` ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
5. ์›น ๋ธŒ๋ผ์šฐ์ €์— ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  RAGFlow์— ๋กœ๊ทธ์ธํ•˜์„ธ์š”.
> ๊ธฐ๋ณธ ์„ค์ •์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, `http://IP_OF_YOUR_MACHINE`๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค (ํฌํŠธ ๋ฒˆํ˜ธ๋Š” ์ œ์™ธ). ๊ธฐ๋ณธ HTTP ์„œ๋น„์Šค ํฌํŠธ `80`์€ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
6. [service_conf.yaml](./docker/service_conf.yaml) ํŒŒ์ผ์—์„œ ์›ํ•˜๋Š” LLM ํŒฉํ† ๋ฆฌ๋ฅผ `user_default_llm`์— ์„ ํƒํ•˜๊ณ , `API_KEY` ํ•„๋“œ๋ฅผ ํ•ด๋‹น API ํ‚ค๋กœ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”.
> ์ž์„ธํ•œ ๋‚ด์šฉ์€ [llm_api_key_setup](https://ragflow.io/docs/dev/llm_api_key_setup)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
_์ด์ œ ์‡ผ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค!_
## ๐Ÿ”ง ์„ค์ •
์‹œ์Šคํ…œ ์„ค์ •๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‹ค์Œ ํŒŒ์ผ๋“ค์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
- [.env](./docker/.env): `SVR_HTTP_PORT`, `MYSQL_PASSWORD`, `MINIO_PASSWORD`์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ ์„ค์ •์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
- [service_conf.yaml](./docker/service_conf.yaml): ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
- [docker-compose.yml](./docker/docker-compose.yml): ์‹œ์Šคํ…œ์€ [docker-compose.yml](./docker/docker-compose.yml)์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
[.env](./docker/.env) ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด [service_conf.yaml](./docker/service_conf.yaml) ํŒŒ์ผ์˜ ๋‚ด์šฉ๊ณผ ์ผ์น˜ํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
> [./docker/README](./docker/README.md) ํŒŒ์ผ์—๋Š” ํ™˜๊ฒฝ ์„ค์ •๊ณผ ์„œ๋น„์Šค ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์ด ์žˆ์œผ๋ฉฐ, [./docker/README](./docker/README.md) ํŒŒ์ผ์— ๋‚˜์—ด๋œ ๋ชจ๋“  ํ™˜๊ฒฝ ์„ค์ •์ด [service_conf.yaml](./docker/service_conf.yaml) ํŒŒ์ผ์˜ ํ•ด๋‹น ๊ตฌ์„ฑ๊ณผ ์ผ์น˜ํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ HTTP ์„œ๋น„์Šค ํฌํŠธ(80)๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด [docker-compose.yml](./docker/docker-compose.yml) ํŒŒ์ผ์—์„œ `80:80`์„ `<YOUR_SERVING_PORT>:80`์œผ๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”.
> ๋ชจ๋“  ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์—…๋ฐ์ดํŠธ๋Š” ์ ์šฉ๋˜๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ ์žฌ๋ถ€ํŒ…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
>
> ```bash
> $ docker-compose up -d
> ```
## ๐Ÿ› ๏ธ ์†Œ์Šค์—์„œ ๋นŒ๋“œํ•˜๊ธฐ
Docker ์ด๋ฏธ์ง€๋ฅผ ์†Œ์Šค์—์„œ ๋นŒ๋“œํ•˜๋ ค๋ฉด:
```bash
$ git clone https://github.com/infiniflow/ragflow.git
$ cd ragflow/
$ docker build -t infiniflow/ragflow:dev .
$ cd ragflow/docker
$ chmod +x ./entrypoint.sh
$ docker compose up -d
```
## ๐Ÿ› ๏ธ ์†Œ์Šค์—์„œ ์„œ๋น„์Šค ์‹œ์ž‘ํ•˜๊ธฐ
์„œ๋น„์Šค๋ฅผ ์†Œ์Šค์—์„œ ์‹œ์ž‘ํ•˜๋ ค๋ฉด:
1. ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํด๋ก ํ•˜์„ธ์š”:
```bash
$ git clone https://github.com/infiniflow/ragflow.git
$ cd ragflow/
```
2. ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ , Anaconda ๋˜๋Š” Miniconda๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”:
```bash
$ conda create -n ragflow python=3.11.0
$ conda activate ragflow
$ pip install -r requirements.txt
```
```bash
# CUDA ๋ฒ„์ „์ด 12.0๋ณด๋‹ค ๋†’์€ ๊ฒฝ์šฐ, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ถ”๊ฐ€๋กœ ์‹คํ–‰ํ•˜์„ธ์š”:
$ pip uninstall -y onnxruntime-gpu
$ pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
```
3. ์ง„์ž… ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์„ธ์š”:
```bash
# ํŒŒ์ด์ฌ ๊ฒฝ๋กœ๋ฅผ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค:
$ which python
# RAGFlow ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ๋ฅผ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค:
$ pwd
```
```bash
$ cp docker/entrypoint.sh .
$ vi entrypoint.sh
```
```bash
# ์‹ค์ œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์„ค์ • ์กฐ์ •ํ•˜๊ธฐ (๋‹ค์Œ ๋‘ ๊ฐœ์˜ export ๋ช…๋ น์–ด๋Š” ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค):
# - `which python`์˜ ๊ฒฐ๊ณผ๋ฅผ `PY`์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
# - `pwd`์˜ ๊ฒฐ๊ณผ๋ฅผ `PYTHONPATH`์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
# - `LD_LIBRARY_PATH`๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ฃผ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
# - ์„ ํƒ ์‚ฌํ•ญ: Hugging Face ๋ฏธ๋Ÿฌ ์ถ”๊ฐ€.
PY=${PY}
export PYTHONPATH=${PYTHONPATH}
export HF_ENDPOINT=https://hf-mirror.com
```
4. ๋‹ค๋ฅธ ์„œ๋น„์Šค(MinIO, Elasticsearch, Redis, MySQL)๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”:
```bash
$ cd docker
$ docker compose -f docker-compose-base.yml up -d
```
5. ์„ค์ • ํŒŒ์ผ์„ ํ™•์ธํ•˜์—ฌ ๋‹ค์Œ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์„ธ์š”:
- **docker/.env**์˜ ์„ค์ •์ด **conf/service_conf.yaml**์˜ ์„ค์ •๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
- **service_conf.yaml**์˜ ๊ด€๋ จ ์„œ๋น„์Šค์— ๋Œ€ํ•œ IP ์ฃผ์†Œ์™€ ํฌํŠธ๊ฐ€ ๋กœ์ปฌ ๋จธ์‹ ์˜ IP ์ฃผ์†Œ์™€ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋…ธ์ถœ๋œ ํฌํŠธ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
6. RAGFlow ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:
```bash
$ chmod +x ./entrypoint.sh
$ bash ./entrypoint.sh
```
7. ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:
```bash
$ cd web
$ npm install --registry=https://registry.npmmirror.com --force
$ vim .umirc.ts
# proxy.target์„ http://127.0.0.1:9380๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
$ npm run dev
```
8. ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค:
```bash
$ cd web
$ npm install --registry=https://registry.npmmirror.com --force
$ umi build
$ mkdir -p /ragflow/web
$ cp -r dist /ragflow/web
$ apt install nginx -y
$ cp ../docker/nginx/proxy.conf /etc/nginx
$ cp ../docker/nginx/nginx.conf /etc/nginx
$ cp ../docker/nginx/ragflow.conf /etc/nginx/conf.d
$ systemctl start nginx
```
## ๐Ÿ“š ๋ฌธ์„œ
- [Quickstart](https://ragflow.io/docs/dev/)
- [User guide](https://ragflow.io/docs/dev/category/user-guides)
- [References](https://ragflow.io/docs/dev/category/references)
- [FAQ](https://ragflow.io/docs/dev/faq)
## ๐Ÿ“œ ๋กœ๋“œ๋งต
[RAGFlow ๋กœ๋“œ๋งต 2024](https://github.com/infiniflow/ragflow/issues/162)์„ ํ™•์ธํ•˜์„ธ์š”.
## ๐Ÿ„ ์ปค๋ฎค๋‹ˆํ‹ฐ
- [Discord](https://discord.gg/4XxujFgUN7)
- [Twitter](https://twitter.com/infiniflowai)
- [GitHub Discussions](https://github.com/orgs/infiniflow/discussions)
## ๐Ÿ™Œ ์ปจํŠธ๋ฆฌ๋ทฐ์…˜
RAGFlow๋Š” ์˜คํ”ˆ์†Œ์Šค ํ˜‘์—…์„ ํ†ตํ•ด ๋ฐœ์ „ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •์‹ ์„ ๋ฐ”ํƒ•์œผ๋กœ, ์šฐ๋ฆฌ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ์—ฌํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด, ๋จผ์ € [๊ฐ€์ด๋“œ๋ผ์ธ](./docs/references/CONTRIBUTING.md)์„ ๊ฒ€ํ† ํ•ด ์ฃผ์„ธ์š”.