常见问题
关于通用功能、故障排除、使用等方面问题的解答。
- 通用功能
- RAGFlow 与其他 RAG 产品有何不同?
- RAGFlow 完整版和 RAGFlow 精简版有何区别?
- 哪些嵌入模型可以在本地部署?
- 如何查找 RAGFlow 版本?如何解释版本信息?
- 为什么不使用其他开源向量数据库作为文档引擎?
- demo.ragflow.io 与本地部署的开源 RAGFlow 服务有何区别?
- 为什么 RAGFlow 解析文档比 LangChain 花费的时间更长?
- 为什么 RAGFlow 比其他项目需要更多资源?
- RAGFlow 支持哪些架构或设备?
- 你们是否提供用于集成第三方应用的 API?
- 你们是否支持流式输出?
- 你们是否支持通过 URL 分享对话?
- 你们是否支持多轮对话,将之前的对话作为当前查询的上下文?
- AI 搜索和聊天之间的主要区别?
- 故障排除
- 如何从头构建 RAGFlow 镜像?
- 无法访问 https://hugging-face.cn
MaxRetryError: HTTPSConnectionPool(host='hf-mirror.com', port=443)
WARNING: can't find /raglof/rag/res/borker.tm
network anomaly 您的网络存在异常,无法连接到服务器。
Realtime synonym is disabled, since no redis connection
- 为什么我的文档解析在百分之一以下时停滞?
- 为什么我的 PDF 解析接近完成时停滞,而日志没有显示任何错误?
索引失败
- 如何检查 RAGFlow 的日志?
- 如何检查 RAGFlow 中每个组件的状态?
Exception: Can't connect to ES cluster
- 无法启动 ES 容器并出现
Elasticsearch did not exit normally
{"data":null,"code":100,"message":"<NotFound '404: Not Found'>"}
Ollama - Mistral 实例运行在 127.0.0.1:11434,但在 RagFlow 中无法将 Ollama 添加为模型
- 你们是否提供使用 DeepDoc 解析 PDF 或其他文件的示例?
FileNotFoundError: [Errno 2] No such file or directory
- 使用方法
通用功能
RAGFlow 与其他 RAG 产品有何不同?
尽管 LLM 显著推动了自然语言处理 (NLP) 的发展,但“输入垃圾,输出垃圾”的现状并未改变。为此,与其他检索增强生成 (RAG) 产品相比,RAGFlow 引入了两个独特的功能。
- 细粒度文档解析:文档解析包含图像和表格,您可以根据需要灵活干预。
- 可追溯的答案,减少幻觉:您可以信任 RAGFlow 的回答,因为您可以查看支持其答案的引用和参考文献。
RAGFlow 完整版和 RAGFlow 精简版有何区别?
每个 RAGFlow 版本都有两个版本可供选择
- 精简版:不包含内置嵌入模型,版本名称后带有 -slim 后缀。示例:
infiniflow/ragflow:v0.18.0-slim
- 完整版:包含内置嵌入模型,版本名称后没有后缀。示例:
infiniflow/ragflow:v0.18.0
哪些嵌入模型可以在本地部署?
RAGFlow 提供两种 Docker 镜像版本,v0.18.0-slim
和 v0.18.0
infiniflow/ragflow:v0.18.0-slim
(默认):不包含嵌入模型的 RAGFlow Docker 镜像。infiniflow/ragflow:v0.18.0
:包含以下嵌入模型的 RAGFlow Docker 镜像:- 内置嵌入模型
BAAI/bge-large-zh-v1.5
maidalun1020/bce-embedding-base_v1
- 在 RAGFlow 用户界面中选择后将下载的嵌入模型
BAAI/bge-base-en-v1.5
BAAI/bge-large-en-v1.5
BAAI/bge-small-en-v1.5
BAAI/bge-small-zh-v1.5
jinaai/jina-embeddings-v2-base-en
jinaai/jina-embeddings-v2-small-en
nomic-ai/nomic-embed-text-v1.5
sentence-transformers/all-MiniLM-L6-v2
- 内置嵌入模型
如何查找 RAGFlow 版本?如何解释版本信息?
您可以在用户界面的系统页面找到 RAGFlow 版本号
如果您从源代码构建 RAGFlow,版本号也会出现在系统日志中
____ ___ ______ ______ __
/ __ \ / | / ____// ____// /____ _ __
/ /_/ // /| | / / __ / /_ / // __ \| | /| / /
/ _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ /
/_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/
2025-02-18 10:10:43,835 INFO 1445658 RAGFlow version: v0.15.0-50-g6daae7f2 full
其中
v0.15.0
:官方发布的版本。50
:自官方发布以来 Git 提交的数量。g6daae7f2
:g
是前缀,6daae7f2
是当前提交 ID 的前七个字符。full
/slim
:RAGFlow 版本。full
:RAGFlow 完整版。slim
:不包含嵌入模型和 Python 包的 RAGFlow 版本。
为什么不使用其他开源向量数据库作为文档引擎?
目前,只有 Elasticsearch 和 Infinity 满足 RAGFlow 的混合搜索要求。大多数开源向量数据库对全文搜索的支持有限,并且稀疏嵌入不能替代全文搜索。此外,这些向量数据库缺乏 RAGFlow 所必需的关键功能,例如短语搜索和高级排名功能。
这些限制促使我们从头开始开发了 AI 原生数据库 Infinity。
demo.ragflow.io 与本地部署的开源 RAGFlow 服务有何区别?
demo.ragflow.io 展示了 RAGFlow 企业版的功能。其 DeepDoc 模型使用专有数据进行预训练,并提供更复杂的团队权限控制。本质上,demo.ragflow.io 是 RAGFlow 即将推出的 SaaS(软件即服务)产品的预览。
您可以部署开源 RAGFlow 服务,并通过 Python 客户端或 RESTful API 调用它。但是,demo.ragflow.io 不支持此功能。
为什么 RAGFlow 解析文档比 LangChain 花费的时间更长?
我们在使用视觉模型进行文档预处理任务(如布局分析、表格结构识别和 OCR(光学字符识别))方面付出了艰苦的努力。这导致了所需额外时间。
为什么 RAGFlow 比其他项目需要更多资源?
RAGFlow 内置了许多用于文档结构解析的模型,这解释了额外的计算资源需求。
RAGFlow 支持哪些架构或设备?
我们官方支持 x86 CPU 和 NVIDIA GPU。虽然我们也在 ARM64 平台上测试 RAGFlow,但我们不维护 ARM 平台的 RAGFlow Docker 镜像。如果您在 ARM 平台上,请按照此指南构建 RAGFlow Docker 镜像。
你们是否提供用于集成第三方应用的 API?
相应的 API 现已可用。有关详细信息,请参阅 RAGFlow HTTP API 参考或 RAGFlow Python API 参考。
你们是否支持流式输出?
是的,我们支持。
你们是否支持通过 URL 分享对话?
不,此功能不受支持。
你们是否支持多轮对话,将之前的对话作为当前查询的上下文?
是的,我们支持基于正在进行的对话的现有上下文增强用户查询
- 在聊天页面,将鼠标悬停在所需的助手上并选择编辑。
- 在聊天配置弹出窗口中,点击提示引擎选项卡。
- 开启多轮优化以启用此功能。
AI 搜索和聊天之间的主要区别?
- AI 搜索:这是一次性的 AI 对话,使用预定义的检索策略(加权关键词相似度和加权向量相似度的混合搜索)和系统的默认聊天模型。它不涉及知识图谱、自动关键词或自动问题等高级 RAG 策略。检索到的块将列在聊天模型响应下方。
- AI 聊天:这是多轮 AI 对话,您可以在其中定义您的检索策略(可以使用加权重排分数替换混合搜索中的加权向量相似度)并选择您的聊天模型。在 AI 聊天中,您可以根据您的特定情况配置高级 RAG 策略,例如知识图谱、自动关键词和自动问题。检索到的块不会与答案一起显示。
在调试聊天助手时,您可以使用 AI 搜索作为参考来验证您的模型设置和检索策略。
故障排除
如何从头构建 RAGFlow 镜像?
无法访问 https://hugging-face.cn
默认情况下,本地部署的 RAGflow 会从 Huggingface 网站下载 OCR 和嵌入模块。如果您的机器无法访问此网站,将出现以下错误并且 PDF 解析失败
FileNotFoundError: [Errno 2] No such file or directory: '/root/.cache/huggingface/hub/models--InfiniFlow--deepdoc/snapshots/be0c1e50eef6047b412d1800aa89aba4d275f997/ocr.res'
要解决此问题,请改用 https://hf-mirror.com
-
停止所有容器并删除所有相关资源
cd ragflow/docker/
docker compose down -
取消注释 ragflow/docker/.env 中的以下行
# HF_ENDPOINT=https://hf-mirror.com
-
启动服务器
docker compose up -d
MaxRetryError: HTTPSConnectionPool(host='hf-mirror.com', port=443)
此错误表明您没有互联网访问权限或无法连接到 hf-mirror.com。尝试以下操作
-
手动将资源文件从 huggingface.co/InfiniFlow/deepdoc 下载到您的本地文件夹 ~/deepdoc。
-
在 docker-compose.yml 中添加卷,例如
- ~/deepdoc:/ragflow/rag/res/deepdoc
WARNING: can't find /raglof/rag/res/borker.tm
忽略此警告并继续。所有系统警告都可以忽略。
network anomaly There is an abnormality in your network and you cannot connect to the server.
除非服务器完全初始化,否则您将无法登录 RAGFlow。运行 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
Realtime synonym is disabled, since no redis connection
忽略此警告并继续。所有系统警告都可以忽略。
为什么我的文档解析在百分之一以下时停滞?
点击“解析状态”条旁边的红色叉号,然后重新开始解析过程,看看问题是否仍然存在。如果问题仍然存在且您的 RAGFlow 是本地部署的,请尝试以下操作
-
检查您的 RAGFlow 服务器日志,看看它是否正常运行
docker logs -f ragflow-server
-
检查 task_executor.py 进程是否存在。
-
检查您的 RAGFlow 服务器是否可以访问 hf-mirror.com 或 huggingface.com。
为什么我的 PDF 解析接近完成时停滞,而日志没有显示任何错误?
点击“解析状态”条旁边的红色叉号,然后重新开始解析过程,看看问题是否仍然存在。如果问题仍然存在且您的 RAGFlow 是本地部署的,则解析过程很可能因内存不足而被终止。尝试通过增加 docker/.env 中 MEM_LIMIT
的值来增加内存分配。
请务必重启 RAGFlow 服务器,使您的更改生效!
docker compose stop
docker compose up -d
Index failure
索引失败通常表示 Elasticsearch 服务不可用。
如何检查 RAGFlow 的日志?
tail -f ragflow/docker/ragflow-logs/*.log
如何检查 RAGFlow 中每个组件的状态?
-
检查 Elasticsearch Docker 容器的状态
$ docker ps
以下是示例结果
5bc45806b680 infiniflow/ragflow:latest "./entrypoint.sh" 11 hours ago Up 11 hours 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:9380->9380/tcp, :::9380->9380/tcp ragflow-server
91220e3285dd docker.elastic.co/elasticsearch/elasticsearch:8.11.3 "/bin/tini -- /usr/l…" 11 hours ago Up 11 hours (healthy) 9300/tcp, 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp ragflow-es-01
d8c86f06c56b mysql:5.7.18 "docker-entrypoint.s…" 7 days ago Up 16 seconds (healthy) 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp ragflow-mysql
cd29bcb254bc quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z "/usr/bin/docker-ent…" 2 weeks ago Up 11 hours 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp ragflow-minio -
按照此文档检查 Elasticsearch 服务的健康状态。
Docker 容器的状态不一定反映服务的状态。您可能会发现即使相应的 Docker 容器正在运行,您的服务仍不健康。可能的原因包括网络故障、端口号不正确或 DNS 问题。
Exception: Can't connect to ES cluster
-
检查 Elasticsearch Docker 容器的状态
$ docker ps
健康的 Elasticsearch 组件状态应如下所示
91220e3285dd docker.elastic.co/elasticsearch/elasticsearch:8.11.3 "/bin/tini -- /usr/l…" 11 hours ago Up 11 hours (healthy) 9300/tcp, 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp ragflow-es-01
-
按照此文档检查 Elasticsearch 服务的健康状态。
Docker 容器的状态不一定反映服务的状态。您可能会发现即使相应的 Docker 容器正在运行,您的服务仍不健康。可能的原因包括网络故障、端口号不正确或 DNS 问题。
- 如果您的容器不断重启,请确保
vm.max_map_count
>= 262144,如此 README 中所述。如果您希望永久保留更改,则需要更新 /etc/sysctl.conf 中的vm.max_map_count
值。请注意,此配置仅适用于 Linux。
无法启动 ES 容器并出现 Elasticsearch did not exit normally
这是因为您忘记更新 /etc/sysctl.conf 中的 vm.max_map_count
值,并且系统重启后您对该值的更改被重置了。
{"data":null,"code":100,"message":"<NotFound '404: Not Found'>"}
您的 IP 地址或端口号可能不正确。如果您使用的是默认配置,请在浏览器中输入 http://<IP_OF_YOUR_MACHINE>
(不是 9380,无需端口号!)。这应该可以正常工作。
Ollama - Mistral instance running at 127.0.0.1:11434 but cannot add Ollama as model in RagFlow
正确的 Ollama IP 地址和端口对于将模型添加到 Ollama 至关重要
- 如果您使用 demo.ragflow.io,请确保托管 Ollama 的服务器具有可公开访问的 IP 地址。请注意,127.0.0.1 不是可公开访问的 IP 地址。
- 如果您在本地部署 RAGFlow,请确保 Ollama 和 RAGFlow 在同一局域网中并且可以相互通信。
有关详细信息,请参阅部署本地 LLM。
你们是否提供使用 DeepDoc 解析 PDF 或其他文件的示例?
是的,我们提供。请参阅 rag/app 文件夹下的 Python 文件。
FileNotFoundError: [Errno 2] No such file or directory
-
检查 MinIO Docker 容器的状态
$ docker ps
健康的 Elasticsearch 组件状态应如下所示
cd29bcb254bc quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z "/usr/bin/docker-ent…" 2 weeks ago Up 11 hours 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp ragflow-minio
-
按照此文档检查 Elasticsearch 服务的健康状态。
Docker 容器的状态不一定反映服务的状态。您可能会发现即使相应的 Docker 容器正在运行,您的服务仍不健康。可能的原因包括网络故障、端口号不正确或 DNS 问题。
使用方法
如何使用本地部署的 LLM 运行 RAGFlow?
您可以使用 Ollama 或 Xinference 部署本地 LLM。有关详细信息,请参阅此处。
如何添加不受支持的 LLM?
如果您的模型目前不受支持,但其 API 与 OpenAI 兼容,请在模型提供商页面点击OpenAI-API-Compatible 配置您的模型
如何将 RAGFlow 与 Ollama 集成?
- 如果 RAGFlow 是本地部署的,请确保您的 RAGFlow 和 Ollama 在同一局域网中。
- 如果您正在使用我们的在线演示,请确保您的 Ollama 服务器的 IP 地址是公开且可访问的。
有关详细信息,请参阅此处。
如何更改文件大小限制?
对于本地部署的 RAGFlow:每次上传的总文件大小限制为 1GB,批量上传限制为 32 个文件。每个账户的总文件数量没有上限。要更新这个 1GB 的文件大小限制
- 在 docker/.env 中,取消注释
# MAX_CONTENT_LENGTH=1073741824
,根据需要调整值,并注意1073741824
表示 1GB 的字节数。 - 如果您更新了 docker/.env 中
MAX_CONTENT_LENGTH
的值,请确保您相应地更新 nginx/nginx.conf 中的client_max_body_size
。
不建议手动更改 32 个文件的批量上传限制。但是,如果您使用 RAGFlow 的 HTTP API 或 Python SDK 上传文件,32 个文件的批量上传限制将自动移除。
Error: Range of input length should be [1, 30000]
发生此错误是因为有太多块匹配您的搜索条件。尝试降低 TopN 并提高相似度阈值来解决此问题
- 点击页面顶部中间的聊天。
- 右键单击所需的对话 > 编辑 > 提示引擎
- 降低 TopN 和/或提高相似度阈值。
- 点击确定确认您的更改。
如何获取用于集成第三方应用的 API 密钥?
如何升级 RAGFlow?
有关详细信息,请参阅升级 RAGFlow。
如何将文档引擎切换到 Infinity?
要将您的文档引擎从 Elasticsearch 切换到 Infinity
-
停止所有正在运行的容器
$ docker compose -f docker/docker-compose.yml down -v
-v
将删除所有 Docker 容器卷,并且现有数据将被清除。
-
在 docker/.env 中,设置
DOC_ENGINE=${DOC_ENGINE:-infinity}
-
重启您的 Docker 镜像
$ docker compose -f docker-compose.yml up -d
我上传的文件存储在 RAGFlow 镜像中的哪个位置?
所有上传的文件都存储在 RAGFlow 的对象存储解决方案 Minio 中。例如,如果您将文件直接上传到知识库,它将位于 <knowledgebase_id>/文件名
。