Skip to main content
Version: DEV

常见问题

关于通用功能、故障排除、使用说明等问题的答案。


通用功能


RAGFlow 与其他 RAG 产品相比有什么独特之处?

尽管大语言模型(LLM)在自然语言处理(NLP)方面取得了显著进展,但"垃圾进垃圾出"的现状仍未改变。作为回应,RAGFlow 相比其他检索增强生成(RAG)产品引入了两个独特功能。

  • 细粒度文档解析:文档解析涉及图像和表格,您可以灵活地根据需要介入。
  • 可追溯的答案,减少幻觉:您可以信任 RAGFlow 的响应,因为您可以查看支持它们的引用和参考文献。

RAGFlow 完整版和 RAGFlow 精简版有什么区别?

每个 RAGFlow 版本都提供两个版本:

  • 精简版:不包含内置嵌入模型,在版本名称后添加 -slim 后缀标识。例如:infiniflow/ragflow:v0.20.5-slim
  • 完整版:包含内置嵌入模型,版本名称后不添加后缀。例如:infiniflow/ragflow:v0.20.5

哪些嵌入模型可以本地部署?

RAGFlow 提供两个 Docker 镜像版本:v0.20.5-slimv0.20.5

  • infiniflow/ragflow:v0.20.5-slim(默认):不包含嵌入模型的 RAGFlow Docker 镜像。
  • infiniflow/ragflow:v0.20.5:包含嵌入模型的 RAGFlow Docker 镜像,包括:
    • 内置嵌入模型:
      • BAAI/bge-large-zh-v1.5
      • maidalun1020/bce-embedding-base_v1
    • 在 RAGFlow UI 中选择后才会下载的嵌入模型:
      • 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 的版本?如何解读版本号?

您可以在 UI 的系统页面找到 RAGFlow 版本号:

Image

如果您从源码构建 RAGFlow,版本号也会在系统日志中显示:

        ____   ___    ______ ______ __               
/ __ \ / | / ____// ____// /____ _ __
/ /_/ // /| | / / __ / /_ / // __ \| | /| / /
/ _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ /
/_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/

2025-02-18 10:10:43,835 INFO 1445658 RAGFlow version: v0.15.0-50-g6daae7f2 full

其中:

  • v0.15.0:正式发布的版本。
  • 50:自正式发布以来的 git 提交次数。
  • g6daae7f2g 是前缀,6daae7f2 是当前提交 ID 的前七个字符。
  • full/slim:RAGFlow 版本。
    • full:RAGFlow 完整版。
    • slim:不包含嵌入模型和 Python 包的 RAGFlow 版本。

为什么不使用其他开源向量数据库作为文档引擎?

目前,只有 Elasticsearch 和 Infinity 满足 RAGFlow 的混合搜索要求。大多数开源向量数据库对全文搜索的支持有限,稀疏嵌入无法替代全文搜索。此外,这些向量数据库缺乏 RAGFlow 必需的关键功能,如短语搜索和高级排序功能。

这些限制促使我们从零开始开发 Infinity,这是一个 AI 原生数据库。


demo.ragflow.io 和本地部署的开源 RAGFlow 服务有什么区别?

demo.ragflow.io 展示了 RAGFlow Enterprise 的功能。其 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 参考


您是否支持流式输出?

是的,我们支持。流式输出在聊天助手和代理中默认启用。请注意,您无法通过 RAGFlow 的 UI 禁用流式输出。要禁用响应中的流式输出,请使用 RAGFlow 的 Python 或 RESTful API:

Python:

RESTful:


您是否支持通过 URL 分享对话?

不,不支持此功能。


您是否支持多轮对话,将之前的对话作为当前查询的上下文?

是的,我们支持基于正在进行的对话的现有上下文来增强用户查询:

  1. 聊天页面上,悬停在所需的助手上方并选择编辑
  2. 聊天配置弹出窗口中,点击提示引擎标签。
  3. 开启多轮优化以启用此功能。

AI 搜索和聊天之间的主要区别是什么?

  • AI 搜索:这是一个单轮 AI 对话,使用预定义的检索策略(加权关键词相似性和加权向量相似性的混合搜索)和系统的默认聊天模型。它不涉及高级 RAG 策略,如知识图谱、自动关键词或自动问题。检索到的块将列在聊天模型响应下方。
  • AI 聊天:这是一个多轮 AI 对话,您可以定义检索策略(可以使用加权重排序分数来替换混合搜索中的加权向量相似性)并选择聊天模型。在 AI 聊天中,您可以为特定情况配置高级 RAG 策略,如知识图谱、自动关键词和自动问题。检索到的块不会与答案一起显示。

在调试聊天助手时,您可以使用 AI 搜索作为参考来验证模型设置和检索策略。


故障排除


如何从零开始构建 RAGFlow 镜像?

请参阅构建 RAGFlow Docker 镜像

无法访问 https://huggingface.co

本地部署的 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

  1. 停止所有容器并删除所有相关资源:

    cd ragflow/docker/
    docker compose down
  2. ragflow/docker/.env 中取消注释以下行:

    # HF_ENDPOINT=https://hf-mirror.com
  3. 启动服务器:

    docker compose up -d 

MaxRetryError: HTTPSConnectionPool(host='hf-mirror.com', port=443)

此错误表明您没有互联网访问权限或无法连接到 hf-mirror.com。请尝试以下操作:

  1. 手动从 huggingface.co/InfiniFlow/deepdoc 下载资源文件到您的本地文件夹 ~/deepdoc

  2. 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.

anomaly

除非服务器完全初始化,否则您将无法登录 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

忽略此警告并继续。所有系统警告都可以忽略。


为什么我的文档解析在不到 1% 时停滞?

stall

点击"解析状态"栏旁边的红色十字,然后重新启动解析过程以查看问题是否仍然存在。如果问题持续存在且您的 RAGFlow 是本地部署的,请尝试以下操作:

  1. 检查 RAGFlow 服务器的日志以查看其是否正常运行:

    docker logs -f ragflow-server
  2. 检查 task_executor.py 进程是否存在。

  3. 检查您的 RAGFlow 服务器是否可以访问 hf-mirror.com 或 huggingface.com。


为什么我的 PDF 解析在接近完成时停滞,而日志没有显示任何错误?

点击"解析状态"栏旁边的红色十字,然后重新启动解析过程以查看问题是否仍然存在。如果问题持续存在且您的 RAGFlow 是本地部署的,解析过程可能由于内存不足而被终止。尝试通过增加 docker/.env 中的 MEM_LIMIT 值来增加内存分配。

note

确保重新启动 RAGFlow 服务器以使更改生效!

docker compose stop
docker compose up -d

nearcompletion


Index failure

索引失败通常表示 Elasticsearch 服务不可用。


如何检查 RAGFlow 的日志?

tail -f ragflow/docker/ragflow-logs/*.log

如何检查 RAGFlow 中每个组件的状态?

  1. 检查 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
  2. 按照此文档检查 Elasticsearch 服务的健康状态。

重要

Docker 容器状态不一定反映服务的状态。即使相应的 Docker 容器正在运行,您也可能发现服务不健康。可能的原因包括网络故障、端口号错误或 DNS 问题。


Exception: Can't connect to ES cluster

  1. 检查 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
  2. 按照此文档检查 Elasticsearch 服务的健康状态。

重要

Docker 容器状态不一定反映服务的状态。即使相应的 Docker 容器正在运行,您也可能发现服务不健康。可能的原因包括网络故障、端口号错误或 DNS 问题。

  1. 如果您的容器不断重启,请确保 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>不是 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 在同一 LAN 中并且可以相互通信。

有关更多信息,请参阅部署本地 LLM


您是否提供使用 DeepDoc 解析 PDF 或其他文件的示例?

是的,我们提供。请查看 rag/app 文件夹下的 Python 文件。


FileNotFoundError: [Errno 2] No such file or directory

  1. 检查 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
  2. 按照此文档检查 Elasticsearch 服务的健康状态。

重要

Docker 容器状态不一定反映服务的状态。即使相应的 Docker 容器正在运行,您也可能发现服务不健康。可能的原因包括网络故障、端口号错误或 DNS 问题。


使用说明


如何使用本地部署的 LLM 运行 RAGFlow?

您可以使用 Ollama 或 Xinference 来部署本地 LLM。有关更多信息,请参阅这里


如何添加不支持的 LLM?

如果您的模型目前不受支持但与 OpenAI 的 API 兼容,请在模型提供商页面上点击OpenAI-API-Compatible来配置您的模型:

openai-api-compatible


如何将 RAGFlow 与 Ollama 集成?

  • 如果 RAGFlow 是本地部署的,请确保您的 RAGFlow 和 Ollama 在同一 LAN 中。
  • 如果您使用我们的在线演示,请确保您的 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 并增加相似性阈值来解决此问题:

  1. 点击页面顶部中间的聊天
  2. 右键点击所需的对话 > 编辑 > 提示引擎
  3. 减少 TopN 和/或提高相似性阈值
  4. 点击确定确认您的更改。

topn


如何获取用于与第三方应用程序集成的 API 密钥?

请参阅获取 RAGFlow API 密钥


如何升级 RAGFlow?

有关更多信息,请参阅升级 RAGFlow


如何将文档引擎切换到 Infinity?

要将文档引擎从 Elasticsearch 切换到 Infinity

  1. 停止所有正在运行的容器:

    $ docker compose -f docker/docker-compose.yml down -v
警告

-v 将删除所有 Docker 容器卷,现有数据将被清除。

  1. docker/.env 中,设置 DOC_ENGINE=${DOC_ENGINE:-infinity}

  2. 重新启动您的 Docker 镜像:

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

我上传的文件在 RAGFlow 镜像中存储在哪里?

所有上传的文件都存储在 Minio 中,这是 RAGFlow 的对象存储解决方案。例如,如果您直接将文件上传到知识库,它位于 <knowledgebase_id>/filename


如何调整文档解析和嵌入的批处理大小?

您可以通过设置环境变量 DOC_BULK_SIZEEMBEDDING_BATCH_SIZE 来控制文档解析和嵌入的批处理大小。增加这些值可能会提高大规模数据处理的吞吐量,但也会增加内存使用量。请根据您的硬件资源调整它们。