ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1em;letter-spacing: 0.1em;color: rgb(80, 80, 80);">RAGFlow 是一个基于基于Deepdoc(深度文档理解)的开源 RAG(检索增强生成)引擎,仅仅一月,Github斩获近7.1k Star!ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1em;letter-spacing: 0.1em;color: rgb(80, 80, 80);"> ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1em;letter-spacing: 0.1em;color: rgb(80, 80, 80);">RAGFlow大大提升知识库RAG的召回率,不仅智能,而且可控可解释、真正在无限上下文(token)的场景下快速完成大海捞针测试、提供易用的 API,可以轻松集成到各类企业系统。 体验地址:https://ragflow.io/为了确保大家了解一下“先验知识“,这里解释一下:什么是RAG? ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: 3px solid rgb(0, 152, 116);color: rgb(63, 63, 63);">什么是RAG?RAG,也就是检索增强生成,听上去可能有点科技感,但其实这个概念相当直观。它基本上就是通过一个巧妙的方法来让大型语言模型(LLM)生成更精准、更有用的回答。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">这个过程开始于一种特殊的数据库,我们可以称之为“垂直领域数据库”。当你向LLM提出一个问题时,RAG不是直接回答,而是先到这个数据库里去搜索与你的问题最相关的信息。这就好比你问了一个复杂的问题,RAG先跑去图书馆查资料。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">接下来的步骤是关键:RAG把这些检索到的信息整合成一个精细的提示模板。然后,这个模板和你的原始问题一起被送到LLM。有了这个“答题纲要”,LLM就能够根据这些详细的信息给出一个更加全面和准确的答案。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">简单来说,RAG的工作就是作为一个信息的搜集者和整合者,帮助LLM更好地理解和回应提问。一句话总结就是:RAG = 检索技术 + LLM提示。就像你问一个问题,RAG先从各种数据源中找到相关信息,然后将这些信息融入到LLM的提示中,最后由LLM给出一个精准的回答。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">通过这种方式,RAG实际上是在扩展LLM的知识边界,使其不仅依赖于训练时学到的信息,还能动态地利用最新、最相关的数据。这就大大提升了回答的质量和实用性,让机器的回答不再是冷冰冰的重复,而是真正有帮助的知识分享。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);"> ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.1em;font-weight: bold;margin-right: 8px;margin-bottom: 0.75em;padding-left: 8px;border-left: 3px solid rgb(0, 152, 116);color: rgb(63, 63, 63);">? RAGFlow 是什么?首先,RAGFlow 作为一个全面的 RAG 解决方案,使用户能够上传和管理他们的文档。用户可以灵活地上传各种格式的文档,例如 PDF、Word、PPT、Excel 和 TXT。 通过智能解析,将数据准确录入数据库,允许用户使用任何大型语言模型查询其上传的文档。本质上,RAGFlow 包含以下端到端流程: 
在处理文档时,RAGFlow 提供了多种选项:问答、简历、纸张、手册、表格、书籍、法律、一般文档等 
智能文档处理的可视化和可解释性在智能文档处理系统中,让用户能清楚了解他们上传的文档是如何被处理的非常重要。比如,系统处理了多少部分,以及如何识别和处理文档中的图表、图形和表格。因为基于大型语言模型(LLM)的系统不能保证完全准确,所以提供一个透明的过程让用户可以随时介入和控制,这非常关键。 尤其是处理PDF文档时,因为PDF格式多样且在各个行业中广泛使用,所以保持对处理过程的控制尤其重要。ragflow不仅展示处理的最终结果,还允许用户查看文档解析的具体细节。 用户可以通过点击定位到文档中的原始文本,比较原文和处理后的文本之间的差异,并进行必要的编辑和修正,如添加、修改或删除信息。这样的设计使得整个处理过程更加透明和可控,帮助用户更好地理解和使用系统。 
查看 LLM 用于制定答复的原始文本RAGFlow 是一个综合性的 RAG 系统。目前,许多开源 RAG 系统忽视了 RAG 的关键优势之一:使 LLM 能够以受控方式响应查询,推广一种理性的、基于证据的方法,消除幻觉。 人们普遍认为,根据模型的能力,LLM可能会遇到幻觉。在这种情况下,RAG 产品应该随时为用户提供参考,使他们能够查看 LLM 用于制定答复的原始文本。 这就需要生成原始文本的引用链接,使用户能够将鼠标悬停在其上以访问原始内容,包括图表、图表和表格。如果不确定性仍然存在,点击参考文献应该会引导用户看到原始文本,如下图所示: 
下面提供Ragflow官方的文档介绍、相关资源、部署教程等,进一步支撑你的行动,以提升本文的帮助力。
? RAGFlow主要功能?"Quality in, quality out"?基于模板的文本切片•不仅仅是智能,更重要的是可控可解释。 •多种文本模板可供选择
?有理有据、最大程度降低幻觉(hallucination)?兼容各类异构数据源?全程无忧、自动化的 RAG 工作流? 新增功能•2024-05-08 集成大模型 DeepSeek •2024-04-26 增添了'文件管理'功能. •2024-04-19 支持对话 API (更多). •2024-04-16 集成嵌入模型BCEmbedding和 专为轻型和高速嵌入而设计的FastEmbed。 •2024-04-11 支持用Xinference本地化部署大模型。 •2024-04-10 为‘Laws’版面分析增加了底层模型。 •2024-04-08 支持用Ollama本地化部署大模型。 •2024-04-07 支持中文界面。
? 系统架构
? 快速开始? 前提条件? 启动服务器1.确保vm.max_map_count不小于 262144 【更多】: 如需确认vm.max_map_count的大小:$sysctlvm.max_map_count如果vm.max_map_count的值小于 262144,可以进行重置:#这里我们设为262144: $sudosysctl-wvm.max_map_count=262144你的改动会在下次系统重启时被重置。如果希望做永久改动,还需要在/etc/sysctl.conf文件里把vm.max_map_count的值再相应更新一遍:vm.max_map_count=262144 2.克隆仓库: $gitclonehttps://github.com/infiniflow/ragflow.git 3.进入docker文件夹,利用提前编译好的 Docker 镜像启动服务器: $cdragflow/docker $chmod+x./entrypoint.sh $dockercompose-fdocker-compose-CN.ymlup-d
请注意,运行上述命令会自动下载 RAGFlow 的开发版本 docker 镜像。如果你想下载并运行特定版本的 docker 镜像,请在 docker/.env 文件中找到 RAGFLOW_VERSION 变量,将其改为对应版本。例如 RAGFLOW_VERSION=v0.5.0,然后运行上述命令。 核心镜像文件大约 9 GB,可能需要一定时间拉取。请耐心等待。 4.服务器启动成功后再次确认服务器状态: $dockerlogs-fragflow-server 出现以下界面提示说明服务器启动成功: ____________ /__\__________/____///_______ //_///__`//__`///_///__\||/|// /_,_///_////_///__/////_//||/|// /_/|_|\__,_/\__,//_//_/\____/|__/|__/ /____/
*Runningonalladdresses(0.0.0.0) *Runningonhttp://127.0.0.1:9380 *Runningonhttp://x.x.x.x:9380 INFO:werkzeug ressCTRL+Ctoquit
如果您跳过这一步系统确认步骤就登录 RAGFlow,你的浏览器有可能会提示network anomaly或网络异常,因为 RAGFlow 可能并未完全启动成功。 5.在你的浏览器中输入你的服务器对应的 IP 地址并登录 RAGFlow。 上面这个例子中,您只需输入 http://IP_OF_YOUR_MACHINE 即可:未改动过配置则无需输入端口(默认的 HTTP 服务端口 80)。 6.在service_conf.yaml文件的user_default_llm栏配置 LLM factory,并在API_KEY栏填写和你选择的大模型相对应的 API key。 详见 ./docs/llm_api_key_setup.md。 好戏开始,接着奏乐接着舞!
? 系统配置系统配置涉及以下三份文件: •.env:存放一些基本的系统环境变量,比如SVR_HTTP_PORT、MYSQL_PASSWORD、MINIO_PASSWORD等。 •service_conf.yaml:配置各类后台服务。 •docker-compose-CN.yml: 系统依赖该文件完成启动。
请务必确保.env文件中的变量设置与service_conf.yaml文件中的配置保持一致! ./docker/README文件提供了环境变量设置和服务配置的详细信息。请一定要确保./docker/README文件当中列出来的环境变量的值与service_conf.yaml文件当中的系统配置保持一致。
如需更新默认的 HTTP 服务端口(80), 可以在docker-compose-CN.yml文件中将配置80:80改为<YOUR_SERVING_PORT>:80。 所有系统配置都需要通过系统重启生效: $dockercompose-fdocker-compose-CN.ymlup-d
?️ 源码编译、安装 Docker 镜像如需从源码安装 Docker 镜像: $gitclonehttps://github.com/infiniflow/ragflow.git $cdragflow/ $dockerbuild-tinfiniflow/ragflow:v0.5.0. $cdragflow/docker $chmod+x./entrypoint.sh $dockercomposeup-d
?️ 源码启动服务如需从源码启动服务,请参考以下步骤: 1.克隆仓库
$gitclonehttps://github.com/infiniflow/ragflow.git $cdragflow/
2.创建虚拟环境(确保已安装 Anaconda 或 Miniconda)
$condacreate-nragflowpython=3.11.0 $condaactivateragflow $pipinstall-rrequirements.txt
如果cuda > 12.0,需额外执行以下命令: $pipuninstall-yonnxruntime-gpu $pipinstallonnxruntime-gpu--extra-index-urlhttps://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
3.拷贝入口脚本并配置环境变量
$cpdocker/entrypoint.sh. $vientrypoint.sh
使用以下命令获取python路径及ragflow项目路径: $whichpython $pwd
将上述which python的输出作为PY的值,将pwd的输出作为PYTHONPATH的值。 LD_LIBRARY_PATH如果环境已经配置好,可以注释掉。
#此处配置需要按照实际情况调整,两个export为新增配置 PY=${PY} exportPYTHONPATH=${PYTHONPATH} #可选:添加Hugging Face镜像 exportHF_ENDPOINT=https://hf-mirror.com
4.启动基础服务
$cddocker $dockercompose-fdocker-compose-base.ymlup-d
5.检查配置文件 确保docker/.env中的配置与conf/service_conf.yaml中配置一致,service_conf.yaml中相关服务的IP地址与端口应该改成本机IP地址及容器映射出来的端口。 6.启动服务
$chmod+x./entrypoint.sh $bash./entrypoint.sh
7.启动WebUI服务
$cdweb $npminstall--registry=https://registry.npmmirror.com--force $vim.umirc.ts #修改proxy.target为127.0.0.1:9380 $npmrundev
8.部署WebUI服务
$cdweb $npminstall--registry=https://registry.npmmirror.com--force $umibuild $mkdir-p/ragflow/web $cp-rdist/ragflow/web $aptinstallnginx-y $cp../docker/nginx/proxy.conf/etc/nginx $cp../docker/nginx/nginx.conf/etc/nginx $cp../docker/nginx/ragflow.conf/etc/nginx/conf.d $systemctlstartnginx
|