RagFlow 完全指南(一):从零搭建开源大模型应用平台(Ollama、VLLM本地模型接入实战)

news2025/5/12 5:28:12

文章目录

    • 1. 相关资源
    • 2. 核心特性
    • 3. 安装与部署
      • 3.1 环境准备
      • 3.2 部署RagFlow
      • 3.3 更新RagFlow
      • 3.4 系统配置
    • 4. 接入本地模型
      • 4.1 接入 Ollama 本地模型
        • 4.1.1 步骤
        • 4.1.2 常见问题
      • 4.2 接入 VLLM 模型
    • 5. 应用场景
    • 6. 总结

1. 相关资源

  • 官网
  • GitHub
  • 文档中心

2. 核心特性

  • 🍭 “Quality in, quality out”
    • 基于深度文档理解,能够从各类复杂格式的非结构化数据中提取真知灼见。
    • 真正在无限上下文(token)的场景下快速完成大海捞针测试。
  • 🍱 基于模板的文本切片
    • 不仅仅是智能,更重要的是可控可解释。
    • 多种文本模板可供选择。
  • 🌱 有理有据、最大程度降低幻觉(hallucination)
    • 文本切片过程可视化,支持手动调整。
    • 有理有据:答案提供关键引用的快照并支持追根溯源。
  • 🍔 兼容各类异构数据源
    • 支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据、网页等。
  • 🛀 全程无忧、自动化的 RAG 工作流
    • 全面优化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。
    • 大语言模型 LLM 以及向量模型均支持配置。
    • 基于多路召回、融合重排序。
    • 提供易用的 API,可以轻松集成到各类企业系统。

3. 安装与部署

3.1 环境准备

  • 依赖工具:安装 Docker 与 Docker Compose。

  • 系统要求

    # 查看vm.max_map_count值,要求其不能小于 262144
    sysctl vm.max_map_count
    # 小于的话,进行设置
    sudo sysctl -w vm.max_map_count=262144
    # 永久生效,修改 /etc/sysctl.conf
    vim /etc/sysctl.conf
    # 修改文件中以下内容
    vm.max_map_count=262144
    

3.2 部署RagFlow

cd ~/workspace/ai/tools && git clone --depth 1 https://github.com/infiniflow/ragflow.git && cd ragflow/docker
# 使用CPU
# docker compose -f docker-compose.yml up -d

# 使用GPU
docker compose -f docker-compose-gpu.yml up -d
# 确认服务器状态
docker logs -f ragflow-server

默认通过 http://localhost 即可访问 RagFlow 控制台,首次登录需要设置管理员密码。

3.3 更新RagFlow

# 更新 RagFlow
docker compose down
git pull origin main
docker compose pull
docker compose -f docker-compose-gpu.yml up -d

3.4 系统配置

  1. 系统配置涉及以下三份文件:

    • .env:存放一些基本的系统环境变量,比如 SVR_HTTP_PORT、MYSQL_PASSWORD、MINIO_PASSWORD 等。
    • service_conf.yaml.template:配置各类后台服务。
    • docker-compose.yml: 系统依赖该文件完成启动。
      请务必确保 .env 文件中的变量设置与 service_conf.yaml.template 文件中的配置保持一致!
  2. 如果不能访问镜像站点 hub.docker.com 或者模型站点 huggingface.co,请按照 .env 注释修改 RAGFLOW_IMAGEHF_ENDPOINT

  3. ./docker/README 解释了 service_conf.yaml.template 用到的环境变量设置和服务配置。

  4. 如需更新默认的 HTTP 服务端口(80), 可以在 docker-compose.yml 文件中将配置 80:80 改为 <YOUR_SERVING_PORT>:80

  5. 所有系统配置都需要通过系统重启生效 docker compose -f docker-compose-gpu.yml up -d

4. 接入本地模型

笔者实验环境为 Ubuntu24.04,宿主机启动 Ollama 服务 + Docker Compose部署 RagFlow

4.1 接入 Ollama 本地模型

4.1.1 步骤
  1. 点击 RagFlow 平台 右上角头像模型供应商,选择 Ollama,点击 添加模型
  2. 选择 模型类型,输入 模型名称基础URL最大token数,其他选项可使用默认设置即可,点击 确定。其中:
    • 模型名称 为 Ollama 服务中的模型名称,可通过 ollama list 获取
      ollama list
    • 基础URL 为 Ollama 服务地址,例如 http://host.docker.internal:11434
      ollama_config
4.1.2 常见问题
  1. Connection refused问题

    使用官方文档中的 http://host.docker.internal:11434 作为基础URL,可能会出现 httpconnectionpool (host=localhost, port=11434): max retries exceeded with url:/cpi/chat (Caused by NewConnectionError ('<urllib3.connection.HTTPConnection object at 0x7f8562812c20>: fail to establish a new connection:[Errno 111] Connection refused')) 错误,此时需要直接使用宿主机的IP地址。

  2. 解决步骤:

    1. 设置 Ollama 服务监听地址

      # 修改 ollama.service 文件,添加 OLLAMA_HOST 环境变量
      sudo vim /etc/systemd/system/ollama.service
      # 在 [Service] 下添加
      Environment="OLLAMA_HOST=0.0.0.0:11434"
      # 重新加载配置文件
      sudo systemctl daemon-reload
      sudo systemctl restart ollama
      # 查看服务状态,确保 ollama 服务以 :::11434 启动
      sudo netstat -tulnp | grep ollama 
      # 重启Dify
      docker compose down
      docker compose up -d
      
    2. 开启防火墙端口
      如果仍有问题,考虑是否防火墙拦截了 11434 端口,需要配置防火墙规则。

      sudo ufw allow 11434/tcp && sudo ufw reload
      
    3. 在docker容器中测试地址连通性

      # 进入Dify容器
      docker exec -it ragflow-server bash
      # 测试地址连通性
      curl http://host.docker.internal:11434 # 应成功返回 Ollama is running
      # 或者使用本机IP地址测试
      curl http://192.168.163.248:11434 # 应成功返回 Ollama is running
      
    4. 获取本机IP地址(容器外执行)

      # 获取本机IP地址,假如输出为 192.168.163.248
      hostname -I | awk '{print $1}'
      

4.2 接入 VLLM 模型

  1. 点击 RagFlow 平台 右上角头像模型供应商,选择 VLLM,点击 添加模型
  2. 选择 模型类型,输入 模型名称基础URL最大token数,其他选项可使用默认设置即可,点击 确定。其中:
    • 模型名称 为 Ollama 服务中的模型名称,可通过 ollama list 获取
      ollama list
    • 基础URL 为 Ollama 服务地址,例如 http://host.docker.internal:8000/v1
      ollama_config

值得注意的是:笔者测试的模型名称为 /home/allen/workspace/ai/models/modelscope/deepseek-ai___DeepSeek-R1-Distill-Qwen-1.5B 时,RagFlow 识别到的实际模型名称为 /home/allen/workspace/ai/models/modelscope/deepseek-ai,导致提示 Fail to access model(/home/allen/workspace/ai/models/modelscope/deepseek-ai).**ERROR**: MODEL_ERROR - Error code: 404 - {'object': 'error', 'message': 'The model“/home/allen/workspace/ai/models/modelscope/deepseek-ai”does not exist.', 'type': 'NotFoundError', 'param': None, 'code': 404} 问题。

5. 应用场景

🔹 知识库智能问答
🔹 自动化数据分析
🔹 私有化客服机器人

6. 总结

RagFlow 通过 RAG 优先设计开箱即用的部署方案,降低了企业构建大模型应用的门槛。其核心优势包括:

  • 精准检索:结合语义搜索与关键词匹配,提升回答可靠性。
  • 灵活扩展:模块化架构支持快速适配新模型与业务需求。
  • 企业级安全:数据全程本地处理,无第三方依赖。

通过本文指南,开发者可快速完成 RagFlow 的部署、模型接入与应用开发,加速 AI 技术在实际业务中的落地。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2373693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络 4-2-1 网络层(IPv4)

2 IPv4分组 各协议之间的关系 IP协议(Internet Protocol, 网际协议)是互联网的核心&#xff01; ARP协议用于查询同一网络中的<主机IP地址&#xff0c;MAC地址>之间的映射关系 ICMP协议用于网络层实体之间相互通知“异常事件” IGMP协议用于实现IP组播 2.1 结构<首…

Python----机器学习(模型评估:准确率、损失函数值、精确度、召回率、F1分数、混淆矩阵、ROC曲线和AUC值、Top-k精度)

一、模型评估 1. 准确率&#xff08;Accuracy&#xff09;&#xff1a;这是最基本的评估指标之一&#xff0c;表示模型在测试集上正确 分类样本的比例。对于分类任务而言&#xff0c;准确率是衡量模型性能的直观标准。 2. 损失函数值&#xff08;Loss&#xff09;&#xff1…

Linux工作台文件操作命令全流程解析(高级篇之vim和nano精讲)

全文目录 1 简单易用的 Nano (入门之选)1.1 适用场景1.2 安装命令1.3 基础操作1.4 优点 2 功能强大的 Vim2.1 适用场景2.2 安装命令2.3 模式说明‌2.4 常用命令2.4.1 普通模式2.4.2 编辑模式2.4.3 可视模式2.4.4 命令行模式 3 参考文献 写在前面 作为运维或者研发&#xff0c;日…

大数据产品销售数据分析:基于Python机器学习产品销售数据爬虫可视化分析预测系统设计与实现

文章目录 大数据产品销售数据分析&#xff1a;基于Python机器学习产品销售数据爬虫可视化分析预测系统设计与实现一、项目概述二、项目说明三、研究意义四、系统总体架构设计总体框架技术架构数据可视化模块设计图后台管理模块设计数据库设计 五、开发技术介绍Flask框架Python爬…

VS2022 Qt配置Qxlsx

目录 1、下载QXlsx&#xff0c;并解压文件夹 ​编辑2、打开VS2022配置QXlsx 3、VS配置Qxslx库 方法一&#xff1a;常规方法 方法二&#xff1a;直接使用源码 方法三&#xff1a;将QXlsx添加到Qt安装目录&#xff08;暂时尝试未成功&#xff09; 1、下载QXlsx&#xff0c;…

OSPF案例

拓扑图&#xff1a; 要求&#xff1a; 1&#xff0c;R5为ISP&#xff0c;其上只能配置IP地址&#xff1b;R4作为企业边界路由器&#xff0c; 出口公网地址需要通过PPP协议获取&#xff0c;并进行chap认证 2&#xff0c;整个OSPF环境IP基于172.16.0.0/16划分&#xff1b;…

《用MATLAB玩转游戏开发》贪吃蛇的百变玩法:从命令行到AI对战

《用MATLAB玩转游戏开发&#xff1a;从零开始打造你的数字乐园》基础篇&#xff08;2D图形交互&#xff09;-&#x1f40d; 贪吃蛇的百变玩法&#xff1a;从命令行到AI对战 &#x1f3ae; 欢迎来到这篇MATLAB贪吃蛇编程全攻略&#xff01;本文将带你从零开始&#xff0c;一步步…

【数据结构与算法】图的基本概念与遍历

目录 一、图的基本概念 1.1 图的基本组成 1.2 图的分类 1.3 顶点的度数 1.4 路径与回路 1.5 子图与特殊图 二. 图的存储结构 2.1 邻接矩阵 2.2 邻接表 三、深度优先遍历 3.1 原理 3.2 实现步骤 3.3 代码实现 四、广度优先遍历 4.1 原理 4.2 实现步骤 4.3 代码…

Linux云服务器配置git开发环境

文章目录 1. 安装 git2. git clone3. git add .4. git commit -m 提交记录5. git push&#x1f351; 异常原因&#x1f351; 解决办法 6. git pull7. git log8. git rm9. git mv10. git status 1. 安装 git sudo yum install git -y2. git clone 此命令的作用是从远程仓库把代…

手机浏览器IP归属地查询全指南:方法与常见问题解答

在当今数字化时代&#xff0c;手机浏览器已成为人们日常生活中不可或缺的工具之一。然而&#xff0c;在使用手机浏览器的过程中&#xff0c;有时我们需要了解当前网络连接的IP归属地信息&#xff0c;那么&#xff0c;手机浏览器IP归属地怎么查看呢&#xff1f;本文将详细介绍几…

Microsoft Azure DevOps针对Angular项目创建build版本的yaml

Azure DevOps针对Angular项目创建build版本的yaml&#xff0c;并通过变量控制相应job的执行与否。 注意事项&#xff1a;代码前面的空格是通过Tab控制的而不是通过Space控制的。 yaml文件中包含一下内容&#xff1a; 1. 自动触发build 通过指定code branch使提交到此代码库的…

Linux系统管理与编程16:PXE自动化安装部署centos7.9操作系统

兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 0.准备 1&#xff09;防火墙和SELinux systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config (很不好的…

如何通过ABAP获取SAP生产订单的目标成本

SAP存储生产订单成本的主要底表包括&#xff1a; COBK: CO凭证表头COEP: CO凭证行项目COSS: 来自CO内部的汇总数据COSP: 来自CO外部部的汇总数据 先说结论&#xff1a;SAP 对生产订单的目标成本是没有保存到底表的。那么如何通过代码的方式获取呢&#xff1f; K_KKB_KKBCS_O…

【leetcode100】最长重复子数组

1、题目描述 给两个整数数组 nums1 和 nums2 &#xff0c;返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 输出&#xff1a;3 解释&#xff1a;长度最长的公共子数组是 [3,2,1] 。示例 2&…

基于Django框架的股票分红数据爬虫和展示系统

项目截图 一、项目简介 本项目是一个基于 Django 框架的股票分红数据爬虫和展示系统。它可以从东方财富网站爬取股票分红数据&#xff0c;并将数据存储到 Django 数据库中&#xff0c;同时提供数据查询、导出和图表展示功能。该系统为用户提供了一个方便的平台&#xff0c;用于…

QT高级(1)QTableView自定义委托集合,一个类实现若干委托

自定义委托集合 1同系列文章2 功能3 源码 1同系列文章 QT中级&#xff08;1&#xff09;QTableView自定义委托&#xff08;一&#xff09;实现QSpinBox、QDoubleSpinBox委托 QT中级&#xff08;2&#xff09;QTableView自定义委托&#xff08;二&#xff09;实现QProgressBar委…

小芯片大战略:Chiplet技术如何重构全球半导体竞争格局?

在科技飞速发展的今天&#xff0c;半导体行业作为信息技术的核心领域之一&#xff0c;其发展速度和创新水平对全球经济的发展具有举足轻重的影响。然而&#xff0c;随着芯片制造工艺的不断进步&#xff0c;传统的单片集成方式逐渐遇到了技术瓶颈&#xff0c;如摩尔定律逐渐逼近…

普通IT的股票交易成长史--股价起伏的真相-缺口(2)

声明&#xff1a;本文章的内容只是自己学习的总结&#xff0c;不构成投资建议。价格行为理论学习可参考简介中的几位&#xff0c;感谢他们的无私奉献。 送给自己的话&#xff1a; 仓位就是生命&#xff0c;绝对不能满仓&#xff01;&#xff01;&#xff01;&#xff01;&…

MindSpore框架学习项目-ResNet药物分类-模型优化

目录 5.模型优化 5.1模型优化 6.结语 参考内容&#xff1a; 昇思MindSpore | 全场景AI框架 | 昇思MindSpore社区官网 华为自研的国产AI框架&#xff0c;训推一体&#xff0c;支持动态图、静态图&#xff0c;全场景适用&#xff0c;有着不错的生态 本项目可以在华为云modelar…

Kubernetes(k8s)学习笔记(八)--KubeSphere定制化安装

1执行下面的命令修改上一篇中yaml文件来实现定制化安装devops kubectl edit cm -n kubesphere-system ks-installer 主要是将devops几个配置由False改为True 然后使用下面的命令查看安装日志 kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l …