File size: 6,718 Bytes
2fd3125
8f39e7a
2fd3125
 
 
8887e47
 
2fd3125
 
 
 
8887e47
2fd3125
8f39e7a
2fd3125
 
 
 
 
 
 
 
c957852
e5aa7c3
99b8bda
e5aa7c3
2fd3125
c957852
e5aa7c3
99b8bda
c957852
2fd3125
 
99b8bda
2fd3125
 
 
 
99b8bda
 
2fd3125
99b8bda
2fd3125
 
8887e47
c957852
99b8bda
c957852
 
 
99b8bda
 
2fd3125
c957852
 
2fd3125
99b8bda
e5aa7c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c957852
 
 
 
 
8887e47
e5aa7c3
c957852
d3d8d70
 
 
 
2fd3125
d3d8d70
 
 
 
e5aa7c3
d3d8d70
 
ce95639
99b8bda
ce95639
 
 
 
 
 
 
 
 
 
 
 
2fd3125
e5aa7c3
 
8f39e7a
e06e08c
99b8bda
8f39e7a
c957852
 
2fd3125
99b8bda
c957852
2fd3125
99b8bda
f1ccc7f
99b8bda
f1ccc7f
e5aa7c3
 
 
 
 
 
 
 
 
 
 
 
99b8bda
2fd3125
e5aa7c3
2fd3125
c957852
2fd3125
99b8bda
c957852
2fd3125
99b8bda
2fd3125
e5aa7c3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<div align="center">
<a href="https://demo.ragflow.io/">
<img src="https://github.com/infiniflow/ragflow/assets/12318111/f034fb27-b3bf-401b-b213-e1dfa7448d2a" width="320" alt="ragflow logo">
</a>
</div>


<p align="center">
  <a href="./README.md">English</a> |
  <a href="./README_zh.md">็ฎ€ไฝ“ไธญๆ–‡</a> 
</p>

<p align="center">
    <a href="https://demo.ragflow.io" target="_blank">

        <img alt="Static Badge" src="https://img.shields.io/badge/RAGFLOW-LLM-white?&labelColor=dd0af7"></a>

    <a href="https://hub.docker.com/r/infiniflow/ragflow" target="_blank">

        <img src="https://img.shields.io/badge/docker_pull-ragflow:v1.0-brightgreen"

            alt="docker pull ragflow:v1.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?style=flat-square&labelColor=d4eaf7&color=7d09f1" alt="license">

  </a>

</p>


## ๐Ÿ’ก What is RAGFlow?

[RAGFlow](http://demo.ragflow.io) is a knowledge management platform built on custom-build document understanding engine and LLM, with reasoned and well-founded answers to your question. Clone this repository, you can deploy your own knowledge management platform to empower your business with AI.

## ๐ŸŒŸ Key Features

- ๐Ÿญ**Custom-build document understanding engine.** Our deep learning engine is made according to the needs of analyzing and searching various type of documents in different domain.
  - For documents from different domain for different purpose, the engine applies different analyzing and search strategy.
  - Easily intervene and manipulate the data proccessing procedure when things goes beyond expectation.
  - Multi-media document understanding is supported using OCR and multi-modal LLM. 
- ๐Ÿญ**State-of-the-art table structure and layout recognition.** Precisely extract and understand the document including table content. See [README.](./deepdoc/README.md)
  - For PDF files, layout and table structures including row, column and span of them are recognized.
  - Put the table accrossing the pages together.
  - Reconstruct the table structure components into html table.  
- **Querying database dumped data are supported.** After uploading tables from any database, you can search any data records just by asking.
  - You can now query a database using natural language instead of using SQL.
  - The record number uploaded is not limited. 
- **Reasoned and well-founded answers.** The cited document part in LLM's answer is provided and pointed out in the original document.
  - The answers are based on retrieved result for which we apply vector-keyword hybrids search and re-rank.
  - The part of document cited in the answer is presented in the most expressive way.
  - For PDF file, the cited parts in document can be located in the original PDF.  

## ๐Ÿ”Ž System Architecture

<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>

## ๐ŸŽฌ Get Started

### ๐Ÿ“ Prerequisites

- CPU >= 2 cores
- RAM >= 8 GB
- Docker: If you have not installed Docker on your local machine (Windows, Mac, or Linux), see [Install Docker Engine](https://docs.docker.com/engine/install/).

### Start up the server

1. Ensure `vm.max_map_count` > 65535: 

   > To check the value of `vm.max_map_count`:
   >
   > ```bash 

   > $ sysctl vm.max_map_count

   > ```
   >
   > Reset `vm.max_map_count` to a value greater than 65535 if it is not.
   >
   > ```bash

   > # In this case, we set it to 262144:

   > $ sudo sysctl -w vm.max_map_count=262144

   > ```
   >
   > This change will be reset after a system reboot. To ensure your change remains permanent, add or update the `vm.max_map_count` value in **/etc/sysctl.conf** accordingly:
   >
   > ```bash

   > vm.max_map_count=262144

   > ```

2. Clone the repo:

   ```bash

   $ git clone https://github.com/infiniflow/ragflow.git

   ```


3. Build the pre-built Docker images and start up the server: 

   ```bash

   $ cd ragflow/docker

   $ docker compose up -d

   ```

   > The core image is about 15 GB in size and may take a while to load.

4. Check the server status after pulling all images and having Docker up and running:
   ```bash

   $ docker logs -f ragflow-server

   ```
   *The following output confirms a successful launch of the system:*

```bash

    ____                 ______ __               

   / __ \ ____ _ ____ _ / ____// /____  _      __

  / /_/ // __ `// __ `// /_   / // __ \| | /| / /

 / _, _// /_/ // /_/ // __/  / // /_/ /| |/ |/ / 

/_/ |_| \__,_/ \__, //_/    /_/ \____/ |__/|__/  

              /____/                             



 * Running on all addresses (0.0.0.0)

 * Running on http://127.0.0.1:9380

 * Running on http://172.22.0.5:9380

INFO:werkzeug:Press CTRL+C to quit

```

5. In your web browser, enter the IP address of your server as prompted.
   *The show is on!*


## ๐Ÿ”ง Configurations

> The default serving port is 80, if you want to change that, refer to the [docker-compose.yml](./docker-compose.yaml) and change the left part of `80:80`, say `66:80`.

If you need to change the default setting of the system when you deploy it. There several ways to configure it. 
Please refer to this [README](./docker/README.md) to manually update the configuration. 
Updates to system configurations require a system reboot to take effect *docker-compose up -d* again. 

> If you want to change the basic setups, like port, password .etc., please refer to [.env](./docker/.env) before starting up the system.

> If you change anything in [.env](./docker/.env), please check [service_conf.yaml](./docker/service_conf.yaml) which is a configuration of the back-end service and should be consistent with [.env](./docker/.env).

## ๐Ÿ› ๏ธ Build from source

To build the Docker images from source:

```bash

$ git clone https://github.com/infiniflow/ragflow.git

$ cd ragflow/

$ docker build -t infiniflow/ragflow:v1.0 .

$ cd ragflow/docker

$ docker compose up -d

```

## ๐Ÿ“œ Roadmap

See the [RAGFlow Roadmap 2024](https://github.com/infiniflow/ragflow/issues/162)

## ๐Ÿ„ Community

- [Discord](https://discord.gg/uqQ4YMDf)
- [Twitter](https://twitter.com/infiniflowai)

## ๐Ÿ™Œ Contributing

RAGFlow flourishes via open-source collaboration. In this spirit, we embrace diverse contributions from the community. If you would like to be a part, review our [Contribution Guidelines](https://github.com/infiniflow/ragflow/blob/main/CONTRIBUTING.md) first.