自托管 AI 聊天机器人¶
在这篇文章中
信息
自托管 AI 聊天机器人构成了一种本地化解决方案,融合了众多开源组件。该系统的核心是 Ollama——一个旨在本地计算资源上启动和管理大规模语言模型 (LLM) 的架构框架。它支持所选 LLM 的下载和部署。为了与已部署的模型进行无缝交互,Open Web UI 采用了图形界面;该 Web 应用程序使用户能够发送文本查询并接收由语言模型生成的响应。这些组件的集成产生了一个完全自主、本地化的解决方案,用于部署具有开源代码库的最先进语言模型,同时保持对数据完整性和系统性能的完全控制。
主要功能¶
- Web 界面:Open Web UI 提供了一个直观的 Web 界面,集中控制并扩展与来自 Ollama 存储库的本地 AI 语言模型的交互能力,极大地简化了不同熟练程度用户的模型使用。
- 与众多语言模型集成:Ollama 提供了大量免费语言模型的访问权限,从而为您提供增强的自然语言处理 (NLP) 能力。此外,您还可以集成自定义模型。
- 任务:用户可以进行对话、获取查询答案、分析数据集、执行翻译,并在 LLM 的协助下开发自己的聊天机器人或 AI 驱动的应用程序。
- 开源代码:Ollama 是一个开源项目,使用户能够根据其特定需求定制和修改平台。
- Web 抓取器和内部文档搜索 (RAG):通过 OpenWebUI,您可以搜索各种文档类型,如文本文件、PDF、PowerPoint 演示文稿、网站和 YouTube 视频。
备注
有关 Ollama 主要设置和 Open WebUI 文档的更多信息,请参阅 Ollama 开发者文档 和 Open WebUI 文档。
部署功能¶
| ID | 软件名称 | 兼容操作系统 | 虚拟机 | 物理机 | vGPU | GPU | 最低CPU(核) | 最低内存(GB) | 最低硬盘(GB) | 自定义域名 | 是否启用 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 117 | AI Chatbot | Ubuntu 22.04 | + | + | + | + | 4 | 16 | - | 否 | 订购 |
- 操作系统和服务器的组合安装时间在 15 到 30 分钟之间。
- Ollama 服务器在内存中下载并启动 LLM,简化了部署流程。
- Open WebUI 作为与 Ollama 服务器连接的 Web 应用程序运行。
- 用户通过 Open WebUI 的 Web 界面与 LLaMA 3 交互,通过发送查询来接收响应。
- 所有计算和数据处理均在服务器本地执行,确保隐私和对信息流的控制。系统管理员可以通过 OpenWebUI 提供的功能灵活地为特定任务定制 LLM。
- 系统要求规定至少需要 16 GB RAM 以确保最佳性能。
安装过程完成后,用户需要通过以下 URL 访问其服务器:https://ollama<Server_ID_from_Invapi>.hostkey.in。
备注
除非另有说明,默认情况下,我们从开发者的网站或操作系统存储库安装软件的最新发布版本。
AI 聊天机器人部署后的入门指南¶
在注册邮箱支付订单后,您将收到服务器准备就绪的通知。其中将包含 VPS 的 IP 地址以及通过 SSH 连接到服务器的登录名和密码。我们的客户通过 服务器控制面板和 API — Invapi 管理设备。
警告
发送到您邮箱的密码用于 SSH 连接和作为 root 用户登录操作系统,不适用于聊天机器人的 Web 界面!您需要在首次连接到 OpenWebUI 时设置管理员用户和密码。
访问聊天机器人 Web 界面的链接:在标签 webpanel 中。确切链接格式为 https://ollama<Server_ID_from_Invapi>.hostkey.in,也会在服务器交付时通过电子邮件发送。
点击标签 webpanel 中的链接后,将打开 Get started with Open WebUI 登录窗口,您需要在此处创建聊天机器人的管理员名称、电子邮件地址和密码,然后点击 Create Admin Account 按钮:

警告
注册第一个用户后,系统会自动将其角色分配为管理员。为了确保对注册过程的安全和控制,所有后续的注册请求都必须从 OpenWebUI 的管理员账户中批准。
OpenWebUI 初始屏幕¶
初始屏幕展示了一个聊天界面以及几个示例输入提示(查询),以演示系统的功能。为了开始与聊天机器人交互,用户必须从可用选项中选择首选的语言模型。在这种情况下,推荐使用 LLaMA 3,它拥有广泛的知识,能够生成对各种查询的响应。
选择模型后,用户可以在输入字段中输入第一个查询,系统将基于对输入文本的分析生成响应。初始屏幕上展示的示例提示展示了聊天机器人可以处理的主题和任务的多样性,帮助用户了解其功能。
配置您的 OpenWebUI 工作区¶
为了进一步定制您的聊天体验,请导航到 Workspace 部分。在这里,您将找到几个定制选项:
- Models - 此部分允许您根据特定需求微调现有模型。您可以设置系统提示、参数、连接文档或知识库、定义工具、过滤器或操作。
- Knowledge - 此部分根据您的文档配置知识库 (RAG)。
- Prompts - 在此部分创建、编辑和管理您自己的提示(输入请求),以便更有效地与聊天机器人交互。
- Tools - 在此处连接 自定义 Python 脚本,这些脚本在请求期间提供给 LLM。工具允许 LLM 执行操作并因此获得额外的上下文。现成的社区工具可以 在网站上查看。
- Functions - 在此处连接 模块化操作,允许用户通过将特定逻辑或操作直接嵌入工作流来扩展 AI 的功能。与作为外部实用程序运行的工具不同,函数在 OpenWebUI 环境中执行,并处理数据处理、可视化和交互式通信等任务。现成的函数示例可以 在网站上查看。
添加和移除模型¶
Ollama 提供了安装和使用广泛语言模型的能力,而不仅仅是默认模型。在安装新模型之前,请确保您的服务器配置满足所选模型在内存使用和计算资源方面的要求。
通过 OpenWebUI 界面安装模型¶
要通过 OpenWebUI 界面安装模型,请按照以下步骤操作:
-
从 Ollama 库 中选择所需的模型,并通过点击其名称导航到其页面。选择模型的类型和大小(如果需要)。默认情况下会提供最合适的“维度”。然后,点击命令
ollama run <model_name>左侧的两个方块图标,将安装字符串复制到剪贴板。
-
点击 OpenWebUI 聊天机器人窗口左上角的模型名称,并将复制的命令粘贴到 Search a model 字段中。
-
点击字符串 Pull "ollama run
" from Ollama.com 。
-
成功下载和安装后,模型将出现在下拉列表中并可供选择。
通过命令行安装模型¶
要安装新模型,您需要使用 SSH 连接到服务器,并按照 本文 中的描述执行相应的命令。
移除模型¶
要从 OpenWebUI 界面删除模型,请进入 Web 界面设置 右上角的用户图标 >> Settings >> Admin Panel >> Models。

接下来,点击 Manage Models 按钮以打开模型管理窗口。

在其中,从下拉列表 Delete a model 中选择要删除的模型,然后点击旁边的 图标:

要使用命令行(作为 root)移除模型:
向知识库 (RAG) 添加文档¶
Knowledge 选项允许您创建知识库 (RAG) 并上传各种格式的文档,如 PDF、文本文件、Word 文档、PowerPoint 演示文稿等。这些文档随后会被分析,并可以与聊天机器人进行讨论。这对于研究和理解复杂文档、准备演示或会议、分析数据和报告、检查书面作品的语法错误、风格和逻辑、处理法律和财务文件以及进行各领域的研究特别有帮助。聊天机器人可以帮助您理解文档内容、总结它、突出关键点、回答问题、提供额外信息并提出建议。
要处理文档,您需要创建至少一个知识库。为此,请进入 Workspace >> Knowledge 部分,然后点击右上角的 (加号)。填写知识库名称和内容的信息,并使用 Create Knowledge 按钮创建它。

在知识库部分内部,左侧是上传到知识库的文件列表,右侧是它们的内容或您可以拖放文件进行上传的位置。

此外,通过点击 Search Collection 搜索栏旁边的 (加号)按钮,您可以:
- 将文件上传到知识库 (Upload files)
- 上传整个文件目录 (Upload directory)
- 在知识库和目录之间同步文件及其内容 (Sync directory)。此选项允许您更新知识库。
- 通过 Open WebUI 的内置编辑器向知识库添加内容 (Add text content)
您可以通过选择文件并点击出现的叉号来删除知识库中的任何文件。
警告
根据所选模型和服务器上的 GPU 性能,在文档设置中创建嵌入可能需要从几十秒到几十分钟不等。
要管理文档设置,请进入 User Name >> Settings >> Admin Settings >> Documents。

在这里您可以配置:
- Embedding Model Engine - 用于创建嵌入的引擎。默认使用 SentenceTransformers,但您可以上传并使用来自 Ollama 的嵌入模型。
- Hybrid Search - 混合搜索。启用后,知识库和文档的搜索质量将提高,但工作速度可能会显著降低。
- Embeding Models - 嵌入模型。我们建议将此字段设置为改进的模型
sentence-transformers/all-MiniLM-L12-v2,并点击其右侧的上传按钮。 - Engine - 内容提取引擎。使用默认值。
- Query Params:此部分配置影响对上传文档的查询以及聊天机器人生成响应方式的参数。
- Top K - 此设置确定将显示的最佳搜索结果数量。例如,如果设置 Top K = 5,则响应中将显示 5 个最相关的文档或文本片段。
- RAG Template - RAG (Retrieval Augmented Generation) 是一种方法,系统首先从一组文档中提取相关文本部分,然后使用它们借助语言模型生成答案。RAG Template 设置了使用此方法时向语言模型形成请求的模板。配置 RAG Template 的能力允许您调整查询格式以适应语言模型,从而在特定使用场景中获取更高质量的答案。
-
Chunk Params - 此部分允许您配置拆分(分块)上传文档的参数。分块是将大文档分成较小部分以便于处理。在这里,您可以设置最大块大小(字符):Chunk Size 以及部分可以重叠的字符数:Chunk Overlap。推荐值分别为
1500和100。在此部分,您还可以启用选项 PDF Extract Images (OCR) - 这是一种识别图像上文本的技术。启用后,系统将从 PDF 文件中提取图像并应用 OCR 以识别这些图像中包含的任何文本。
-
Files - 在这里,您可以设置上传文件的最大大小及其总数。
位于下方的按钮 Reset Upload Directory 和 Reset Vector Storage/Knowledge 清除上传文档文件的目录并重置保存的向量存储/知识库(全部)。仅在绝对必要时使用它们,并通过 Workspace 删除文件和知识库。
上传文档后,您可以在聊天模式下处理它们。为此,在聊天行中以 # 符号开始消息,并从下拉列表中选择所需的文档或知识库。随后,对请求的响应将基于所选文档中的数据形成。此功能允许您接收基于上传信息的上下文答案,对于搜索信息、分析数据以及基于文档做出决策等各种任务可能很有用:

备注
您可以使用符号 # 将网站或 YouTube 视频添加到您的查询中,允许 LLM 也搜索它们。
在 OpenWebUI 中使用 RAG 的技巧¶
- 任何对嵌入模型的操作都需要删除并重新上传文档到向量数据库。更改 RAG 参数不需要这样做。
- 添加或移除文档时,请务必更新自定义模型(如果存在)和文档集合。否则,搜索它们可能无法正常工作。
- OpenWebUI 识别 pdf、csv、rst、xml、md、epub、doc、docx、xls、xlsx、ppt、pptx、txt 格式,但建议上传纯文本文档。
- 使用混合搜索可以提高结果,但消耗大量资源,即使在强大的 GPU 上,响应时间也可能需要 20–40 秒。
聊天机器人更新¶
当新模型可用时,或为了修复错误并增加 AI 聊天机器人的功能,您需要更新其两个组件 - Ollama 和 Open WebUI。
更新 Ollama¶
- 要更新 Ollama,以 root 身份通过 SSH 登录服务器并运行以下命令:
- 打开浏览器并通过输入地址
<server IP>:11434检查 Ollama 通过 API 的可用性。
您应该收到消息 Ollama is running。
- 如果您无法访问 API,可能需要在服务文件
/etc/systemd/system/ollama.service的[Service]部分添加以下行:
并使用以下命令重启服务:
此外,您可能需要重启 OpenWebUI
```bash
docker stop open-webui
docker rm open-webui
docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui -e ENV='dev' --restart always ghcr.io/open-webui/open-webui:cuda
```
更新 Open WebUI¶
要更新 Open WebUI,以 root 身份通过 SSH 登录服务器并运行以下命令:
docker run --rm --gpus all --volume /var/run/docker.sock:/var/run/docker.sock nickfedor/watchtower --run-once open-webui
如果通过 Watchtower 更新不起作用,请执行以下命令:
#!/bin/bash
docker stop open-webui
docker rm open-webui
docker pull ghcr.io/open-webui/open-webui:main
docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui -e ENV='dev' --restart always ghcr.io/open-webui/open-webui:cuda
docker restart open-webui
警告
如果您想访问 Open WebUI endpoint 的内置 API 文档,您需要使用设置 ENV=dev 环境变量运行容器:
在 OpenWebUI 中重置管理员密码和完全重置设置¶
在 OpenWebUI 中重置管理员密码¶
首先,您需要创建新密码的 bcrypt 哈希。在本地机器上运行以下命令,将 your-new-password 替换为您希望使用的密码:
备注
输出将包含带有特殊字符的 bcrypt 哈希,需要小心处理。哈希中的任何 $ 字符都需要三重转义(替换为 \\\)才能在下一步中正确使用。
接下来,您将在 Docker 部署中更新密码。将以下命令中的 HASH 替换为之前生成的 bcrypt 哈希,确保三重转义任何 $ 字符。此外,将 [email protected] 替换为与您的管理员账户关联的电子邮件地址。
警告
以下命令在某些情况下可能不起作用。如果不起作用,请尝试完全重置 OpenWebUI 设置。
docker run --rm -v open-webui:/data alpine/socat EXEC:"bash -c 'apk add sqlite && echo UPDATE auth SET password='\''HASH'\'' WHERE email='\''[email protected]'\''; | sqlite3 /data/webui.db'", STDIO
在 OpenWebUI 中完全重置设置¶
要执行设置的完全重置,您需要删除 OpenWebUI 数据库。为此,以 root 身份通过 SSH 登录服务器并执行以下命令:
cp /var/lib/docker/volumes/open-webui/_data/webui.db /var/lib/docker/volumes/open-webui/_data/webui.db.bak
rm /var/lib/docker/volumes/open-webui/_data/webui.db
docker restart open-webui
备注
您可能需要使用以下命令完全重启 OpenWebUI:
这将在文件 webui.db.bak 中创建数据库备份,重置设置并重启 OpenWebUI Docker 容器。
之后,登录 Web 界面并设置管理员账户,就像首次连接一样。
接下来,您需要恢复与 Ollama 的连接。为此,在 OpenWebUi 中以管理员身份登录,然后从菜单部分选择 Username >> Settings >> Admin Settings >> Connections。然后点击图标 (配置)

之后,更改:
- Connection Type: Local
- URL: http://host.docker.internal:11434
并按下按钮 Save

实用文章和技巧¶
您可以在我们的博客文章中找到更多有用的信息:
- Let's build a customer support chatbot using RAG and your company's documentation in OpenWebUI
- 10 Tips for Open WebUI to Enhance Your Work with AI