Skip to content

Latest commit

 

History

History
342 lines (248 loc) · 13.2 KB

README_tzh.md

File metadata and controls

342 lines (248 loc) · 13.2 KB

English | 简体中文 | 日本語 | 한국어 | Bahasa Indonesia

follow on X(Twitter) Static Badge docker pull infiniflow/ragflow:v0.15.1 Latest Release license

💡 RAGFlow 是什麼?

RAGFlow 是一款基於深度文件理解所建構的開源 RAG(Retrieval-Augmented Generation)引擎。 RAGFlow 可以為各種規模的企業及個人提供一套精簡的 RAG 工作流程,結合大語言模型(LLM)針對用戶各類不同的複雜格式數據提供可靠的問答以及有理有據的引用。

🎮 Demo 試用

請登入網址 https://demo.ragflow.io 試用 demo。

🔥 近期更新

  • 2024-12-18 升級了 Deepdoc 的文檔佈局分析模型。
  • 2024-12-04 支援知識庫的 Pagerank 分數。
  • 2024-11-22 完善了 Agent 中的變數定義和使用。
  • 2024-11-01 對解析後的 chunk 加入關鍵字抽取和相關問題產生以提高回想的準確度。
  • 2024-08-22 支援用 RAG 技術實現從自然語言到 SQL 語句的轉換。
  • 2024-08-02 支持 GraphRAG 啟發於 graphrag 和心智圖。

🎉 關注項目

⭐️點擊右上角的 Star 追蹤RAGFlow,可以取得最新發布的即時通知 !🌟

🌟 主要功能

🍭 "Quality in, quality out"

  • 基於深度文件理解,能夠從各類複雜格式的非結構化資料中提取真知灼見。
  • 真正在無限上下文(token)的場景下快速完成大海撈針測試。

🍱 基於模板的文字切片

  • 不只是智能,更重要的是可控可解釋。
  • 多種文字範本可供選擇

🌱 有理有據、最大程度降低幻覺(hallucination)

  • 文字切片過程視覺化,支援手動調整。
  • 有理有據:答案提供關鍵引用的快照並支持追根溯源。

🍔 相容各類異質資料來源

  • 支援豐富的文件類型,包括 Word 文件、PPT、excel 表格、txt 檔案、圖片、PDF、影印件、影印件、結構化資料、網頁等。

🛀 全程無憂、自動化的 RAG 工作流程

  • 全面優化的 RAG 工作流程可以支援從個人應用乃至超大型企業的各類生態系統。
  • 大語言模型 LLM 以及向量模型皆支援配置。
  • 基於多路召回、融合重排序。
  • 提供易用的 API,可輕鬆整合到各類企業系統。

🔎 系統架構

🎬快速開始

📝 前提條件

  • CPU >= 4 核
  • RAM >= 16 GB
  • Disk >= 50 GB
  • Docker >= 24.0.0 & Docker Compose >= v2.26.1

    如果你並沒有在本機安裝 Docker(Windows、Mac,或 Linux), 可以參考文件 Install Docker Engine 自行安裝。

🚀 啟動伺服器

  1. 確保 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
  2. 克隆倉庫:

    $ git clone https://github.com/infiniflow/ragflow.git
  3. 進入 docker 資料夾,利用事先編譯好的 Docker 映像啟動伺服器:

    執行以下指令會自動下載 RAGFlow slim Docker 映像 v0.15.1-slim。請參考下表查看不同 Docker 發行版的說明。如需下載不同於 v0.15.1-slim 的 Docker 映像,請在執行 docker compose 啟動服務之前先更新 docker/.env 檔案內的 RAGFLOW_IMAGE 變數。例如,你可以透過設定 RAGFLOW_IMAGE=infiniflow/ragflow:v0.15.1 來下載 RAGFlow 鏡像的 v0.15.1 完整發行版。

    $ cd ragflow
    $ docker compose -f docker/docker-compose.yml up -d
    RAGFlow image tag Image size (GB) Has embedding models? Stable?
    v0.15.1 ≈9 ✔️ Stable release
    v0.15.1-slim ≈2 Stable release
    nightly ≈9 ✔️ Unstable nightly build
    nightly-slim ≈2 Unstable nightly build

    [!TIP] 如果你遇到 Docker 映像檔拉不下來的問題,可以在 docker/.env 檔案內根據變數 RAGFLOW_IMAGE 的註解提示選擇華為雲或阿里雲的對應映像。

    • 華為雲鏡像名:swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow
    • 阿里雲鏡像名:registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow
  4. 伺服器啟動成功後再次確認伺服器狀態:

    $ 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,你的瀏覽器有可能會提示 network anormal網路異常,因為 RAGFlow 可能並未完全啟動成功。

  5. 在你的瀏覽器中輸入你的伺服器對應的 IP 位址並登入 RAGFlow。

    上面這個範例中,您只需輸入 http://IP_OF_YOUR_MACHINE 即可:未改動過設定則無需輸入連接埠(預設的 HTTP 服務連接埠 80)。

  6. service_conf.yaml.template 檔案的 user_default_llm 欄位設定 LLM factory,並在 API_KEY 欄填入和你選擇的大模型相對應的 API key。

    詳見 llm_api_key_setup

    _好戲開始,接著奏樂接著舞! _

🔧 系統配置

系統配置涉及以下三份文件:

請務必確保 .env 檔案中的變數設定與 service_conf.yaml.template 檔案中的設定保持一致!

如果無法存取映像網站 hub.docker.com 或模型網站 huggingface.co,請依照 .env 註解修改 RAGFLOW_IMAGEHF_ENDPOINT

./docker/README 解釋了 service_conf.yaml.template 用到的環境變數設定和服務配置。

如需更新預設的HTTP 服務連接埠(80), 可以在docker-compose.yml 檔案中將配置80:80 改為<YOUR_SERVING_PORT>:80

所有系統配置都需要透過系統重新啟動生效:

$ docker compose -f docker/docker-compose.yml up -d

###把文檔引擎從 Elasticsearch 切換成為 Infinity

RAGFlow 預設使用 Elasticsearch 儲存文字和向量資料. 如果要切換為 Infinity, 可以按照下面步驟進行:

  1. 停止所有容器運作:

    $ docker compose -f docker/docker-compose.yml down -v
  2. 設定 docker/.env 目錄中的 DOC_ENGINEinfinity.

  3. 啟動容器:

    $ docker compose -f docker/docker-compose.yml up -d

Warning

Infinity 目前官方並未正式支援在 Linux/arm64 架構下的機器上運行.

🔧 原始碼編譯 Docker 映像(不含 embedding 模型)

本 Docker 映像大小約 2 GB 左右並且依賴外部的大模型和 embedding 服務。

git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
docker build --build-arg LIGHTEN=1 --build-arg NEED_MIRROR=1 -f Dockerfile -t infiniflow/ragflow:nightly-slim .

🔧 原始碼編譯 Docker 映像(包含 embedding 模型)

本 Docker 大小約 9 GB 左右。由於已包含 embedding 模型,所以只需依賴外部的大模型服務即可。

git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
docker build --build-arg NEED_MIRROR=1 -f Dockerfile -t infiniflow/ragflow:nightly .

🔨 以原始碼啟動服務

  1. 安裝 uv。如已安裝,可跳過此步驟:

    pipx install uv
    export UV_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
  2. 下載原始碼並安裝 Python 依賴:

    git clone https://github.com/infiniflow/ragflow.git
    cd ragflow/
    uv sync --python 3.10 --all-extras # install RAGFlow dependent python modules
  3. 透過 Docker Compose 啟動依賴的服務(MinIO, Elasticsearch, Redis, and MySQL):

    docker compose -f docker/docker-compose-base.yml up -d

    /etc/hosts 中加入以下程式碼,將 conf/service_conf.yaml 檔案中的所有 host 位址都解析為 127.0.0.1

    127.0.0.1 es01 infinity mysql minio redis
    
  4. 如果無法存取 HuggingFace,可以把環境變數 HF_ENDPOINT 設為對應的鏡像網站:

    export HF_ENDPOINT=https://hf-mirror.com

5.啟動後端服務: 『`bash source .venv/bin/activate export PYTHONPATH=$(pwd) bash docker/launch_backend_service.sh


6. 安裝前端依賴:
『`bash
cd web
npm install
  1. 啟動前端服務: 『`bash npm run dev
    
    以下界面說明系統已成功啟動:_
    
    ![](https://github.com/user-attachments/assets/0daf462c-a24d-4496-a66f-92533534e187)
    
    

📚 技術文檔

📜 路線圖

詳見 RAGFlow Roadmap 2025

🏄 開源社群

🙌 貢獻指南

RAGFlow 只有透過開源協作才能蓬勃發展。秉持這項精神,我們歡迎來自社區的各種貢獻。如果您有意參與其中,請查閱我們的 貢獻者指南

🤝 商務合作

👥 加入社區

掃二維碼加入 RAGFlow 小助手,進 RAGFlow 交流群。