Skip to content
Snippets Groups Projects
README.md 6.85 KiB
Newer Older
  • Learn to ignore specific revisions
  • KevinHuSh's avatar
    KevinHuSh committed
    <div align="center">
    
    <a href="https://demo.ragflow.io/">
    
    <img src="web/src/assets/logo-with-text.png" width="350" alt="ragflow logo">
    
    KevinHuSh's avatar
    KevinHuSh committed
    </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?
    
    [RAGFlow](https://demo.ragflow.io) is an open-source RAG (Retrieval-Augmented Generation) engine based on deep document understanding. It offers a streamlined RAG workflow for businesses of any scale, combining LLM (Large Language Models) to provide truthful question-answering with well-founded citations for various complex fomatted data.
    
    KevinHuSh's avatar
    KevinHuSh committed
    
    
    writinwaters's avatar
    writinwaters committed
    ## 🌟 Key Features
    
    Jin Hai's avatar
    Jin Hai committed
    ### 🍭 **"Quality in, quality out"**
    
    KevinHuSh's avatar
    KevinHuSh committed
    - [Deep document understanding](./deepdoc/README.md)-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**
    
    
    - Intelligent and explainable.
    - Plenty of template options to choose from.
    
    Jin Hai's avatar
    Jin Hai committed
    ### 🌱 **Grounded citations with reduced hallucinations**
    
    
    - 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**
    
    
    - 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**
    
    
    - 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
    
    
    writinwaters's avatar
    writinwaters committed
    ### 🚀 Start up the server
    
    writinwaters's avatar
    writinwaters committed
    
    
    1. Ensure `vm.max_map_count` > 65535:
    
    writinwaters's avatar
    writinwaters committed
    
       > To check the value of `vm.max_map_count`:
       >
    
       > ```bash
    
    writinwaters's avatar
    writinwaters committed
       > $ 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
       ```
    
    
    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
    
           ____                 ______ __
    
    writinwaters's avatar
    writinwaters committed
          / __ \ ____ _ ____ _ / ____// /____  _      __
         / /_/ // __ `// __ `// /_   / // __ \| | /| / /
    
        / _, _// /_/ // /_/ // __/  / // /_/ /| |/ |/ /
       /_/ |_| \__,_/ \__, //_/    /_/ \____/ |__/|__/
                     /____/
    
    
    writinwaters's avatar
    writinwaters committed
        * 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
    
    
    writinwaters's avatar
    writinwaters committed
    5. In your web browser, enter the IP address of your server as prompted and log in to RAGFlow.
    
    writinwaters's avatar
    writinwaters committed
       > In the given scenario, you only need to enter `http://172.22.0.5` (sans port number) as the default HTTP serving port `80` is omitted when using the default configurations.
    
    writinwaters's avatar
    writinwaters committed
    6. In [service_conf.yaml](./docker/service_conf.yaml), select the desired LLM factory in `user_default_llm` and update the `API_KEY` field with the corresponding API key.
    
    writinwaters's avatar
    writinwaters committed
       > See [./docs/llm_api_key_setup.md](./docs/llm_api_key_setup.md) for more information.
    
       _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.
    
    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 you are REQUIRED 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 update the default HTTP 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:
    
    writinwaters's avatar
    writinwaters committed
    > ```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
    
    
    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.