OpenWebUI,RAG+外部知识库+AI写文的开源应用

引言

自从去年AI火起来之后,很多人便热衷于寻找适合自用的AI开源项目,把各家大模型API接入到自己的AI程序里,便可以通过AI辅助完成一系列日常任务,比如内容翻译/润色/总结/撰写、格式转换、数据分类、代码分析、角色扮演等等。

一般情况下,大模型依靠自身训练数据便能够完成的任务质量偏高,像翻译总结、格式转换之类,市面上所有的AI程序基本都能够满足这一点需求;但是需要结合外部资料/超长上文信息/实时信息等才能够更好完成任务的场景,比如撰写热点文章、写小说、写汇报材料等等,涉及到知识空白,所以大模型在不借助外部资料的时候,给出的任务结果就显得非常逊色,甚至错误百出。

市面上带有外部知识库功能的开源AI程序本身也不多,已知的有LibreChat、AnythingLLM、OpenWebUI、Cherry Studio等,因本文主要讲解ChatAI类应用,并不涉及智能体问题,所以像dify这种不列在其中,此类程序无一例外都是借助于检索增强生成RAG(Retrieval Augmented Generation)技术,实现了外部知识库的挂载,从而增强AI的任务完成品质。

目前看来,OpenWebUI是这几个带有RAG结合项目中实现功能最为丰富的开源AI项目,大部分RAG+AI结合的项目,仅实现了文件上传对话的基本功能,这只能满足一次性文件嵌入使用的需求。OpenWebUI除此之外,还进一步利用RAG,开发了类ChatGPT官网GPTs那样的“自定义模型”功能,自定义模型中嵌入的外部知识库,是可以动态更新的,如此以来让AI按照人类思路分步骤(1、定选题;2、查资料;3、列大纲;4、写正文)撰写材料成为可能。

项目介绍

Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线操作。它支持多种 LLM 运行器,包括 Ollama 和兼容 OpenAI 的 API。

核心功能:

  • 自定义构建新模型;
  • 自定义知识库、工具、函数;
  • 支持OpenAI API兼容格式;
  • 集成RAG和基于RAG的网络检索;
  • Markdown和Latex渲染支持;
  • 支持语音、绘图等;
  • 模型竞技场;
  • 自定义用户角色和权限(RBAC);
  • 响应式设计,支持PWA;
  • 多语言支持;

该项目已在Github斩获了4.5万stars,网上关于该项目的讨论很多,感兴趣可以自行查询谷歌。

OpenWebUI界面

安装与设置

1、安装前准备:

根据官方文档完成本项目的本地安装或远程安装,如需远程安装需准备一台服务器和一个域名(最好)。

  • 服务器:
    由于受网络管制影响,Docker在国内拉取镜像可行性较低,所以最好购买一台香港或者海外服务器,非常不推荐购买国内服务器(国内服务器处处都是坑!)
  • 域名:
    同样不推荐在国内域名服务商那里购买域名,因为涉及到备案或者其它可能发生的不可描述“违规”问题,国内域名服务商会有几率不留情面的将你的域名禁掉,无法解析和迁移。当然如果你认为无所谓,则无需考虑上述建议,毕竟正常情况下,国内域名服务商的解析速度的确更快一些。

如果不知道如何找到合适服务器商和域名服务商,可见文末推荐。

2、安装宝塔与Docker:

从宝塔官网找到Linux面板命令说明,并按照提示安装宝塔。

关于宝塔和Docker的安装部署,还可以参考本站文章《LibreChat快速部署指南》宝塔安装部分。

3、终端命令启动:

在执行命令之前,要放行端口3000

sudo ufw allow 3000
docker run -d -p 3000:8080 -e OPENAI_API_KEY=your_secret_key -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

4、OpenAI设置

Docker容器构建完成后,你通过服务器IP+3000端口就可以成功访问程序了。首次打开,注册即是系统管理员,后续再注册用户均受管理员设置的权限控制。

设置外部链接,接入大模型API。

设置OpenAI的API

本文暂不讨论使用Ollama本地大模型,仅使用了OpenAI的API。其中,OpenAI API要填写对应的Base url 和 Key,注意此处要增加后缀/v1,如果你是从聚合AI>>购买的API,此处接口应该填写:

https://api.juheai.top/v1

填写校验通过后,系统会自动识别到所有可用模型。

5、绑定域名

如果你希望系统更加稳定,建议完成该步骤。通过宝塔面板->网站->反向代理实现绑定域名,并添加免费的SSL证书。

6、安装Pipeline

如果你需要完整的使用OpenWebUI中的工具和函数,还需要安装此项目,如此以来就可以实现诸如以下的功能:

  • 自定义RAG
  • 各种函数调用
  • 实施监控和分析消息
  • 有害信息过滤
  • 速率限制

安装仅需在服务器执行以下命令(首先开启9099端口):

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

然后继续完成域名的绑定操作,比如你可以绑定到pipeline.example.com。

最后将部署好的域名配置到OpenWebUI中即可,对应的API密码在官方文档中已给出:0p3n-w3bu!

7、文档设置

如果需要使用RAG文档识别功能则需要配置此项,设置和提示词见下:

提示词:
**Generate Response to User Query****Step 1: Parse Context Information**Extract and utilize relevant knowledge from the provided context within `<context></context>` XML tags.**Step 2: Analyze User Query**Carefully read and comprehend the user's query, pinpointing the key concepts, entities, and intent behind the question.**Step 3: Determine Response**If the answer to the user's query can be directly inferred from the context information, provide a concise and accurate response in the same language as the user's query.**Step 4: Handle Uncertainty**If the answer is not clear, ask the user for clarification to ensure an accurate response.**Step 5: Avoid Context Attribution**When formulating your response, do not indicate that the information was derived from the context.**Step 6: Respond in User's Language**Maintain consistency by ensuring the response is in the same language as the user's query.**Step 7: Provide Response**Generate a clear, concise, and informative response to the user's query, adhering to the guidelines outlined above.User Query: [query]<context>[context]</context>

8、联网设置

联网设置中可以选择多种联网方式中的任意一种,大部分需要配置API,免费的可以选择duckduckgo或者searxng(需要自行部署)

9、语音设置

语音设置相对简单,参考图示配置即可。

至此,主要设置完毕,基本可以使用OpenWebUI的完整功能了。

功能

1、基本功能

OpenWebUI的基本功能很容易上手,此处不再展开赘述,其中包括:

  • 对话
  • 画图
  • 联网查询
  • 语音对话
  • Artifacts
  • 对话参数
  • 界面设置
  • 分享功能
  • 记忆功能
  • 归档功能
  • 游乐场
  • 聊天分类
  • 文档对话

2、自定义模型

自定义模型是将特定提示词、外部资料、特定功能集成在一起的AI组合模型,相较于原生API通用模型,它会更加定向于某个专长,从而更好的帮助用户解决实际问题。自定义模型并不是真正意义上的训练模型,只是给基础模型做了一部分能力集成,如果原来你接触过GPTs将会非常容易理解,比如Python学习专家、情感分析师、日语翻译官等等。

例如我们创建一个企业新员工培训顾问,将该企业内部的新员工培训手册挂载到该模型中,并通过提示词来定义该模型角色信息:

第一步:创建一个知识库,并挂载新员工手册文件内容。

我们准备一个word文件,其中包含了以下3条内容作为演示:

1、 上班睡觉扣1000元。
2、 中午吃饭时间是11:30 ~ 13:00。
3、 每周五下班前要提交本周日报。

第二步,创建自定义模型

创建自定义模型,模型任意选择一个chat模型,并挂载刚才上传的知识库。

系统提示词部分,可以这样写:

你是xx企业的新员工培训顾问,请根据新员工问题,结合知识库并准确回答新员工的问题。因为新员工手册内容较为严谨,不能胡乱回答,请对于知识库里没有的知识,一定要回答“尚未学习,请联系管理员反馈问题”。

创建后我们尝试问他几个问题,看看效果图(说明它确实学习了新员工手册中的内容了):

我们还可以上传pdf带图文件或扫描文件,系统会借用视觉模型能力将文件中图片部分转化为对应的文字描述。

3、工具与函数

我们可以从OpenWebUI的官方社区找到很多用户分享的工具和函数,找到最适合自己的引入系统使用即可,下面我们以速率限制函数Rate Limit Filter为例,演示一下配置步骤:

新建一个函数:

复制社区中的代码并填入相关位置并保存:

根据选项设置速率具体数值,并设置全局生效。

4、模型竞技场

因为公开评估机构对于模型的评估存在一定的偏差,也并不一定符合所有的差异化个体用户,OpenWebUI提供的模型竞技场弥补这一点,主要是用来快速帮助差异化个体评估模型的表现,从而让你能精准选出符合你要求和习惯的最佳模型。

评估方式分为普通评估(公开模型名称)和竞技场评估(隐藏模型名称),每次对话可以同时开启两个或多个模型进行回答,用户给出模型答案点赞或点踩,结果会计入模型竞技场排名。

模型竞技场

5、团队使用

OpenWebUI非常适合中小型团队共同使用,它提供了权限系统,可以区分管理员和普通用户,你可以为你的团队设定只有团队成员可以审核加入,避免过多的外界打扰。

你只需要把你的url发给团队成员,他经过简单的填写注册信息提交,你就能够从后台收到待审核信息。

用户权限

你还可以决定你的团队成员可以用哪些白名单模型,也可以创建团队可用的自定义模型,同时嵌入团队内部知识库,让模型变得更加符合企业使用要求。更多基于团队使用的功能请自行发掘。

总结

总体来看,功能丰富和高可扩展性是OpenWebUI最大的优点,尤其是对RAG的支持,用户已经可以自定义各种选项来获得更好的RAG识别结果,这是领先于其它同类项目的特点之一。另外,开源项目仓库更新也非常活跃,根据roadmap描述后续还有更多好玩有趣的功能陆续上线。

不足方面,可能是由于采用了轻量数据库的原因,加之过于丰富的功能,对服务器性能要求略高,并且OpenWebUI用久了或者团队成员较多时,打卡速度可能会较慢,大模型回答响应速度也会偶发卡顿现象。建议此项目私人部署使用或3~5个成员共享使用,不要加入太多的用户进来即可。相信后续项目团队会不断优化访问速度和性能,持续迭代使项目更优秀。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣-图论-15【算法学习day.65】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…

单元测试知识总结

我们希望每段代码都是自测试的&#xff0c;每次改动之后&#xff0c;都能自动发现对现有功能的影响。 1 测试要求 在对软件单元进行动态测试之前&#xff0c;应对软件单元的源代码进行静态测试&#xff1b; 应建立测试软件单元的环境&#xff0c;如数据准备、桩模块、模拟器…

基于AI对话生成剧情AVG游戏

游戏开发这个领域&#xff0c;一直有较高的学习门槛。作为一个非专业的游戏爱好者&#xff0c;如果想要开发游戏&#xff0c;往往受制于游戏引擎的专业程度&#xff0c;难以完成复杂的游戏项目。 AI IDE的诞生&#xff0c;提供了另外的一种思路&#xff0c;即通过AI 生成项目及…

kubeadm安装K8s高可用集群之集群初始化及master/node节点加入calico网络插件安装

系列文章目录 1.kubeadm安装K8s高可用集群之基础环境配置 2.kubeadm安装K8s集群之高可用组件keepalivednginx及kubeadm部署 3.kubeadm安装K8s高可用集群之集群初始化及master/node节点加入集群calico网络插件安装 kubeadm安装K8s高可用集群之集群初始化及master/node节点加入ca…

java后端环境配置

因为现在升学了&#xff0c;以前本来想毕业干java的&#xff0c;很多java的环境配置早就忘掉了&#xff08;比如mysql maven jdk idea&#xff09;&#xff0c;想写个博客记录下来&#xff0c;以后方便自己快速搭建环境 JAVA后端开发配置 环境配置jdkideamavenMySQLnavicate17…

FPC补强板和软硬结合板有什么区别?

柔性印刷电路&#xff08;Flexible Printed Circuit&#xff0c;简称FPC&#xff09;在现代电子设备中有广泛应用&#xff0c;其设计和应用形式多种多样。在FPC的应用中&#xff0c;补强板和软硬结合板是两种常见的增强结构形式&#xff0c;它们在结构、功能和应用方面存在显著…

windows openssl编译x64版libssl.lib,编译x64版本libcurl.lib,支持https,vs2015编译器

不要纠结&#xff0c;直接选择用perl编译&#xff01; 告诫想要用弄成vs编译版的&#xff0c;暂时先别给自己增加麻烦 告诫&#xff0c;以下执行的每一步&#xff0c;都不要纠结 先安装环境 nasm 64位版本 https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-…

【sizeof】各种数据类型所占空间大小

各种数据类型所占空间大小 文章目录 前言 一、sizeof是什么&#xff1f; 二、使用步骤 1.整型 2.字符型 总结 前言 ‌sizeof在C语言中是一个运算符&#xff0c;用于获取数据类型或变量在内存中所占的字节数。‌它可以在编译时计算数据类型或变量的内存大小&#xff0c;而…

gitlab仓库API操作

几年没接触gitlab了&#xff0c;新版本装完以后代码提交到默认的main分支&#xff0c;master不再是主分支 项目有几十个仓库&#xff0c;研发提交代码后仓库地址和之前的发生了变化 先修改Group的默认分支&#xff0c;不会影响已存在的项目 修改gitlab全局的默认分支 这就引…

Gitlab服务管理和仓库项目权限管理

Gitlab服务管理 gitlab-ctl start # 启动所有 gitlab 组件&#xff1b; gitlab-ctl stop # 停止所有 gitlab 组件&#xff1b; gitlab-ctl restart # 重启所有 gitlab 组件&#xff1b; gitlab-ctl status …

睡岗和玩手机数据集,4653张原始图,支持YOLO,VOC XML,COCO JSON格式的标注

睡岗和玩手机数据集&#xff0c;4653张原始图&#xff0c;支持YOLO&#xff0c;VOC XML&#xff0c;COCO JSON格式的标注 数据集分割 训练组70&#xff05; 3257图片 有效集20&#xff05; 931图片 测试集10&#xff05; 465图片 预处理 没有采用任何预处…

vue响应式数据-修改对象的属性值,视图不更新

如图&#xff1a; 一&#xff1a;问题是&#xff1a; 我把数据处理后能console.log()打印出来&#xff0c;但是页面的内容不能同步的更新渲染&#xff1b; 二&#xff1a;要求&#xff1a; 在数组循环列表里面&#xff0c;我点击单个的item按钮时&#xff0c;需要实时加载进度…

HuLa——一款基于 Tauri+Vue3 构建的桌面即时通讯应用

文章目录 一、HuLa简介二、技术栈介绍三、安装运行四、界面体验五、开源地址 一、HuLa简介 HuLa 是一个基于 Tauri、Vite 5、Vue 3 和 TypeScript 构建的即时通讯系统。它利用了 Tauri 的跨平台能力和 Vue 3 的响应式设计&#xff0c;结合了 TypeScript 的类型安全特性和 Vite…

云计算HCIP-OpenStack03

书接上回&#xff1a; 云计算HCIP-OpenStack02-CSDN博客 10.KeyStone keystone-Openstack&#xff0c;IAM服务&#xff08;统一身份认证&#xff09;-云服务 建议先去了解Hadoop&#xff08;大数据生态系统&#xff09;中的kerberos&#xff08;LDAPkerberos的鉴权机制&#xf…

【YOLO 项目实战】(10)YOLO8 环境配置与推理检测

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【YOLO 项目实战】&#xff08;1&#xff09;YOLO5 环境配置与检测 【YOLO 项目实战】&#xff08;10&#xff09;YOLO8 环境配置与推理检测 【YOLO5 项目实战】&#xff08;10&#xff09;YOLO8 环境…

Vue 3: 通过图片链接获取图片颜色,间接设置背景颜色

在现代Web开发中&#xff0c;动态获取和处理图像数据是一个常见的需求。例如&#xff0c;你可能希望自动提取一张图片的主色调&#xff0c;以便根据这些颜色进行UI主题调整或其他视觉效果的处理。本文将介绍如何在Vue 3项目中&#xff0c;通过一个图片链接获取图片的颜色信息。…

请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配

vs版本升级时&#xff0c;编译时会出现上述问题&#xff0c;如原来在2017下编译的程序&#xff0c;后来改用2019&#xff0c;出现上述问题。需要在解决方案-通用属性-调试源文件下变更相应设置。

FFmpeg第一话:FFmpeg 简介与环境搭建

FFmpeg 探索之旅 一、FFmpeg 简介与环境搭建 二、FFmpeg 解码详解 第一话&#xff1a;FFmpeg 简介与环境搭建 FFmpeg 探索之旅一、前言二、FFmpeg 是什么&#xff1f;三、简单介绍其历史背景四、为什么用 C学习 FFmpeg&#xff1f;&#xff08;一&#xff09;高性能优势&#…

【功能安全】软件安全架构

目录 01 软件安全架构介绍 02 软件架构设计模板 03 软件架构设计示例 01 软件安全架构介绍

OpenLinkSaas 2025年1月开发计划

先来看看OpenLinkSaas的大目标 在OpenLinkSaas的产品目标中&#xff0c;让开发人员更加方便的使用云资源是目标之一。通过各大云厂商的API&#xff0c;来可视化云上基础设施的数据是远远不够的。我们准备在2025年1月份增加方便管理和运营研发场景下服务器的能力。 这部分的功能…