fischer-agentkit/docs/research/2026-06-17-ragflow-integrat...

26 KiB
Raw Permalink Blame History

RAGFlow 引入可行性分析

创建日期: 2026-06-17 状态: 调研完成,待决策 目标: 评估将 RAGFlow 作为 Fischer AgentKit 知识库的可行性、技术路径与风险


一、RAGFlow 项目概览

维度 详情
仓库 https://github.com/infiniflow/ragflow
License Apache-2.0
GitHub Stars ~80k2025 年度 Top 10
最新版本 v0.25.62026-05-26
核心定位 基于深度文档理解的 RAG 引擎,构建 AI Agent 上下文层
技术栈 Python 后端 + React/TS 前端 + Docker 部署

核心差异化能力

  • DeepDoc 引擎OCR15+ 语言、版面识别10 类组件:文本/标题/图/表/页眉页脚/公式等、表格结构识别TSR
  • 混合检索:向量 + 全文 + 稀疏向量,支持 ColBERT late-interaction
  • 高级特性GraphRAG、RAPTOR层级摘要树、Parent-Child 分块、rerank、上下文压缩
  • 16+ 文档格式PDF/DOCX/PPT/Excel/图片/扫描件/网页/结构化数据等
  • Agent 工作流可视化编排、Memory 模块v0.23.0+、MCP 协议集成

部署资源要求(官方)

  • CPU ≥ 4 核
  • RAM ≥ 16 GB
  • Disk ≥ 50 GB
  • Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1

二、可行性结论:高度可行

Fischer AgentKit 已具备成熟的适配器架构专门为对接外部知识库设计RAGFlow 的 HTTP REST API 可直接映射到现有协议。

关键契合点

  1. 协议匹配:现有 KnowledgeBase Protocolsrc/agentkit/memory/knowledge_base.py:53-83)定义了 ingest()/query()/delete_by_id()/list_sources()/health_check()RAGFlow API 完全覆盖这些语义

  2. 适配器基类就绪KBAdaptersrc/agentkit/memory/adapters/base.py:22-160)已封装 httpx 客户端、生命周期管理、认证流程,子类只需实现 _make_client()search()

  3. 现有先例:已有 FeishuKBAdapterConfluenceAdapterGenericHTTPAdapter 三个适配器,模式成熟

  4. SemanticMemory 解耦SemanticMemorysrc/agentkit/memory/semantic.py:14-121)通过 rag_service 注入,不直接依赖具体实现

  5. API 标准化RAGFlow 使用 Bearer Token 认证、RESTful JSON 接口,与 HttpRAGService 期望的接口形态一致


三、重点技术路径

路径 1新增 RAGFlowAdapter推荐

src/agentkit/memory/adapters/ 下新增 ragflow.py,继承 KBAdapter

API 映射表

KBAdapter 方法 RAGFlow API 说明
search(query, top_k) POST /api/v1/retrieval body: {question, dataset_ids, top_k, similarity_threshold, vector_similarity_weight}
ingest(documents) POST /api/v1/datasets/{id}/documents + POST /api/v1/datasets/{id}/chunks 上传后需触发异步解析
delete_by_id(id) DELETE /api/v1/datasets/{id}/documents/{doc_id}
list_sources() GET /api/v1/datasets RAGFlow 的 dataset 概念 = Fischer 的 source
health_check() GET /api/v1/datasets/v1/health
get_document(doc_id) GET /api/v1/datasets/{id}/documents/{doc_id}

关键实现要点

  • _make_client() 配置 base_url + Authorization: Bearer <api_key>
  • search() 需将 RAGFlow 返回的 chunk 结构(content/document_id/dataset_id/similarity)标准化为 QueryResult
  • ingest() 需处理 RAGFlow 的异步解析流程:上传 → 触发 parse → 轮询状态(非同步返回)
  • adapters/__init__.py 注册导出

路径 2复用 HttpRAGService最快但能力受限

现有 HttpRAGService 已实现 /search/bases/{kb_id}/retrieve 调用。RAGFlow 的 retrieval 端点路径不同(/api/v1/retrieval),需在 RAGFlow 侧部署一层 API 网关适配,或扩展 HttpRAGService 支持自定义路径模板。

局限:无法利用 RAGFlow 的文档上传/解析/分块能力,只能做检索。

路径 3通过 ragflow-sdk 集成(不推荐)

pip install ragflow-sdk 直接调用 Python SDK。违背 Fischer 的"配置驱动、不直接依赖业务系统代码"原则,且引入额外依赖。

配置集成方案

agentkit.yamlmemory.semantic 段扩展:

memory:
  semantic:
    enabled: true
    adapter: "ragflow"
    base_url: "http://ragflow-ecs-internal-ip:9380"
    api_key: "${RAGFLOW_API_KEY}"
    dataset_ids:
      - "industry-kb-dataset-id"
      - "enterprise-kb-dataset-id"
    timeout: 30
    retrieval:
      similarity_threshold: 0.2
      vector_similarity_weight: 0.3
      top_k: 10
      rerank_id: "BAAI/bge-reranker-v2-m3"
    ingest:
      mode: "async"
      poll_interval: 5
      poll_timeout: 600
    health_check:
      interval: 60
      fail_threshold: 3

与现有 LocalRAGService 的关系

LocalRAGServicepgvector与 RAGFlow 定位不同:

  • LocalRAGService:轻量、同进程、适合中小规模文本知识
  • RAGFlow重量级、独立服务、擅长复杂文档PDF/扫描件/表格)深度解析

建议并存,通过 MultiSourceRetriever 聚合,按文档类型路由:纯文本走 Local复杂文档走 RAGFlow。


四、风险分析与缓解措施评估

高风险项

风险 1资源占用重16GB+ RAM

原措施slim 镜像 + 外部 embedding API / 独立机器部署

评估维度 结论
可行性 可行但需分场景。slim 镜像(~2GB确实省去内置 embedding 模型,但 DeepDoc 的 OCR/TSR/Layout 模型仍打包在内RAM 峰值仍需 8GB+
缓解效果 ⚠️ 部分有效。slim 仅省 embedding 部分(约 4-6GBDeepDoc 推理时仍会瞬时占用 2-4GB
次生风险 🔴 外部 embedding API 引入新依赖链:① 网络延迟叠加(检索路径变成 Fischer→RAGFlow→外部Embedding API3 跳);② 外部 API 限流/宕机时 RAGFlow 解析直接失败;③ 跨网络传输文档内容存在数据泄露面

更优解

  • 方案 A推荐RAGFlow 独立机器/K8s 节点部署,与 Fischer 集群物理隔离,仅通过 HTTP API 通信
  • 方案 B:若必须同机,用 cgroup/Docker CPU+memory limits 硬隔离 RAGFlow 容器
  • 不建议:外部 embedding API 方案,除非已有内部 embedding 服务

风险 2架构栈重叠Redis/MySQL/ES vs Fischer 的 Redis/PG

原措施:复用 Fischer 的 RedisES/Infinity 无法复用 PG

评估维度 结论
可行性 ⚠️ Redis 复用技术上可行但有陷阱。RAGFlow 用 Redis 做 Celery broker + 缓存Fischer 用 Redis 做 RedisMessageBusStreams+ TaskStore。两者可用不同 db number 隔离
缓解效果 ⚠️ 有限。省下的仅是 Redis 实例(~100MBES/Infinity2-4GB和 MySQL1-2GB仍需独立部署重叠问题仅解决 10-15%
次生风险 🔴 Redis 复用有严重隐患:① RAGFlow 的 Celery 任务高峰期会打满 Redis 连接池,影响 Fischer 的 RedisMessageBus 消息投递;② key 命名空间若冲突可能导致数据污染;③ RAGFlow 升级时 Redis schema 变更可能波及 Fischer

更优解

  • 方案 A推荐:完全不共享,独立 Redis 实例。RAGFlow 自带 docker-compose 已包含 Redis保持默认部署不动
  • 方案 B:若强需共享,用 Redis Sentinel/Cluster 的不同 dbRAGFlow 用 db=1Fischer 用 db=0并配置独立的 maxmemory-policy 和连接池上限
  • ES/Infinity无更优解RAGFlow 强依赖其混合检索能力PG+pgvector 无法替代

风险 3异步解析延迟大文档数分钟

原措施:适配器内轮询 / 异步任务模式

评估维度 结论
可行性 可行Fischer 已有完整异步任务基础设施。TaskStore 支持 PENDING→RUNNING→COMPLETED 状态机tasks 路由已有 submit/status/list/cancel API
缓解效果 有效。将 RAGFlow ingest 拆为"提交上传→返回 task_id→后台轮询解析状态→更新 task"四步
次生风险 🟡 中等:① 轮询频率若过高会冲击 RAGFlow API建议 5-10s 间隔,指数退避);② task TTL 与 RAGFlow 解析时长不匹配;③ 用户在解析未完成时检索会得到空结果

更优解

  • 方案 A推荐:用 RAGFlow 的 Webhook 回调替代轮询。RAGFlow v0.23.0+ 支持 Webhook 触发,解析完成后主动回调 Fischer 的 /api/v1/tasks/{id}/callback
  • 方案 B:若 Webhook 不可用,用 RedisMessageBus 发布解析完成事件,适配器订阅后更新 task 状态
  • 方案 C:分离 ingest 和 query 路径——ingest 走异步 taskquery 永远同步

中风险项

风险 4Embedding 模型锁定

原措施:规划期确定模型;不同 dataset 用不同模型

评估维度 结论
可行性 ⚠️ 部分可行。"不同 dataset 不同模型"技术上成立,但跨 dataset 检索时向量维度不一致会导致召回失效
缓解效果 ⚠️ 有限。锁定后若需切换模型,必须重建整个 dataset
次生风险 🟡 模型碎片化:多个 dataset 用不同 embeddingSemanticMemory 的 kb_weights 加权策略失效

更优解

  • 方案 A推荐:全组织统一 embedding 模型(建议 BAAI/bge-large-zh-v1.5bge-m3),所有 dataset 强制一致
  • 方案 B:若必须多模型,在适配器层按 dataset 分组检索,组内归一化 score 后再融合
  • 根本性建议:将 embedding 模型选择纳入 Fischer 的 LLM Gateway 统一管理

风险 5ARM64 支持缺失

原措施x86 Docker / 自行构建

评估维度 结论
可行性 可行。自行构建有官方文档支持
缓解效果 有效,但构建耗时(含模型下载约 30-60 分钟)
次生风险 🟢 低。主要是构建产物维护成本

更优解

  • 方案 A:开发环境用 x86 Docker Desktop生产环境强制 x86 服务器
  • 方案 B:若有 CI/CD用 GitHub Actions 在 ARM64 runner 上自动构建并推送到私有 registry

风险 6版本快速迭代API breaking change

原措施:锁定版本;适配器层兼容

评估维度 结论
可行性 可行。锁定版本是标准做法
缓解效果 有效但被动。锁定版本意味着无法获得 bug 修复和新特性
次生风险 🟡 安全漏洞累积:长期不升级会错过安全补丁

更优解

  • 方案 A推荐:适配器层做 API 版本抽象。定义 RAGFlowAPIVersion 枚举,适配器根据版本号选择不同的端点路径和响应解析逻辑
  • 方案 B:跟随 RAGFlow 的 minor 版本(如固定 v0.25.xpatch 版本自动升级

风险 7数据模型映射损耗

原措施:适配器层完整字段映射,特有字段入 metadata

评估维度 结论
可行性 完全可行。这是适配器模式的标准职责
缓解效果 有效。QueryResult 的 metadata 字段是 dict可容纳任意额外字段
次生风险 🟢 极低

更优解:当前方案已足够。增强建议:定义 RAGFlowChunkMetadata Pydantic 模型,结构化 RAGFlow 特有字段

低风险项

风险 8网络调用开销

原措施timeout + 降级

评估维度 结论
可行性 可行。SemanticMemory 已有 try/except 降级到空结果
缓解效果 有效
次生风险 🟡 降级静默化:检索失败返回空列表,用户无感知

更优解:在降级时记录 metric并向前端 WebSocket 推送 error 事件;增加 circuit breaker

风险 9 & 10认证差异 / 功能重叠

评估:两项措施均完全可行且无次生风险,无需更优解。

综合评估矩阵

风险 原措施可行性 次生风险 缓解效果 更优解收益
1. 资源占用 ⚠️ 部分 🔴 ⚠️ 部分 独立部署彻底解决
2. 架构栈重叠 ⚠️ 部分 🔴 ⚠️ 仅10-15% 独立Redis实例不共享
3. 异步解析 可行 🟡 有效 Webhook回调消除轮询
4. Embedding锁定 ⚠️ 部分 🟡 ⚠️ 有限 统一模型+网关治理
5. ARM64 可行 🟢 有效 CI自动构建
6. 版本迭代 可行 🟡 ⚠️ 被动 API版本抽象层
7. 数据映射 可行 🟢 极低 有效 已足够
8. 网络开销 可行 🟡 有效 metric+WS通知

关键结论

  1. 原措施中 2 项有严重次生风险需立即调整

    • 风险 1 的"外部 embedding API"方案 → 改为独立机器部署
    • 风险 2 的"复用 Redis"方案 → 改为独立 Redis 实例
  2. 1 项有明确更优解

    • 风险 3 的"轮询"→ 改用 RAGFlow Webhook 回调
  3. 最关键的系统性建议:将 RAGFlow 视为完全独立的外部服务(而非与 Fischer 共享基础设施的组件),通过 HTTP API 松耦合

  4. embedding 模型治理应统一到 Fischer 的 LLM Gateway,避免模型碎片化和 score 不可比问题


五、独立部署配置方案(阿里云)

架构拓扑

┌─────────────────────────────────────────────────────────────┐
│  阿里云 VPC (10.0.0.0/16)                                    │
│                                                              │
│  ┌──────────────────────┐         ┌───────────────────────┐ │
│  │ Fischer ECS (已有)    │         │ RAGFlow ECS (新增)     │ │
│  │ 10.0.1.10            │  HTTPS  │ 10.0.2.10             │ │
│  │ agentkit serve:8001  │◄───────►│ ragflow:9380          │ │
│  │ Redis:6379 (内嵌)    │         │ Infinity:23321        │ │
│  │ PG:5432 (内嵌)       │         │ MySQL:3306 Redis:6380 │ │
│  └──────────────────────┘         └───────────────────────┘ │
│         │                                  │                 │
│         │          ┌──────────────────────┐│                 │
│         └─────────►│  阿里云 NAS / ESSD   │◄┘                 │
│                    │  (文档持久化存储)     │                  │
│                    └──────────────────────┘                  │
└─────────────────────────────────────────────────────────────┘

资源需求核算(修正后)

RAGFlow 各组件实际内存占用:

组件 最小可运行 推荐生产 说明
RAGFlow Server + DeepDoc 2GB 4GB Python 进程DeepDoc 推理时峰值 +2GB
Elasticsearch 4GBheap 2g 8GBheap 4g JVM heap = 容器内存 50%
Infinity替代ES 2GB 3GB Rust 实现,无 JVM 开销
MySQL 1GB 2GB 元数据存储,数据量小
Redis 512MB 1GB Celery broker + 缓存
MinIO 512MB 1GB 文档对象存储
系统开销 1GB 2GB OS + Docker daemon

按业务规模分档推荐

档位 1POC / 小规模(< 1000 文档)

配置 规格 月费
实例 ecs.g7.xlarge4c16g ¥450
数据盘 ESSD PL0 100GB ¥45
合计 ~¥500/月

档位 2中小规模1000-10000 文档) 推荐

配置 规格 月费
实例 ecs.g7.2xlarge8c32g ¥900
数据盘 ESSD PL1 200GB ¥150
合计 ~¥1,050/月

资源分配:

RAGFlow Server:  4GB
ES (heap 4g):    8GB  或  Infinity: 3GB
MySQL:           2GB
Redis:           1GB
MinIO:           1GB
系统余量:        16GB含 DeepDoc 推理峰值)

档位 3中大规模1万-10万文档

配置 规格 月费
实例 ecs.g7.3xlarge12c48g ¥1,350
数据盘 ESSD PL1 500GB ¥375
合计 ~¥1,725/月

降配三个手段

  1. 用 Infinity 替代 Elasticsearch(省 4-6GBRust 实现,无 JVM 开销
  2. slim 镜像 + 外部 Embedding(省 4GBembedding 走阿里云百炼 text-embedding-v2
  3. MySQL/Redis 用 RAGFlow 自带(不共享,彻底隔离)

综合最优方案(性价比最高)

项目 选择 理由
实例 ecs.g7.2xlarge8c32g 留足 DeepDoc 推理余量
文档引擎 Infinity非 ES 省 5GB 内存
镜像 v0.25.6-slim 不含 embedding 模型
Embedding 阿里云百炼 text-embedding-v2 外部 API按量付费极低
MySQL/Redis RAGFlow 自带 不共享,彻底隔离
数据盘 ESSD PL1 200GB IOPS 够用
月费 ~¥1,050

资源实际占用预估:

RAGFlow Server (slim):  2GB
DeepDoc 推理峰值:        +2GB间歇性
Infinity:               3GB
MySQL:                  2GB
Redis:                  1GB
MinIO:                  1GB
系统:                   2GB
────────────────────────────
总计:                   ~13GB32GB 机器余量充足)

极限降配方案(仅 POC 验证用)

项目 选择 月费
实例 ecs.g7.xlarge4c16g ¥450
文档引擎 Infinity
镜像 slim + 外部 embedding
月费 ~¥500

⚠️ 4c16g 下 DeepDoc 解析大 PDF>50页可能触发 OOM仅适合验证检索效果。


六、RAGFlow 侧 Docker Compose 配置

# /opt/ragflow/docker/docker-compose.yml基于官方 v0.25.6 调整)
services:
  ragflow-server:
    image: registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:v0.25.6-slim
    container_name: ragflow-server
    ports:
      - "10.0.2.10:9380:9380"        # 仅绑定内网 IP不暴露公网
      - "10.0.2.10:80:80"
    environment:
      - SVR_HTTP_PORT=9380
      - MYSQL_HOST=mysql
      - MYSQL_PORT=3306
      - REDIS_HOST=redis
      - REDIS_PORT=6380               # 与 Fischer Redis 端口隔离
      - DOC_ENGINE=infinity            # 使用 Infinity 替代 ES
      - MINIO_HOST=minio:9000
    volumes:
      - /data/ragflow/ragflow-logs:/ragflow/logs
      - /data/ragflow/ragflow-data:/ragflow/data
    depends_on:
      - mysql
      - redis
      - minio
      - infinity
    restart: unless-stopped
    deploy:
      resources:
        limits:
          memory: 8G

  infinity:
    image: infiniflow/infinity:v0.6.0
    container_name: ragflow-infinity
    volumes:
      - /data/ragflow/infinity-data:/infinity/data
    deploy:
      resources:
        limits:
          memory: 4G

  mysql:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=ragflow
    volumes:
      - /data/ragflow/mysql-data:/var/lib/mysql
    deploy:
      resources:
        limits:
          memory: 2G

  redis:
    image: redis:7-alpine
    command: redis-server --port 6380 --maxmemory 1gb --maxmemory-policy allkeys-lru
    volumes:
      - /data/ragflow/redis-data:/data
    deploy:
      resources:
        limits:
          memory: 2G

  minio:
    image: minio/minio:latest
    command: server /data --console-address ":9001"
    environment:
      - MINIO_ROOT_USER=${MINIO_ROOT_USER}
      - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
    volumes:
      - /data/ragflow/minio-data:/data
    deploy:
      resources:
        limits:
          memory: 1G

系统级配置(必做)

# 1. 内核参数ES 必须Infinity 建议也设置)
sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

# 2. 创建数据目录
sudo mkdir -p /data/ragflow/{infinity-data,mysql-data,redis-data,minio-data,ragflow-data,ragflow-logs}
sudo chown -R 1000:1000 /data/ragflow

# 3. Docker 镜像加速(阿里云容器镜像服务)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://your-acs-mirror.mirror.aliyuncs.com"]
}
EOF
sudo systemctl restart docker

七、Fischer 侧 agentkit.yaml 配置

在现有 agentkit.yaml 中新增 memory 段:

# 在现有 agentkit.yaml 末尾追加
memory:
  semantic:
    enabled: true
    adapter: "ragflow"                    # 新增 adapter 类型标识
    base_url: "http://10.0.2.10:9380"     # RAGFlow ECS 内网 IP
    api_key: "${RAGFLOW_API_KEY}"         # 从环境变量读取
    timeout: 30
    knowledge_base_ids:                   # RAGFlow dataset IDs
      - "dataset_industry_kb"
      - "dataset_enterprise_kb"
    # RAGFlow 检索参数
    retrieval:
      similarity_threshold: 0.2           # 低于此分数不返回
      vector_similarity_weight: 0.3       # 向量权重 (0-1)
      top_k: 10                           # 单次召回数
      rerank_id: "BAAI/bge-reranker-v2-m3"  # 可选 rerank 模型
    # 异步 ingest 配置
    ingest:
      mode: "async"                       # async | sync
      poll_interval: 5                    # 轮询间隔(秒)
      poll_timeout: 600                   # 最大等待(秒)
    # 健康检查
    health_check:
      interval: 60                        # 检查间隔(秒)
      fail_threshold: 3                   # 连续失败 N 次熔断

环境变量Fischer ECS 的 .env

# RAGFlow API Key在 RAGFlow Web UI > 设置 > API Key 生成)
RAGFLOW_API_KEY=ragflow-xxxxxxxxxxxxxxxxxxxxxxxx

# 可选embedding 模型走阿里云百炼
DASHSCOPE_API_KEY=sk-xxxxxxxxxxxx

八、阿里云网络与安全配置

VPC 安全组规则

RAGFlow ECS 安全组(仅允许 Fischer 内网访问):

方向 协议 端口 源/目标 用途
TCP 9380 10.0.1.10/32 (Fischer) RAGFlow API
TCP 80 10.0.1.10/32 (Fischer) RAGFlow Web可选
TCP 22 管理跳板机 IP SSH 运维
TCP 443 0.0.0.0/0 拉取镜像、调用外部 LLM
TCP * 0.0.0.0/0 拒绝(默认)

API Key 安全

RAGFlow API Key 通过阿里云 KMS 加密存储,运行时解密注入:

# 加密 API Key 到 KMS
aliyun kms Encrypt \
  --KeyId key-ragflow \
  --Plaintext "$(echo -n 'ragflow-xxx' | base64)"

# Fischer 启动脚本中解密
export RAGFLOW_API_KEY=$(aliyun kms Decrypt \
  --CiphertextBlob "encrypted-blob" \
  --query Plaintext | base64 -d)

九、可选阿里云托管服务替代

RAGFlow 组件 阿里云替代 优势 成本
Elasticsearch 阿里云 ES 免运维、自动备份、监控 ~¥800/月2核4G
MySQL RDS MySQL 高可用、自动备份 ~¥200/月1核2G
Redis Tair/Redis 实例 免运维、持久化 ~¥150/月1G
MinIO文档存储 OSS 11个9 持久性、低成本 ~¥0.12/GB/月
服务器 ACKK8s 弹性伸缩、滚动升级 节点费 + 管理费

成本对比

方案 月费 适用场景
全自管 ECS8c32g + Infinity + slim ~¥1,050 推荐起步
ECS + 托管服务混合 ~¥2,062 免运维需求
经济型 POC4c16g ~¥500 仅验证

十、实施步骤

  1. POC 验证:用 docker compose 起一个 RAGFlow slim + Infinity 实例,上传 1 个 PDF调用 /api/v1/retrieval 验证检索效果
  2. 实现 RAGFlowAdapter:参考 generic_http.py 模式,重点处理异步解析和字段映射
  3. 配置集成:扩展 agentkit.yaml schema 和 SemanticMemory 初始化逻辑
  4. 单元测试参考现有适配器测试mock RAGFlow API 响应
  5. 集成测试:验证 RAGFlow + LocalRAGService 多源检索聚合

部署 Checklist

  • RAGFlow ECS 创建并加入与 Fischer 相同的 VPC
  • 安全组仅放行 Fischer 内网 IP 到 9380 端口
  • vm.max_map_count=262144 永久生效
  • 数据盘挂载到 /data/ragflow/ 并设置正确权限
  • RAGFlow docker-compose 启动,docker logs -f ragflow-server 显示就绪
  • RAGFlow Web UI 创建 dataset记录 dataset_id
  • 生成 RAGFlow API Key通过 KMS 加密存储
  • Fischer .env 配置 RAGFLOW_API_KEY
  • Fischer agentkit.yaml 配置 memory.semantic 段
  • 从 Fischer ECS 执行 curl http://10.0.2.10:9380/api/v1/datasets 验证连通
  • 上传测试文档,验证 ingest 异步解析完成
  • 执行检索测试,验证 QueryResult 字段映射正确

十一、核心判断

RAGFlow 的价值在于 DeepDoc 深度文档解析这一项 Fischer 现有栈pgvector + TextChunker明显薄弱的能力。

  • 如果业务场景涉及大量 PDF/扫描件/复杂表格 → 引入值得
  • 若仅处理纯文本 → 现有的 LocalRAGService 已够用,不必承担 RAGFlow 的运维复杂度

关键决策点

  1. RAGFlow 视为完全独立的外部服务,通过 HTTP API 松耦合,不共享基础设施
  2. embedding 模型治理统一到 Fischer 的 LLM Gateway
  3. 起步用全自管 ECS8c32g + Infinity + slim~¥1,050/月),验证业务价值后再评估是否迁移到托管服务
  4. ECS 规格选 g7.2xlarge 是经过 RAGFlow 全栈资源分配计算的安全值,不建议低于 32GB RAM生产环境

参考资料