Skip to content
Snippets Groups Projects
README.md 6.48 KiB
Newer Older
KevinHuSh's avatar
KevinHuSh committed
<div align="center">
<a href="https://demo.ragflow.io/">
KevinHuSh's avatar
KevinHuSh committed
<img src="https://github.com/infiniflow/ragflow/assets/12318111/f034fb27-b3bf-401b-b213-e1dfa7448d2a" width="320" alt="ragflow logo">
</a>
</div>
KevinHuSh's avatar
KevinHuSh committed
<p align="center">
  <a href="./README.md">English</a> |
  <a href="./README_zh.md">简体中文</a> 
</p>
KevinHuSh's avatar
KevinHuSh committed
<p align="center">
    <a href="https://demo.ragflow.io" target="_blank">
KevinHuSh's avatar
KevinHuSh committed
        <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>
writinwaters's avatar
writinwaters committed
## 💡 What is RAGFlow?
writinwaters's avatar
writinwaters committed
[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.
KevinHuSh's avatar
KevinHuSh committed

writinwaters's avatar
writinwaters committed
## 🌟 Key Features
Jin Hai's avatar
Jin Hai committed
### 🍭 **"Quality in, quality out"**
writinwaters's avatar
writinwaters committed
  - Deep document understanding-based knowledge extraction from unstructured data with complicated formats.
  - Finds "needle in a data haystack" of literally unlimited tokens.
Jin Hai's avatar
Jin Hai committed
### 🍱 **Template-based chunking**
writinwaters's avatar
writinwaters committed
  - Intelligent and explainable.
  - Plenty of template options to choose from.
Jin Hai's avatar
Jin Hai committed
### 🌱 **Grounded citations with reduced hallucinations**
writinwaters's avatar
writinwaters committed
  - Visualization of text chunking to allow human intervention.
  - Quick view of the key references and traceable citations to support grounded answers.
Jin Hai's avatar
Jin Hai committed
### 🍔 **Compatibility with heterogeneous data sources**
writinwaters's avatar
writinwaters committed
  - Supports Word, slides, excel, txt, images, scanned copies, structured data, web pages, and more.
Jin Hai's avatar
Jin Hai committed
### 🛀 **Automated and effortless RAG workflow**
writinwaters's avatar
writinwaters committed
  - Streamlined RAG orchestration catered to both personal and large businesses.
  - Configurable LLMs as well as embedding models.
  - Multiple recall paired with fused re-ranking.
  - Intuitive APIs for seamless integration with business.
writinwaters's avatar
writinwaters committed
## 🔎 System Architecture
writinwaters's avatar
writinwaters committed
<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
KevinHuSh's avatar
KevinHuSh committed

writinwaters's avatar
writinwaters committed
### 📝 Prerequisites

KevinHuSh's avatar
KevinHuSh committed
- CPU >= 2 cores
- RAM >= 8 GB
writinwaters's avatar
writinwaters committed
- 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/).
writinwaters's avatar
writinwaters committed

### 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:
writinwaters's avatar
writinwaters committed

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

writinwaters's avatar
writinwaters committed
3. Build the pre-built Docker images and start up the server: 
writinwaters's avatar
writinwaters committed
   ```bash
   $ cd ragflow/docker
   $ docker compose up -d
   ```
KevinHuSh's avatar
KevinHuSh committed

writinwaters's avatar
writinwaters committed
   > The core image is about 15 GB in size and may take a while to load.

writinwaters's avatar
writinwaters committed
4. Check the server status after having the server up and running:
writinwaters's avatar
writinwaters committed
   ```bash
writinwaters's avatar
writinwaters committed
   $ docker logs -f ragflow-server
writinwaters's avatar
writinwaters committed
   ```
   *The following output confirms a successful launch of the system:*
writinwaters's avatar
writinwaters committed
   ```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
    ```
KevinHuSh's avatar
KevinHuSh committed

Jin Hai's avatar
Jin Hai committed
5. In your web browser, enter the IP address and port of your server as prompted and log in to RAGFlow.
writinwaters's avatar
writinwaters committed
   *The show is now on!*
## 🔧 Configurations
writinwaters's avatar
writinwaters committed
When it comes to system configurations, you will need to manage the following files:

- [.env](./docker/.env): Keeps the fundamental setups for the system, such as `SVR_HTTP_PORT`, `MYSQL_PASSWORD`, and `MINIO_PASSWORD`.
- [service_conf.yaml](./docker/service_conf.yaml): Configures the back-end services.
writinwaters's avatar
writinwaters committed
- [docker-compose.yml](./docker/docker-compose.yml): The system relies on [docker-compose.yml](./docker/docker-compose.yml) to start up.
writinwaters's avatar
writinwaters committed
You must ensure that changes to the [.env](./docker/.env) file are in line with what are in the [service_conf.yaml](./docker/service_conf.yaml) file. 
writinwaters's avatar
writinwaters committed
> The [./docker/README](./docker/README.md) file provides a detailed description of the environment settings and service configurations, and it is IMPORTANT to ensure that all environment settings listed in the [./docker/README](./docker/README.md) file are aligned with the corresponding configurations in the [service_conf.yaml](./docker/service_conf.yaml) file.
KevinHuSh's avatar
KevinHuSh committed

writinwaters's avatar
writinwaters committed
To change the default serving port (80), go to [docker-compose.yml](./docker/docker-compose.yml) and change `80:80` to `<YOUR_SERVING_PORT>:80`.
KevinHuSh's avatar
KevinHuSh committed

writinwaters's avatar
writinwaters committed
> Updates to all system configurations require a system reboot to take effect:
> 
> ```bash
> $ docker-compose up -d
> ```
KevinHuSh's avatar
KevinHuSh committed

writinwaters's avatar
writinwaters committed
## 🛠️ 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
KevinHuSh's avatar
KevinHuSh committed

writinwaters's avatar
writinwaters committed
See the [RAGFlow Roadmap 2024](https://github.com/infiniflow/ragflow/issues/162)
KevinHuSh's avatar
KevinHuSh committed

writinwaters's avatar
writinwaters committed
## 🏄 Community
KevinHuSh's avatar
KevinHuSh committed

- [Discord](https://discord.gg/uqQ4YMDf)
writinwaters's avatar
writinwaters committed
- [Twitter](https://twitter.com/infiniflowai)
KevinHuSh's avatar
KevinHuSh committed

## 🙌 Contributing
KevinHuSh's avatar
KevinHuSh committed

writinwaters's avatar
writinwaters committed
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.