Open WebUI 与 AnythingLLM 安装部署

news2025/1/10 20:33:20

  在前文 Ollama私有化部署大语言模型LLM(上)-CSDN博客 中通过Ollama来搭建运行私有化大语言模型,但缺少用户交互的界面,特别是Web可视化界面。

  对此,本文以Open WebUI和AnythingLLM为例分别作为Ollama的前端Web可视化界面。当然AnythingLLM比Open WebUI功能要丰富得多,不仅仅只作为Web可视化界面,还作为RAG等使用。它们的具体差异可以参考此文章:AnythingLLM、Dify 与 Open-WebUI:如何接入 Ollama,它们有何不同?_anythingllm和webui哪个更好-CSDN博客

一、Open WebUI

  1、Open WebUI介绍

Open WebUI‌是一个开源的用户界面工具,专为离线运行设计,支持多种大型语言模型(LLM)的运行和管理。它最初是Ollama的WebUI,来发展成为独立的开源项目,兼容OpenAI格式。Open WebUI的主要特点和功能包括:

  1. 用户界面和体验‌:Open WebUI的界面设计灵感来源于ChatGPT,提供直观且用户友好的聊天体验。它具有响应式设计,适用于桌面和移动设备,并且响应迅速‌。

  2. 功能支持‌:

    • 多模型支持‌:用户可以轻松切换和加载不同的AI模型,包括Ollama和Ollama兼容的API。支持无缝切换不同的聊天模型,进行多样化的互动‌。
    • RAG(检索增强生成)‌:支持从文档和嵌入数据中提取内容进行处理,增强生成效果‌12。
    • 多模态支持‌:支持文本、图片等多种数据类型输入,例如LLaVA模型‌。
    • 自定义功能‌:用户可以通过模型管理工具自定义模型的参数,如温度和上下文长度等‌3。
    • 内存功能‌:支持用户为模型添加记忆,以便在对话中持续使用‌3。
  3. 安装和部署‌:Open WebUI支持通过Docker和Kubernetes进行无缝安装,使得部署和维护变得简单快捷‌。

 总结:Open WebUI适合纯粹聊天界面,它可作为一个能“轻松切换模型、马上对话”的 简易Web 界面,没有RAG等其他高级特性。

  2、安装Open WebUI

    参照官方文档:https://docs.openwebui.com/ 进行安装,推荐使用docker部署。

#运行Open WebUI
#选项-d为守护运行,-p将容器内的8080端口通过外部宿主机的3000端口暴露出去,
#选项--add-host增加容器内的hostname:ip的映射关系,因host-gateway默认指向default bridge的IP,所以下面的作用是在容器内可以通过host.docker.internal域名访问外部宿主机,
#选项-v将open-webui卷(若卷不存在则创建卷)映射至容器内的/app/backend/data目录,
#选项-name指定容器名,--restart指定重启策略为always
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

#或者:To run Open WebUI with Nvidia GPU support, use this command
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda

以上docker run执行完成后,可以通过以下docker命令检查结果

  3、使用Open WebUI

  以上通过docker运行方式,Open WebUI会自动尝试通过http://host.docker.internal:11434 连接本地的Ollama服务端,并通过http://host.docker.internal:11434/api/tag接口自动获取Ollama本地已存在的模型列表

  通过浏览器访问http://IP:3000

首次访问,需要输入名称、电子邮箱、密码以创建管理员账号。

然后登录后的界面(可能需要等几十秒)如下。左侧是新对话、模型切换(通过连接到Ollama等获得的模型列表),右上角是对话高级设置、Open WebUI设置,右下角是帮助,中间是对话交界面。

在下图聊天界面中,下面有一排实用的功能如下。

二、AnythingLLM

    前面安装部署了Open WebUI,但个人感觉其功能界面比较简略,而且浏览器打开页面有时耗时较长,体验不佳。

  1、AnythingLLM介绍

AnythingLLM(官网:https://anythingllm.com/)是由Mintplex Labs Inc.开发的一款全栈应用程序,旨在为企业和个人提供一个高效、可定制的解决方案,用于构建专属的AI知识库和聊天机器人。AnythingLLM支持几乎所有的主流大模型和多种文档类型,能够通过将文档、资源或内容片段转化为大语言模型在聊天中可以利用的相关上下文,从而满足用户在不同场景下的需求‌。

主要功能和应用场景

  1. 文档智能聊天‌:用户可以将各种文档导入AnythingLLM,系统会自动进行上下文分析和内容整理,用户可以通过对话的方式快速提取关键信息‌。
  2. 多用户支持和权限管理‌:支持多用户同时访问,并可设置不同的权限,适合团队协作和公司内部使用‌。
  3. 广泛的文档支持‌:支持PDF、TXT、DOCX等多种文档类型,并通过简易界面进行管理‌。
  4. 聊天模式‌:提供对话和查询两种模式,对话模式保留之前的问题和回答,查询模式则是简单的问答‌。
  5. 嵌入式聊天小部件‌:可以将AnythingLLM嵌入到自己的网站中,提供自动化的智能客服服务‌。
  6. 丰富的API接口‌:开发者可以轻松集成AnythingLLM到现有的应用中,实现更多定制化功能‌。

技术特点和优势

  1. ‌‌高效‌:通过RAG(Retrieval-Augmented Generation)方案构建专属私有知识库,结合大模型进行知识检索和生成‌。
  2. 多模型支持‌:支持多种开源和商用闭源的大语言模型,用户可以根据需求和预算选择合适的模型‌34。
  3. 成本效益‌:对大型文档一次性嵌入,显著节约成本‌。
  4. 简易的部署方式‌:可以通过Docker容器进行部署,适合快速迭代和云部署‌。

三类安装类型

  1. ‌‌AnythingLLM Desktop:一键安装,适合个人单机使用。不支持多用户、嵌入式聊天小部件、密码保护、邀请新用户等高级功能。
  2. ‌‌AnythingLLM for Docker:通过Docker容器进行部署,支持多用户和权限控制,适合团队和企业,需要docker相关知识。可以通过Docker部署在各种环境中(如本地、云端),并支持更复杂的配置和管理。
  3. AnythingLLM托管‌‌:官方自己提供的SaaS产品,适合需要托管实例的企业或团队,起价为每月50美元‌。

官网关于Docker和Desktop的区别说明链接:https://docs.anythingllm.com/installation-docker/overview

  2、安装AnythingLLM

   以下的Linux服务器已经安装最新Docker,下面通过在Linux上以Docker方式安装AnythingLLM。官网安装说明文档链接:https://docs.anythingllm.com/installation-docker/local-docker

  docker方式安装AnythingLLM的命令:

export STORAGE_LOCATION=$HOME/anythingllm && \
mkdir -p $STORAGE_LOCATION && \
touch "$STORAGE_LOCATION/.env" && \
chmod -R o+w $STORAGE_LOCATION && \
docker run -d -p 3001:3001 \
--cap-add SYS_ADMIN \
-v ${STORAGE_LOCATION}:/app/server/storage \
-v ${STORAGE_LOCATION}/.env:/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
mintplexlabs/anythingllm

注意:上文比官方提供的安装命令增加了一句chmod设置权限。

因为:

    在容器外的宿主机的当前用户对其创建的$STORAGE_LOCATION目录可完全访问,但宿主机上的其他用户(除root外)无权限$STORAGE_LOCATION目录。

    对于AnythingLLM镜像,在制作时指明了需使用指令“USER anythingllm”去访问容器内的/app/server/.env文件和/app/server/storage目录,在容器内anythingllm的用户UID=1000。容器内anythingllm用户访问动作会映射为在宿主机上以相同UID(既UID=1000)的宿主机用户对$STORAGE_LOCATION目录的访问。

    而宿主机上的UID=1000的用户,很可能不是执行以上命令的用户,因此宿主机上的UID=1000的用户无权限访问$STORAGE_LOCATION,导致anythingllm容器无权在app/server/storage目录上创建文件而报错。

    因此,上面增加了一句chmod设置权限命令,使宿主机上的其他用户可以读写访问$STORAGE_LOCATION目录,进而实现容器内有权限读写访问。

   3、使用AnythingLLM

  通过浏览器访问http://IP:3001

首次访问,按照引导提示一步步填写。

下文对话所使用的模型为Ollama上的qwen2.5-coder:latest

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

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

相关文章

如何稳定使用 O1 / O1 Pro,让“降智”现象不再困扰?

近期,不少朋友在使用 O1 或 O1 Pro 模型时,都会碰到“降智”或“忽高忽低”的智力波动,比如无法识图、无法生成图片、甚至回答准确度也不稳定。面对这些问题,你是不是也感到头疼呢? 为了找到更可靠的解决办法&#xf…

RK3562编译Android13 ROOT固件教程,触觉智能开发板演示

本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。 关闭seli…

58. Three.js案例-创建一个带有红蓝配置的半球光源的场景

58. Three.js案例-创建一个带有红蓝配置的半球光源的场景 实现效果 本案例展示了如何使用Three.js创建一个带有红蓝配置的半球光源的场景,并在其中添加一个旋转的球体。通过设置不同的光照参数,可以观察到球体表面材质的变化。 知识点 WebGLRenderer …

React+redux项目搭建流程

1.创建项目 create-react-app my-project --template typescript // 创建项目并使用typescript2.去除掉没用的文件夹,只保留部分有用的文件 3.项目配置: 配置项目的icon 配置项目的标题 配置项目的别名等(craco.config.ts&…

解决GitHub上的README.md文件的图片内容不能正常显示问题

一、问题描述 我们将项目推送到GitHub上后,原本在本地编写配置好可展现的相对路径图片内容,到了GitHub上却不能够正常显示图片内容,我们希望能够在GitHub上正常显示图片,如下图所示: 二、问题分析 现状:REA…

双模充电桩发展前景:解锁新能源汽车未来的金钥匙,市场潜力无限

随着全球能源转型的浪潮席卷而来,新能源汽车行业正以前所未有的速度蓬勃发展,而作为其坚实后盾的充电基础设施,特别是双模充电桩,正逐渐成为推动这一变革的关键力量。本文将从多维度深入剖析双模充电桩的市场现状、显著优势、驱动…

开关不一定是开关灯用 - 命令模式(Command Pattern)

命令模式(Command Pattern) 命令模式(Command Pattern)命令设计模式命令设计模式结构图命令设计模式涉及的角色 talk is cheap, show you my code总结 命令模式(Command Pattern) 命令模式&…

Qt 5.14.2 学习记录 —— 칠 QWidget 常用控件(2)

文章目录 1、Window Frame2、windowTitle3、windowIcon4、qrc机制5、windowOpacity 1、Window Frame 在运行Qt程序后,除了用户做的界面,最上面还有一个框,这就是window frame框。对于界面的元素,它们的原点是Qt界面的左上角或win…

LabVIEW水轮发电机组振动摆度故障诊断

本文介绍了基于LabVIEW的水轮发电机组振动摆度故障诊断系统的设计与实施过程。系统在通过高效的故障诊断功能,实现水轮发电机组的振动、温度等关键指标的实时监控与智能分析,从而提高电力设备的可靠性和安全性。 ​ 项目背景 随着电力行业对设备稳定性…

【JavaEE】—— SpringBoot项目集成百度千帆AI大模型(对话Chat V2)

本篇文章在SpringBoot项目中集成百度千帆提供的大模型接口实现Chat问答效果: 一、百度智能云 百度千帆大模型平台是百度智能云推出的一个企业级一站式大模型与AI原生应用开发及服务平台。 注册地址:https://qianfan.cloud.baidu.com/ 注册成功后&…

ARM交叉编译Boost库

Boost下载&#xff1a;点击跳转 编译过程&#xff1a; 生成project-config.jam ./bootstrap.sh --with-librariesfilesystem,thread --with-toolsetgcc 2. 修改project-config.jam&#xff08;位于第12行附近&#xff09; if ! gcc in [ feature.values <toolset> ] …

Cpp::C++11右值引用与移动构造(30)

文章目录 前言一、左值 & 右值二、左值引用 & 右值引用三、右值引用的意义四、右值引用和移动语义五、与编译器优化做的对比六、右值引用引用左值七、一些小问题能否将函数返回值设为 右值引用&#xff1f;函数传值返回&#xff0c;但在返回时能否手动 move 返回值&…

LeetCode:108.将有序数组转换为二叉搜索树

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;108.将有序数组转换为二叉搜索树 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff…

基于Redisson实现重入锁

一. 分布式锁基础 在分布式系统中&#xff0c;当多个客户端&#xff08;应用实例&#xff09;需要访问同一资源时&#xff0c;可以使用分布式锁来确保同一时刻只有一个客户端能访问该资源。Redis作为高性能的内存数据库&#xff0c;提供了基于键值对的分布式锁实现&#xff0c…

React中createRoot函数原理解读——Element对象与Fiber对象、FiberRootNode与HostRootNode

【2024最新版】React18 核心源码分析教程&#xff08;全61集&#xff09; Element对象与Fiber对象 在 React 中&#xff0c;Element 对象 和 Fiber 对象 是核心概念&#xff0c;用于实现 React 的高效渲染和更新机制。以下是它们的详细解读&#xff1a; 1. Element 对象 定…

急速了解什么是GPU服务器

GPU服务器是一种专门配置了高性能图形处理器&#xff08;GPU&#xff09;的服务器&#xff0c;旨在提供高性能计算、深度学习、科学计算等多种场景的计算服务。与传统的CPU服务器相比&#xff0c;GPU服务器在处理并行密集型计算任务时具有显著优势。本文将详细介绍GPU服务器的定…

一.MySQL程序简介

整体介绍 1.服务端mysqld(可执行文件) mysqld --verbose --help 2.客户端mysql(可执行文件) 3.其它工具包程序

腾讯云AI代码助手编程挑战赛-凯撒密码解码编码器

作品简介 在CTFer选手比赛做crypto的题目时&#xff0c;一些题目需要自己去解密&#xff0c;但是解密的工具大部分在线上&#xff0c;而在比赛过程中大部分又是无网环境&#xff0c;所以根据要求做了这个工具 技术架构 python语言的tk库来完成的GUI页面设计&#xff0c;通过…

深度学习第三弹:python入门与线性表示代码

一、python入门 1.熟悉基础数据结构——整型数据&#xff0c;浮点型数据&#xff0c;列表&#xff0c;字典&#xff0c;字符串&#xff1b;了解列表及字典的切片&#xff0c;插入&#xff0c;删除操作。 list1 [1, 2, 3, 4, 5] for each in list1:print(each) print(list1[1…

常见的端口号大全,2025年整理

端口号是网络通信的基础&#xff0c;它定义了不同服务的入口和出口。了解服务端口号不仅有助于网络配置&#xff0c;还能提升问题排查效率。在实际应用中&#xff0c;熟悉常见端口号可以帮助你快速定位网络故障、优化服务性能&#xff0c;并确保网络安全。 一、常见的网络服务…