跳到主要内容

配置

通过Docker部署RAGFlow的配置。

指南

在系统配置方面,您需要管理以下文件:

  • .env:包含Docker的重要环境变量。
  • service_conf.yaml.template:配置后端服务。它指定了RAGFlow的系统级配置,并由其API服务器和任务执行器使用。在容器启动时,将根据此模板文件生成service_conf.yaml文件。该过程会替换模板中的所有环境变量,以便为容器环境提供动态配置。
  • docker-compose.yml:用于启动RAGFlow服务的Docker Compose文件。

要更新默认的HTTP服务端口(80),请访问docker-compose.yml,将80:80 更改为 <YOUR_SERVING_PORT>:80

注意

上述配置的更新需要重启所有容器才能生效:

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

Docker Compose

  • docker-compose.yml
    设置RAGFlow及其依赖项的环境。
  • docker-compose-base.yml
    设置RAGFlow依赖项的环境:Elasticsearch/Infinity、MySQL、MinIO和Redis。
重要

我们不积极维护 docker-compose-CN-oc9.ymldocker-compose-gpu-CN-oc9.ymldocker-compose-gpu.yml,因此请自行承担风险。不过您可以通过提交拉取请求来改进这些配置文件。

Docker环境变量

.env 文件包含Docker的重要环境变量。

Elasticsearch

  • STACK_VERSION
    Elasticsearch的版本,默认为 8.11.3
  • ES_PORT
    将Elasticsearch服务暴露给主机机器的端口,允许外部访问运行在Docker容器内的服务。默认为 1200
  • ELASTIC_PASSWORD
    Elasticsearch的密码。

Kibana

  • KIBANA_PORT
    将Kibana服务暴露给主机机器的端口,允许外部访问运行在Docker容器内的服务,默认为 6601
  • KIBANA_USER
    Kibana的用户名。默认值为 rag_flow
  • KIBANA_PASSWORD
    Kibana的密码。默认值为 infini_rag_flow

资源管理

  • MEM_LIMIT
    在运行期间,特定Docker容器可以使用的最大内存量(以字节为单位)。默认为 8073741824 字节。

MySQL

  • MYSQL_PASSWORD
    MySQL的密码。
  • MYSQL_PORT
    将MySQL服务暴露给主机机器的端口,允许外部访问运行在Docker容器内的MySQL数据库。默认为 5455

MinIO

RAGFlow 使用MinIO作为对象存储解决方案,并利用其可扩展性来存储和管理所有上传的文件。

  • MINIO_CONSOLE_PORT
    将MinIO控制台接口暴露给主机机器的端口,允许外部访问运行在Docker容器内的基于Web的控制台。默认为 9001
  • MINIO_PORT
    将MinIO API服务暴露给主机机器的端口,允许外部访问运行在Docker容器内的MinIO对象存储服务。默认为 9000.
  • MINIO_USER
    MinIO的用户名。
  • MINIO_PASSWORD
    MinIO的密码。

Redis

  • REDIS_PORT
    将Redis服务暴露给主机机器的端口,允许外部访问运行在Docker容器内的Redis服务。默认为 6379.
  • REDIS_PASSWORD
    Redis的密码。

RAGFlow

  • SVR_HTTP_PORT
    用于将RAGFlow的HTTP API服务暴露给主机机器的端口,允许从外部访问运行在Docker容器内的服务。默认为 9380

  • RAGFLOW-IMAGE
    Docker镜像版本。可用版本:

    • infiniflow/ragflow:v0.20.3-slim(默认):不包含嵌入式模型的RAGFlow Docker镜像
    • infiniflow/ragflow:v0.20.3: 包含嵌入式模型的RAGFlow Docker镜像,包括:
      • 内置的嵌入式模型:
        • BAAI/bge-large-zh-v1.5
        • maidalun1020/bce-embedding-base_v1
注意

如果无法下载 RAGFlow 的Docker镜像,请尝试使用以下镜像站点。

  • 对于 nightly-slim 版本:
    • RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:nightly-slim 或,
    • RAGFLOW_IMAGE=registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly-slim.
  • 对于 nightly 版本:
    • RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:nightly 或,
    • RAGFLOW_IMAGE=registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly.

时区

  • TIMEZONE
    当地时间区域。默认为 'Asia/Shanghai'

Hugging Face镜像站点

  • HF_ENDPOINT
    Huggingface.co的镜像站点,默认禁用。如果您对主要Hugging Face域名访问受限,可以取消此行注释启用该配置。

MacOS

  • MACOS
    macOS优化默认禁用。如果您的操作系统是macOS,可以取消此行注释启用它。

用户注册

  • REGISTER_ENABLED
    • 1: (默认)启用用户注册。
    • 0: 禁用用户注册。

服务配置

service_conf.yaml.template 定义了RAGFlow系统级别的配置,供其API服务器和任务执行器使用。

ragflow

  • host: API服务器在Docker容器内的IP地址。默认为0.0.0.0
  • port: API服务器在Docker容器内使用的端口。默认为9380

mysql

  • name: MySQL数据库名称,默认为rag_flow
  • user: MySQL用户名。
  • password: MySQL密码。
  • port: MySQL在Docker容器内的服务端口号,默认为3306
  • max_connections: 同时连接到MySQL数据库的最大并发连接数。默认为100
  • stale_timeout: 超时时间(秒)。

minio

  • user: MinIO用户名。
  • password: MinIO密码。
  • host: MinIO在Docker容器内的服务IP及端口,默认为minio:9000

oauth

使用第三方账户注册或登录RAGFlow时的OAuth配置。

  • <channel>: 自定义通道ID。
    • type: 认证类型,选项包括oauth2, oidc, github. 默认为oauth2,当提供issuer参数时,默认为oidc
    • icon: 图标ID,可选值包括github, sso,默认是sso
    • display_name: 通道名称,如果没有设置,则以大写形式显示通道ID。
    • client_id: 必填项,分配给客户端应用的唯一标识符。
    • client_secret: 必填项,用于与认证服务器通信的客户端密钥。
    • authorization_url: 获取用户授权的基本URL。
    • token_url: 换取授权码并获取访问令牌的URL。
    • userinfo_url: 获取用户信息(用户名、邮箱等)的URL。
    • issuer: 身份提供者的基址。OIDC客户端可以通过issuer动态获取身份提供者的信息(authorization_url, token_url, userinfo_url)。
    • scope: 请求的权限范围,空格分隔字符串。例如,openid profile email
    • redirect_uri: 必填项,在认证流程中用于重定向并返回结果给特定URI。必须与认证服务器注册的回调URI匹配。格式:https://your-app.com/v1/user/oauth/callback/<channel>。对于本地配置,可以直接使用http://127.0.0.1:80/v1/user/oauth/callback/<channel>
提示

以下是各种第三方身份验证方法的最佳实践。您可以为RAGFlow配置一个或多个第三方认证方法:

oauth:
oauth2:
display_name: "OAuth2"
client_id: "your_client_id"
client_secret: "your_client_secret"
authorization_url: "https://your-oauth-provider.com/oauth/authorize"
token_url: "https://your-oauth-provider.com/oauth/token"
userinfo_url: "https://your-oauth-provider.com/oauth/userinfo"
redirect_uri: "https://your-app.com/v1/user/oauth/callback/oauth2"

oidc:
display_name: "OIDC"
client_id: "your_client_id"
client_secret: "your_client_secret"
issuer: "https://your-oauth-provider.com/oidc"
scope: "openid email profile"
redirect_uri: "https://your-app.com/v1/user/oauth/callback/oidc"

github:
# https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app
type: "github"
icon: "github"
display_name: "Github"
client_id: "your_client_id"
client_secret: "your_client_secret"
redirect_uri: "https://your-app.com/v1/user/oauth/callback/github"

user_default_llm

新RAGFlow用户的默认LLM。默认情况下禁用此功能。要启用该功能,请取消注释service_conf.yaml.template文件中相应的行。

  • factory: LLM供应商。可选值包括:
    • "OpenAI"
    • "DeepSeek"
    • "Moonshot"
    • "Tongyi-Qianwen"
    • "VolcEngine"
    • "ZHIPU-AI"
  • api_key: 指定LLM的API密钥。您需要在线申请您的模型API密钥。
提示

如果您没有在此处设置默认LLM,请在RAGFlow UI中的Settings页面配置默认LLM。