You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. <div align="center">
  2. <a href="https://demo.ragflow.io/">
  3. <img src="web/src/assets/logo-with-text.png" width="520" alt="ragflow logo">
  4. </a>
  5. </div>
  6. <p align="center">
  7. <a href="./README.md"><img alt="README in English" src="https://img.shields.io/badge/English-DFE0E5"></a>
  8. <a href="./README_zh.md"><img alt="简体中文版自述文件" src="https://img.shields.io/badge/简体中文-DFE0E5"></a>
  9. <a href="./README_tzh.md"><img alt="繁體版中文自述文件" src="https://img.shields.io/badge/繁體中文-DFE0E5"></a>
  10. <a href="./README_ja.md"><img alt="日本語のREADME" src="https://img.shields.io/badge/日本語-DFE0E5"></a>
  11. <a href="./README_ko.md"><img alt="한국어" src="https://img.shields.io/badge/한국어-DFE0E5"></a>
  12. <a href="./README_id.md"><img alt="Bahasa Indonesia" src="https://img.shields.io/badge/Bahasa Indonesia-DFE0E5"></a>
  13. <a href="./README_pt_br.md"><img alt="Português(Brasil)" src="https://img.shields.io/badge/Português(Brasil)-DBEDFA"></a>
  14. </p>
  15. <p align="center">
  16. <a href="https://x.com/intent/follow?screen_name=infiniflowai" target="_blank">
  17. <img src="https://img.shields.io/twitter/follow/infiniflow?logo=X&color=%20%23f5f5f5" alt="seguir no X(Twitter)">
  18. </a>
  19. <a href="https://demo.ragflow.io" target="_blank">
  20. <img alt="Badge Estático" src="https://img.shields.io/badge/Online-Demo-4e6b99">
  21. </a>
  22. <a href="https://hub.docker.com/r/infiniflow/ragflow" target="_blank">
  23. <img src="https://img.shields.io/docker/pulls/infiniflow/ragflow?label=Docker%20Pulls&color=0db7ed&logo=docker&logoColor=white&style=flat-square" alt="docker pull infiniflow/ragflow:v0.20.1">
  24. </a>
  25. <a href="https://github.com/infiniflow/ragflow/releases/latest">
  26. <img src="https://img.shields.io/github/v/release/infiniflow/ragflow?color=blue&label=Última%20Relese" alt="Última Versão">
  27. </a>
  28. <a href="https://github.com/infiniflow/ragflow/blob/main/LICENSE">
  29. <img height="21" src="https://img.shields.io/badge/License-Apache--2.0-ffffff?labelColor=d4eaf7&color=2e6cc4" alt="licença">
  30. </a>
  31. <a href="https://deepwiki.com/infiniflow/ragflow">
  32. <img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg">
  33. </a>
  34. </p>
  35. <h4 align="center">
  36. <a href="https://ragflow.io/docs/dev/">Documentação</a> |
  37. <a href="https://github.com/infiniflow/ragflow/issues/4214">Roadmap</a> |
  38. <a href="https://twitter.com/infiniflowai">Twitter</a> |
  39. <a href="https://discord.gg/NjYzJD3GM3">Discord</a> |
  40. <a href="https://demo.ragflow.io">Demo</a>
  41. </h4>
  42. #
  43. <details open>
  44. <summary><b>📕 Índice</b></summary>
  45. - 💡 [O que é o RAGFlow?](#-o-que-é-o-ragflow)
  46. - 🎮 [Demo](#-demo)
  47. - 📌 [Últimas Atualizações](#-últimas-atualizações)
  48. - 🌟 [Principais Funcionalidades](#-principais-funcionalidades)
  49. - 🔎 [Arquitetura do Sistema](#-arquitetura-do-sistema)
  50. - 🎬 [Primeiros Passos](#-primeiros-passos)
  51. - 🔧 [Configurações](#-configurações)
  52. - 🔧 [Construir uma imagem docker sem incorporar modelos](#-construir-uma-imagem-docker-sem-incorporar-modelos)
  53. - 🔧 [Construir uma imagem docker incluindo modelos](#-construir-uma-imagem-docker-incluindo-modelos)
  54. - 🔨 [Lançar serviço a partir do código-fonte para desenvolvimento](#-lançar-serviço-a-partir-do-código-fonte-para-desenvolvimento)
  55. - 📚 [Documentação](#-documentação)
  56. - 📜 [Roadmap](#-roadmap)
  57. - 🏄 [Comunidade](#-comunidade)
  58. - 🙌 [Contribuindo](#-contribuindo)
  59. </details>
  60. ## 💡 O que é o RAGFlow?
  61. [RAGFlow](https://ragflow.io/) é um mecanismo RAG (Geração Aumentada por Recuperação) de código aberto baseado em entendimento profundo de documentos. Ele oferece um fluxo de trabalho RAG simplificado para empresas de qualquer porte, combinando LLMs (Modelos de Linguagem de Grande Escala) para fornecer capacidades de perguntas e respostas verídicas, respaldadas por citações bem fundamentadas de diversos dados complexos formatados.
  62. ## 🎮 Demo
  63. Experimente nossa demo em [https://demo.ragflow.io](https://demo.ragflow.io).
  64. <div align="center" style="margin-top:20px;margin-bottom:20px;">
  65. <img src="https://raw.githubusercontent.com/infiniflow/ragflow-docs/refs/heads/image/image/chunking.gif" width="1200"/>
  66. <img src="https://raw.githubusercontent.com/infiniflow/ragflow-docs/refs/heads/image/image/agentic-dark.gif" width="1200"/>
  67. </div>
  68. ## 🔥 Últimas Atualizações
  69. - 08-08-2025 Suporta a mais recente série GPT-5 da OpenAI.
  70. - 04-08-2025 Suporta novos modelos, incluindo Kimi K2 e Grok 4.
  71. - 01-08-2025 Suporta fluxo de trabalho agente e MCP.
  72. - 23-05-2025 Adicione o componente executor de código Python/JS ao Agente.
  73. - 05-05-2025 Suporte a consultas entre idiomas.
  74. - 19-03-2025 Suporta o uso de um modelo multi-modal para entender imagens dentro de arquivos PDF ou DOCX.
  75. - 28-02-2025 combinado com a pesquisa na Internet (T AVI LY), suporta pesquisas profundas para qualquer LLM.
  76. - 18-12-2024 Atualiza o modelo de Análise de Layout de Documentos no DeepDoc.
  77. - 22-08-2024 Suporta conversão de texto para comandos SQL via RAG.
  78. ## 🎉 Fique Ligado
  79. ⭐️ Dê uma estrela no nosso repositório para se manter atualizado com novas funcionalidades e melhorias empolgantes! Receba notificações instantâneas sobre novos lançamentos! 🌟
  80. <div align="center" style="margin-top:20px;margin-bottom:20px;">
  81. <img src="https://github.com/user-attachments/assets/18c9707e-b8aa-4caf-a154-037089c105ba" width="1200"/>
  82. </div>
  83. ## 🌟 Principais Funcionalidades
  84. ### 🍭 **"Qualidade entra, qualidade sai"**
  85. - Extração de conhecimento baseada em [entendimento profundo de documentos](./deepdoc/README.md) a partir de dados não estruturados com formatos complicados.
  86. - Encontra a "agulha no palheiro de dados" de literalmente tokens ilimitados.
  87. ### 🍱 **Fragmentação baseada em templates**
  88. - Inteligente e explicável.
  89. - Muitas opções de templates para escolher.
  90. ### 🌱 **Citações fundamentadas com menos alucinações**
  91. - Visualização da fragmentação de texto para permitir intervenção humana.
  92. - Visualização rápida das referências chave e citações rastreáveis para apoiar respostas fundamentadas.
  93. ### 🍔 **Compatibilidade com fontes de dados heterogêneas**
  94. - Suporta Word, apresentações, excel, txt, imagens, cópias digitalizadas, dados estruturados, páginas da web e mais.
  95. ### 🛀 **Fluxo de trabalho RAG automatizado e sem esforço**
  96. - Orquestração RAG simplificada voltada tanto para negócios pessoais quanto grandes empresas.
  97. - Modelos LLM e de incorporação configuráveis.
  98. - Múltiplas recuperações emparelhadas com reclassificação fundida.
  99. - APIs intuitivas para integração sem problemas com os negócios.
  100. ## 🔎 Arquitetura do Sistema
  101. <div align="center" style="margin-top:20px;margin-bottom:20px;">
  102. <img src="https://github.com/infiniflow/ragflow/assets/12318111/d6ac5664-c237-4200-a7c2-a4a00691b485" width="1000"/>
  103. </div>
  104. ## 🎬 Primeiros Passos
  105. ### 📝 Pré-requisitos
  106. - CPU >= 4 núcleos
  107. - RAM >= 16 GB
  108. - Disco >= 50 GB
  109. - Docker >= 24.0.0 & Docker Compose >= v2.26.1
  110. - [gVisor](https://gvisor.dev/docs/user_guide/install/): Necessário apenas se você pretende usar o recurso de executor de código (sandbox) do RAGFlow.
  111. > [!TIP]
  112. > Se você não instalou o Docker na sua máquina local (Windows, Mac ou Linux), veja [Instalar Docker Engine](https://docs.docker.com/engine/install/).
  113. ### 🚀 Iniciar o servidor
  114. 1. Certifique-se de que `vm.max_map_count` >= 262144:
  115. > Para verificar o valor de `vm.max_map_count`:
  116. >
  117. > ```bash
  118. > $ sysctl vm.max_map_count
  119. > ```
  120. >
  121. > Se necessário, redefina `vm.max_map_count` para um valor de pelo menos 262144:
  122. >
  123. > ```bash
  124. > # Neste caso, defina para 262144:
  125. > $ sudo sysctl -w vm.max_map_count=262144
  126. > ```
  127. >
  128. > Essa mudança será resetada após a reinicialização do sistema. Para garantir que a alteração permaneça permanente, adicione ou atualize o valor de `vm.max_map_count` em **/etc/sysctl.conf**:
  129. >
  130. > ```bash
  131. > vm.max_map_count=262144
  132. > ```
  133. 2. Clone o repositório:
  134. ```bash
  135. $ git clone https://github.com/infiniflow/ragflow.git
  136. ```
  137. 3. Inicie o servidor usando as imagens Docker pré-compiladas:
  138. > [!CAUTION]
  139. > Todas as imagens Docker são construídas para plataformas x86. Atualmente, não oferecemos imagens Docker para ARM64.
  140. > Se você estiver usando uma plataforma ARM64, por favor, utilize [este guia](https://ragflow.io/docs/dev/build_docker_image) para construir uma imagem Docker compatível com o seu sistema.
  141. > O comando abaixo baixa a edição `v0.20.1-slim` da imagem Docker do RAGFlow. Consulte a tabela a seguir para descrições de diferentes edições do RAGFlow. Para baixar uma edição do RAGFlow diferente da `v0.20.1-slim`, atualize a variável `RAGFLOW_IMAGE` conforme necessário no **docker/.env** antes de usar `docker compose` para iniciar o servidor. Por exemplo: defina `RAGFLOW_IMAGE=infiniflow/ragflow:v0.20.1` para a edição completa `v0.20.1`.
  142. ```bash
  143. $ cd ragflow/docker
  144. # Use CPU for embedding and DeepDoc tasks:
  145. $ docker compose -f docker-compose.yml up -d
  146. # To use GPU to accelerate embedding and DeepDoc tasks:
  147. # docker compose -f docker-compose-gpu.yml up -d
  148. ```
  149. | Tag da imagem RAGFlow | Tamanho da imagem (GB) | Possui modelos de incorporação? | Estável? |
  150. | --------------------- | ---------------------- | ------------------------------- | ------------------------ |
  151. | v0.20.1 | ~9 | :heavy_check_mark: | Lançamento estável |
  152. | v0.20.1-slim | ~2 | ❌ | Lançamento estável |
  153. | nightly | ~9 | :heavy_check_mark: | _Instável_ build noturno |
  154. | nightly-slim | ~2 | ❌ | _Instável_ build noturno |
  155. 4. Verifique o status do servidor após tê-lo iniciado:
  156. ```bash
  157. $ docker logs -f ragflow-server
  158. ```
  159. _O seguinte resultado confirma o lançamento bem-sucedido do sistema:_
  160. ```bash
  161. ____ ___ ______ ______ __
  162. / __ \ / | / ____// ____// /____ _ __
  163. / /_/ // /| | / / __ / /_ / // __ \| | /| / /
  164. / _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ /
  165. /_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/
  166. * Rodando em todos os endereços (0.0.0.0)
  167. ```
  168. > Se você pular essa etapa de confirmação e acessar diretamente o RAGFlow, seu navegador pode exibir um erro `network anormal`, pois, nesse momento, seu RAGFlow pode não estar totalmente inicializado.
  169. 5. No seu navegador, insira o endereço IP do seu servidor e faça login no RAGFlow.
  170. > Com as configurações padrão, você só precisa digitar `http://IP_DO_SEU_MÁQUINA` (**sem** o número da porta), pois a porta HTTP padrão `80` pode ser omitida ao usar as configurações padrão.
  171. 6. Em [service_conf.yaml.template](./docker/service_conf.yaml.template), selecione a fábrica LLM desejada em `user_default_llm` e atualize o campo `API_KEY` com a chave de API correspondente.
  172. > Consulte [llm_api_key_setup](https://ragflow.io/docs/dev/llm_api_key_setup) para mais informações.
  173. _O show está no ar!_
  174. ## 🔧 Configurações
  175. Quando se trata de configurações do sistema, você precisará gerenciar os seguintes arquivos:
  176. - [.env](./docker/.env): Contém as configurações fundamentais para o sistema, como `SVR_HTTP_PORT`, `MYSQL_PASSWORD` e `MINIO_PASSWORD`.
  177. - [service_conf.yaml.template](./docker/service_conf.yaml.template): Configura os serviços de back-end. As variáveis de ambiente neste arquivo serão automaticamente preenchidas quando o contêiner Docker for iniciado. Quaisquer variáveis de ambiente definidas dentro do contêiner Docker estarão disponíveis para uso, permitindo personalizar o comportamento do serviço com base no ambiente de implantação.
  178. - [docker-compose.yml](./docker/docker-compose.yml): O sistema depende do [docker-compose.yml](./docker/docker-compose.yml) para iniciar.
  179. > O arquivo [./docker/README](./docker/README.md) fornece uma descrição detalhada das configurações do ambiente e dos serviços, que podem ser usadas como `${ENV_VARS}` no arquivo [service_conf.yaml.template](./docker/service_conf.yaml.template).
  180. Para atualizar a porta HTTP de serviço padrão (80), vá até [docker-compose.yml](./docker/docker-compose.yml) e altere `80:80` para `<SUA_PORTA_DE_SERVIÇO>:80`.
  181. Atualizações nas configurações acima exigem um reinício de todos os contêineres para que tenham efeito:
  182. > ```bash
  183. > $ docker compose -f docker-compose.yml up -d
  184. > ```
  185. ### Mudar o mecanismo de documentos de Elasticsearch para Infinity
  186. O RAGFlow usa o Elasticsearch por padrão para armazenar texto completo e vetores. Para mudar para o [Infinity](https://github.com/infiniflow/infinity/), siga estas etapas:
  187. 1. Pare todos os contêineres em execução:
  188. ```bash
  189. $ docker compose -f docker/docker-compose.yml down -v
  190. ```
  191. Note: `-v` irá deletar os volumes do contêiner, e os dados existentes serão apagados.
  192. 2. Defina `DOC_ENGINE` no **docker/.env** para `infinity`.
  193. 3. Inicie os contêineres:
  194. ```bash
  195. $ docker compose -f docker-compose.yml up -d
  196. ```
  197. > [!ATENÇÃO]
  198. > A mudança para o Infinity em uma máquina Linux/arm64 ainda não é oficialmente suportada.
  199. ## 🔧 Criar uma imagem Docker sem modelos de incorporação
  200. Esta imagem tem cerca de 2 GB de tamanho e depende de serviços externos de LLM e incorporação.
  201. ```bash
  202. git clone https://github.com/infiniflow/ragflow.git
  203. cd ragflow/
  204. docker build --platform linux/amd64 --build-arg LIGHTEN=1 -f Dockerfile -t infiniflow/ragflow:nightly-slim .
  205. ```
  206. ## 🔧 Criar uma imagem Docker incluindo modelos de incorporação
  207. Esta imagem tem cerca de 9 GB de tamanho. Como inclui modelos de incorporação, depende apenas de serviços externos de LLM.
  208. ```bash
  209. git clone https://github.com/infiniflow/ragflow.git
  210. cd ragflow/
  211. docker build --platform linux/amd64 -f Dockerfile -t infiniflow/ragflow:nightly .
  212. ```
  213. ## 🔨 Lançar o serviço a partir do código-fonte para desenvolvimento
  214. 1. Instale o `uv`, ou pule esta etapa se ele já estiver instalado:
  215. ```bash
  216. pipx install uv pre-commit
  217. ```
  218. 2. Clone o código-fonte e instale as dependências Python:
  219. ```bash
  220. git clone https://github.com/infiniflow/ragflow.git
  221. cd ragflow/
  222. uv sync --python 3.10 --all-extras # instala os módulos Python dependentes do RAGFlow
  223. uv run download_deps.py
  224. pre-commit install
  225. ```
  226. 3. Inicie os serviços dependentes (MinIO, Elasticsearch, Redis e MySQL) usando Docker Compose:
  227. ```bash
  228. docker compose -f docker/docker-compose-base.yml up -d
  229. ```
  230. Adicione a seguinte linha ao arquivo `/etc/hosts` para resolver todos os hosts especificados em **docker/.env** para `127.0.0.1`:
  231. ```
  232. 127.0.0.1 es01 infinity mysql minio redis sandbox-executor-manager
  233. ```
  234. 4. Se não conseguir acessar o HuggingFace, defina a variável de ambiente `HF_ENDPOINT` para usar um site espelho:
  235. ```bash
  236. export HF_ENDPOINT=https://hf-mirror.com
  237. ```
  238. 5. Se o seu sistema operacional não tiver jemalloc, instale-o da seguinte maneira:
  239. ```bash
  240. # ubuntu
  241. sudo apt-get install libjemalloc-dev
  242. # centos
  243. sudo yum instalar jemalloc
  244. ```
  245. 6. Lance o serviço de back-end:
  246. ```bash
  247. source .venv/bin/activate
  248. export PYTHONPATH=$(pwd)
  249. bash docker/launch_backend_service.sh
  250. ```
  251. 7. Instale as dependências do front-end:
  252. ```bash
  253. cd web
  254. npm install
  255. ```
  256. 8. Lance o serviço de front-end:
  257. ```bash
  258. npm run dev
  259. ```
  260. _O seguinte resultado confirma o lançamento bem-sucedido do sistema:_
  261. ![](https://github.com/user-attachments/assets/0daf462c-a24d-4496-a66f-92533534e187)
  262. 9. Pare os serviços de front-end e back-end do RAGFlow após a conclusão do desenvolvimento:
  263. ```bash
  264. pkill -f "ragflow_server.py|task_executor.py"
  265. ```
  266. ## 📚 Documentação
  267. - [Quickstart](https://ragflow.io/docs/dev/)
  268. - [Configuration](https://ragflow.io/docs/dev/configurations)
  269. - [Release notes](https://ragflow.io/docs/dev/release_notes)
  270. - [User guides](https://ragflow.io/docs/dev/category/guides)
  271. - [Developer guides](https://ragflow.io/docs/dev/category/developers)
  272. - [References](https://ragflow.io/docs/dev/category/references)
  273. - [FAQs](https://ragflow.io/docs/dev/faq)
  274. ## 📜 Roadmap
  275. Veja o [RAGFlow Roadmap 2025](https://github.com/infiniflow/ragflow/issues/4214)
  276. ## 🏄 Comunidade
  277. - [Discord](https://discord.gg/NjYzJD3GM3)
  278. - [Twitter](https://twitter.com/infiniflowai)
  279. - [GitHub Discussions](https://github.com/orgs/infiniflow/discussions)
  280. ## 🙌 Contribuindo
  281. O RAGFlow prospera por meio da colaboração de código aberto. Com esse espírito, abraçamos contribuições diversas da comunidade.
  282. Se você deseja fazer parte, primeiro revise nossas [Diretrizes de Contribuição](https://ragflow.io/docs/dev/contributing).