|
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">众所周知,Open WebUI 是一个很好的大模型前端界面,阿里的 Qwen 界面就是基于这个开发的(盲猜)。事实上,在使用 Open WebUI 很久之后,我发现通过集成 RAGFlow 这个优秀的 RAG(检索增强生成)框架,可以显著提升文档检索和问答的准确性。本文将详细介绍 Open WebUI 和 RAGFlow,并展示如何通过 Pipeline 将两者连接起来,实现高效的 RAG 检索效果。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(0, 152, 116);">为什么要把RAGFlow加到Open WebUI里?ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">Open WebUI是个超级漂亮的AI前端界面,用起来特别顺手,我自己用了好一阵子,感觉它就像个简易版的ChatGPT。而RAGFlow呢,是个专门搞文档检索的利器,能从PDF、Word甚至网页里找出你想要的信息。把它们俩凑一块儿,你就能一边享受Open WebUI的美观操作,一边用RAGFlow快速找到文档里的关键内容,问答精准度蹭蹭往上涨。不管你是想处理复杂文档,还是让聊天更有料,这套方案都挺值得试试的。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">先看效果:ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">带参考内容哦!还是流式生成的哦!ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0.3em 1em;color: rgb(255, 255, 255);background: rgb(0, 152, 116);border-radius: 8px;box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 6px;">1. Open WebUI 简介ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">Open WebUI 是一个开源的、自托管的 AI 交互平台,以其用户友好的界面和强大的功能而著称。它的设计灵感来源于 ChatGPT,界面直观且易于操作,支持离线运行,非常适合希望本地化部署大模型的用户。Open WebUI 的可扩展性是其一大亮点,它能够无缝集成多种大型语言模型(LLM)运行器,例如 Ollama 和 OpenAI 兼容的 API。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;padding-left: 12px;color: rgb(63, 63, 63);">主要特点:ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;color: rgb(63, 63, 63);" class="list-paddingleft-1">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;text-indent: -1em;display: block;margin: 0.5em 8px;color: rgb(63, 63, 63);">•多模型支持:支持多种 LLM,用户可以根据需求选择不同的模型进行交互。•直观界面:界面设计简洁美观,操作流畅,用户体验极佳。•离线运行:支持自托管,无需依赖云服务,数据安全更有保障。•可扩展性:通过 Pipelines 框架,用户可以轻松添加自定义功能。 Open WebUI 的安装也非常简单,也可以直接pip安装,还方便二次开发。 通常可以通过 Docker 或 Kubernetes 快速部署。例如,使用以下命令即可启动: dockerrun-d-p3000:8080--nameopen-webuiopenwebui/open-webui:main 一个示例页面是这样的:  2. RAGFlow 简介RAGFlow 是一个开源的 RAG(Retrieval-Augmented Generation,检索增强生成)引擎,专注于深度文档理解和高效问答生成。它能够处理多种复杂格式的数据,包括 Word、PDF 和网页等,并通过一系列高级功能提升检索的准确性。RAGFlow 的设计目标是为用户提供简化的 RAG 工作流,结合 LLM 实现精准的问答能力。 主要特点:- •多格式支持:兼容 Word、PDF、网页等多种文档类型。
- •模板化切块:通过模板将文档分块,便于检索和管理。
- •可视化溯源:提供可视化工具,帮助用户追踪回答来源。
- •灵活部署:支持 Docker 部署,兼容多种 LLM 和嵌入模型。
RAGFlow 的部署同样简单,以 Docker 为例: dockerrun-d-p5000:5000infiniflow/ragflow:latest 一个示例页面是这样的:
 3. 通过 Pipeline 连接 Open WebUI 和 RAGFlow要将 RAGFlow 的强大检索能力集成到 Open WebUI 中,我们需要借助 Open WebUI 的 Pipelines 功能。Pipelines 是一个插件框架,允许用户在不修改核心代码的情况下扩展 Open WebUI 的功能。通过一个自定义 Pipeline 脚本,我们可以让 Open WebUI 调用 RAGFlow 进行检索,并将结果作为上下文提供给 LLM,从而生成更准确的回答。 3.1 配置前提在开始之前,确保以下条件已满足: - • Docker 环境可用(用于运行 Pipelines)。
3.2 安装 PipelinesPipelines 可以通过 Docker 部署,运行以下命令启动 Pipelines 服务器: `dockerrun-d-p9099:9099--add-host=host.docker.internal:host-gateway-vpipelines:/app/pipelines--namepipelines--restartalwaysghcr.io/open-webui/pipelines:main` 此命令将 Pipelines 容器运行在 9099 端口,并挂载一个本地目录用于存储 Pipeline 脚本。 3.3 配置 Open WebUI 连接 Pipelines- 1. 打开 Open WebUI,进入Admin Panel> Settings> Connections。
- 3. 将 API URL 设置为 http://localhost:9099(若在 Docker 中运行 Open WebUI,则使用 http://host.docker.internal:9099)。
- 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): ifnode: helper(node.left) res.append(node.value) helper(node.right) helper(root) returnres
# 构建测试树 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文件上传即可。 fromtypingimportList,Union, Generator, Iterator,Optional frompydanticimportBaseModel importrequests importjson
classPipeline: classValves(BaseModel): API_KEY:str AGENT_ID:str HOST:str PORT:str
|