众所周知,Open WebUI 是一个很好的大模型前端界面,阿里的 Qwen 界面就是基于这个开发的(盲猜)。事实上,在使用 Open WebUI 很久之后,我发现通过集成 RAGFlow 这个优秀的 RAG(检索增强生成)框架,可以显著提升文档检索和问答的准确性。本文将详细介绍 Open WebUI 和 RAGFlow,并展示如何通过 Pipeline 将两者连接起来,实现高效的 RAG 检索效果。
为什么要把RAGFlow加到Open WebUI里?
Open WebUI是个超级漂亮的AI前端界面,用起来特别顺手,我自己用了好一阵子,感觉它就像个简易版的ChatGPT。而RAGFlow呢,是个专门搞文档检索的利器,能从PDF、Word甚至网页里找出你想要的信息。把它们俩凑一块儿,你就能一边享受Open WebUI的美观操作,一边用RAGFlow快速找到文档里的关键内容,问答精准度蹭蹭往上涨。不管你是想处理复杂文档,还是让聊天更有料,这套方案都挺值得试试的。
先看效果:

带参考内容哦!还是流式生成的哦!
1. Open WebUI 简介
Open WebUI 是一个开源的、自托管的 AI 交互平台,以其用户友好的界面和强大的功能而著称。它的设计灵感来源于 ChatGPT,界面直观且易于操作,支持离线运行,非常适合希望本地化部署大模型的用户。Open WebUI 的可扩展性是其一大亮点,它能够无缝集成多种大型语言模型(LLM)运行器,例如 Ollama 和 OpenAI 兼容的 API。
主要特点:
-
• 多模型支持:支持多种 LLM,用户可以根据需求选择不同的模型进行交互。 -
• 直观界面:界面设计简洁美观,操作流畅,用户体验极佳。 -
• 离线运行:支持自托管,无需依赖云服务,数据安全更有保障。 -
• 可扩展性:通过 Pipelines 框架,用户可以轻松添加自定义功能。
Open WebUI 的安装也非常简单,也可以直接pip安装,还方便二次开发。
通常可以通过 Docker 或 Kubernetes 快速部署。例如,使用以下命令即可启动:
docker run -d -p 3000:8080 --name open-webui openwebui/open-webui:main
一个示例页面是这样的:

2. RAGFlow 简介
RAGFlow 是一个开源的 RAG(Retrieval-Augmented Generation,检索增强生成)引擎,专注于深度文档理解和高效问答生成。它能够处理多种复杂格式的数据,包括 Word、PDF 和网页等,并通过一系列高级功能提升检索的准确性。RAGFlow 的设计目标是为用户提供简化的 RAG 工作流,结合 LLM 实现精准的问答能力。
主要特点:
-
• 多格式支持:兼容 Word、PDF、网页等多种文档类型。 -
• 模板化切块:通过模板将文档分块,便于检索和管理。 -
• 知识图谱:利用知识图谱增强文档理解能力。 -
• 关键词抽取:自动提取关键信息,提升检索效率。 -
• 可视化溯源:提供可视化工具,帮助用户追踪回答来源。 -
• 灵活部署:支持 Docker 部署,兼容多种 LLM 和嵌入模型。
RAGFlow 的部署同样简单,以 Docker 为例:
docker run -d -p 5000:5000 infiniflow/ragflow:latest
一个示例页面是这样的:

3. 通过 Pipeline 连接 Open WebUI 和 RAGFlow
要将 RAGFlow 的强大检索能力集成到 Open WebUI 中,我们需要借助 Open WebUI 的 Pipelines 功能。Pipelines 是一个插件框架,允许用户在不修改核心代码的情况下扩展 Open WebUI 的功能。通过一个自定义 Pipeline 脚本,我们可以让 Open WebUI 调用 RAGFlow 进行检索,并将结果作为上下文提供给 LLM,从而生成更准确的回答。
3.1 配置前提
在开始之前,确保以下条件已满足:
-
• Open WebUI 已安装并运行。 -
• RAGFlow 已安装并运行。 -
• Docker 环境可用(用于运行 Pipelines)。
3.2 安装 Pipelines
Pipelines 可以通过 Docker 部署,运行以下命令启动 Pipelines 服务器:
`docker run -d -p 9099:9099 --add-host=host.docker.internal:host-gateway -v pipelines:/app/pipelines --name pipelines --restart always ghcr.io/open-webui/pipelines:main`
此命令将 Pipelines 容器运行在 9099 端口,并挂载一个本地目录用于存储 Pipeline 脚本。
3.3 配置 Open WebUI 连接 Pipelines
-
1. 打开 Open WebUI,进入 Admin Panel > Settings > Connections。 -
2. 点击 + 添加新连接。 -
3. 将 API URL 设置为 http://localhost:9099(若在 Docker 中运行 Open WebUI,则使用 http://host.docker.internal:9099)。 -
4. API 密钥设置为 0p3n-w3bu!。 -
5. 保存后,API Base URL 将显示带有 "Pipelines" 图标的连接,表示配置成功。
如下界面:

3.4 上传Pipelines脚本并配置参数
打开Pipelines并上传写好的py文件,配置四个参数即可使用:

3.5 在聊天中使用
配置完成后,在 Open WebUI 的聊天界面中选择使用 RAGFlow Pipeline 的模型。上传文档或输入查询时,Open WebUI 将通过 Pipeline 调用 RAGFlow 检索相关内容,并将结果传递给 LLM 生成回答。实际测试和直接使用RAGFlow差不多,速度嘎嘎快。

我们实际的问题内容召回很高,实际的知识库内容为:
如何实现二叉树的中序遍历?
```python
classNode:
def__init__(self, value):
self.left = None
self.right = None
self.value = value
definorder_traversal(root):
res = []
defhelper(node):
if node:
helper(node.left)
res.append(node.value)
helper(node.right)
helper(root)
return res
# 构建测试树
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.right = Node(4)
print(inorder_traversal(root)) # [2,4,1,3]
```
可以看到,实际的召回效果简直棒极了!
4. 总结
通过 Pipeline 将 RAGFlow 集成到 Open WebUI 中,用户可以在一个美观且易用的界面中,充分利用 RAGFlow 的强大检索能力。这种组合不仅提升了问答的精准度,还为开发者提供了灵活的定制空间。无论你是想处理复杂文档还是提升聊天体验,这套方案都值得一试。把RAGFlow接到Open WebUI里,简直是懒人和效率控的福音。界面好看,检索给力,操作还简单,试过一次你就知道有多香了。
我的python脚本在下面了,有需求自取,复制内容,保存为py文件上传即可。
from typing import List, Union, Generator, Iterator, Optional
from pydantic import BaseModel
import requests
import json
class Pipeline:
class Valves(BaseModel):
API_KEY: str
AGENT_ID: str
HOST: str
PORT: str