大多数人工智能工具都要求你将提示语和文件发送到第三方服务器上。但如果你的数据包含私人日记、研究笔记或敏感的商业文件(如合同、董事会材料、人力资源档案、财务资料),那么这种方式就根本不可行。好消息是:你可以在本地设备上运行功能强大的大语言模型(无论是笔记本电脑还是自己的服务器),并且可以在不向云端传输任何数据的情况下查询这些文件。

在本教程中,你将学习如何在当地且私密的环境中运行大语言模型,这样你就可以在自己的机器上搜索和查看那些敏感的日记及商业文件了。我们会安装OllamaOpenWebUI,选择适合你硬件配置的模型,利用nomic-embed-text功能实现敏感文件的私密查询,并创建一个本地的知识库,这样所有数据都会保存在本地磁盘上。

目录

先决条件

你需要一个终端窗口(所有操作系统——Windows、Mac、Linux都内置有终端,你可以通过简单搜索快速找到它),另外根据你选择的安装方式,还需要Python和pip或者Docker。

安装过程

你需要下载Ollama以及OpenWebUI。Ollama负责运行模型,

而OpenWebUI则提供了一个浏览器界面,让你能够像使用ChatGPT一样与本地的大语言模型进行交互。

步骤1:安装Ollama

官方网站下载并安装Ollama。该软件为macOSLinuxWindows系统提供了相应的安装程序。安装完成后,打开终端窗口执行以下命令来验证Ollama是否已经成功运行:

ollama list

如果Ollama正在运行,这个命令会返回当前可用的模型列表;如果没有模型运行,则会返回一个空列表。

步骤2:安装OpenWebUI

你可以使用Python的pip工具或Docker来安装OpenWebUI。这里我们以使用pip为例进行说明,不过关于使用Docker的安装方法,你可以在OpenWebUI官方文档中找到详细信息。

使用以下命令安装 OpenWebUI:

pip install open-webui

只要你的系统中安装了 Python 3.9 或更高版本,这个命令在 macOS、Linux 和 Windows 上都能正常使用。

接下来,启动服务器:

open-webui serve

然后打开浏览器,访问以下地址:

http://localhost:8080

步骤 3:安装模型

Ollama 模型列表 中选择一种模型,然后按照提供的命令将其下载到本地。

模型下载页面的截图,其中右上角有一个包含安装命令的按钮,可方便地复制该命令进行使用

例如:

ollama pull gemma3:4b

如果你不确定自己的机器适合使用哪种模型,可以让 AI 根据你的硬件配置来推荐一个。对于笔记本电脑来说,较小规模的模型(1B–4B)更为适用。

我建议初次使用时选择 Gemma3(你可以下载多个模型,并轻松地在它们之间切换)。根据以下指南来选择模型末尾的 参数编号:“:4b”、“:1b” 等:

  • 第一层级:内存小于或等于 8 GB,且没有 GPU → 选择 1B–2B 规模的模型。
  • 第二层级:内存为 16 GB,但 GPU 功能较弱 → 选择 2B–4B 规模的模型。
  • 第三层级:内存大于或等于 16 GB,且 VRAM 为 6–8 GB → 选择 4B–9B 规模的模型。
  • 第四层级:内存大于或等于 32 GB,且 VRAM 为 12 GB 或更多 → 选择 12B+ 规模的模型。

安装完 Ollama 及所需的模型后,可以在终端中运行 ollama list 命令来确认它们是否已经成功安装并处于可用状态:

运行 "ollama list" 命令后的输出结果,其中显示了已下载的模型列表,在这个例子中是 "gemma3:1b"

接下来运行 WebOpenUI 以启动浏览器界面:

open-webui serve

然后访问 http://localhost:8080/。现在你就可以开始在本地使用这个大型语言模型了!

注意:系统会要求你输入登录凭据,但如果你只是想在本地使用该工具,这些信息其实并不重要。

'OpenWebUI

文档设置

现在,我们将配置所有必要的选项,以便能够与本地文档进行交互。首先,我们需要安装“nomic-embed-text”模型来处理我们的文档。请使用以下命令进行安装:

ollama pull nomic-embed-text

注意:如果你想知道为什么除了主模型之外,我们还需要另一个模型(nomic-embed-text),那么请看以下几点:

  • 嵌入模型(nomic-embed-text)会将文档中的每段文本转换为数值向量,这样当您提出问题时,OpenWebUI就能快速找到语义上相似的文本内容。
  • 聊天模型(例如gemma3:1b)会接收您的提问以及这些被检索出来的文本内容作为上下文信息,然后生成自然语言形式的回复。

接下来,如果您希望大语言模型能够记住您之前对话的上下文内容,那么请启用“记忆功能”。

您可以在这里下载适应性记忆功能插件。这些插件类似于普通的扩展程序。

屏幕截图显示了“适应性记忆v3”功能的页面。页面上有一个“获取”按钮,点击该按钮后会弹出一个名为“Open WebUI URL”的窗口,当前显示的地址为“http:localhost:8080”(这是WebUI的默认端口)。此外,页面上还有“导入到WebUI”和“下载为JSON格式”两个按钮,以供用户在第一个选项无法使用时使用。

现在,我们需要更新设置以启用这些功能。请点击左下角显示的您的名字,然后选择“设置”。

屏幕截图显示了点击左下角的圆形图标后弹出的菜单面板。菜单中列出了各种选项,包括“设置”、“已归档对话记录”、“测试区”、“管理面板”和“退出登录”。

首先点击“设置”选项,然后进入“个性化设置”页面,启用“记忆功能”。

屏幕截图显示了OpenWebUI的设置面板,其中“个性化”标签页已被打开,“记忆功能”也已被启用,这样就可以保存之前对话的上下文信息了。

接下来,我们需要访问另一个设置面板——“管理面板”。请再次点击左下角显示的您的名字,然后进入管理面板 → 设置 → 文档选项。

OpenWebUI管理面板 → 设置 → 文档页面的截图,其中显示一个名为“块大小”的文本输入字段,当前设置为512

在这个页面(管理面板 → 设置 → 文档),找到“嵌入”选项,然后进入“嵌入模型引擎”,选择Ollama(可以在右侧看到可选择的选项)。将API密钥留空。

接下来,在“嵌入模型”下方输入nomic-embed-text。然后进入“检索”设置,启用“全上下文模式”。

分块设置

您还需要设置块大小重叠比例。OpenWebUI会在对文档进行索引之前将其分割成较小的块,因为模型无法一次性处理过长的文本。

一个合适的默认值是每个块包含128–512个字符重叠比例为10–20%。较大的块可以保留更多的上下文信息,但处理速度较慢且占用更多内存;而较小的块处理速度较快,但可能会丢失一些高层次的意义。设置适当的重叠比例有助于防止文本被分割时重要信息被遗漏。

下面是一个参考表格,但我建议您根据自己的具体使用场景和配置环境来确定合适的参数值。例如,您可以与ChatGPT或Claude等大语言模型分享您的硬件配置(如GPU型号、内存大小等),因为之后如果更改分块/重叠比例设置,就需要重新上传文档。

不同场景下的推荐分块/重叠比例

<>这些内容体积较小,不需要较大的块大小。<>较小的块数量有助于将更多相关信息纳入上下文中。

适用场景 典型硬件配置 块大小(字符数) 重叠比例% 备注
一级场景 – 资源有限 ≤8 GB内存,无或性能较弱的GPU 128–256 10–15 优先考虑速度和低内存占用。
二级场景 – 中等配置 16 GB内存,性能一般的GPU或较强的CPU 256–384 15–20 在上下文保留与处理速度之间取得平衡。
三级场景 – 资源充足 ≥16 GB内存,6–8 GB显存 384–512 15–20 每个块能包含更多语义信息,同时仍保持实用性。
技术性较强的PDF文档/法律文件 任何配置均可,尤其是二级或三级场景 384–512 15–20 这样能保证段落和论点的完整性。
简短的笔记、工单、电子邮件 任何配置均可 128–256 10–15
非常长的查询内容,需要检索大量信息 任何具有较大上下文窗口的配置均可 256–384 10–15

如何上传您的文档

现在,是最后一步了:上传你的文档!请进入侧边栏中的“工作区”,然后选择“知识库”,创建一个新的集合(数据库)。你可以从这里开始上传文件。

侧边栏中点击“工作区”后,“工作区”页面的截图。左侧突出显示着“工作区”按钮,该页面顶部的选项中选中了“知识库”标签页,然后点击文本输入框右侧的“+”号按钮,列表中会显示第一个选项“上传文件”,输入框中的提示文字为“搜索集合”。

上传文件时,请务必检查是否存在任何错误。不幸的是,这些错误只会以临时弹窗的形式显示出来。有些错误可能是由于文件的格式问题导致的,因此请务必查看控制台中的错误日志以获取更多信息。

接下来,在“工作区”中切换到“模型”标签页,创建一个新的自定义模型。创建自定义模型并将你的知识库关联起来后,OpenWebUI就会在你提问时自动搜索你的文档集合,并将最相关的内容作为上下文信息显示出来。

侧边栏中点击“工作区”后,“工作区”页面的截图。顶部菜单中的第一个选项是“模型”,点击该选项后会显示自定义模型的列表,同时也有创建新模型的选项(在这个例子中,用户创建了一个名为“Gemma-custom-knowledge”的模型)。

在这里,请确保选择你的模型(在我的例子中是“gemma3:1b”),并将你的知识库关联起来。

'模型创建页面的截图,重点显示了“基础模型(来自)”字段下可选择的选项,其中特别突出了“gemma3:1b”或你选择的模型。默认选中的选项是“选择基础模型”,下方还有一个名为“知识库”的字段,以及一个名为“选择知识库”的按钮。另外还有两个用黄色标出的选项(表示优先级较低):一个是“模型参数”,其下方有一个“系统提示”输入框;另一个是“过滤器”,根据安装的不同插件或“功能”,这里会显示多个可选选项。</p

点击“知识库”下的“选择知识库”后出现的选项列表,其中绿色标记的选项为“集合”,其后是标题“Test-knowledge-base”(作者选择的示例标题)以及作者添加的描述“添加我的文档”。

(可选)添加系统提示语

工作区 → 模型中创建自定义模型时,您可以定义一个系统提示语,该提示语将在所有对话中作为背景信息被模型使用。

以下是一些您可能想要添加的信息示例:

  • 关于您自己的介绍 (“我是一名20岁的生物工程专业的学生,对……感兴趣”)
  • 您偏好的沟通方式 (“直截了当”,“分析性强”等)
  • 有关您的数据结构的信息

示例系统提示语:

你是一位善于思考、具有分析能力的助手,会帮助我梳理个人笔记中的模式与见解。请直截了当地回答问题,避免猜测,并明确区分文档中的事实与个人解读。

这个提示语会自动应用于使用该自定义模型的所有聊天对话中,从而确保回复内容的一致性,并符合您的需求。

如何在本地运行大型语言模型

现在打开一个新的聊天窗口,请确保选择您自定义的模型:

点击自定义模型名称旁边的“+”符号/按钮后,出现的“新建聊天”页面截图。该页面会显示“搜索模型”输入框对应的选项列表,其中高亮显示的选项就是您所选的自定义模型名称(在本例中,作者选择的名称为“Gemma-custom-knowledge”)

现在,您就可以在私密的本地环境中与自己的文档进行交互了!

注意:默认情况下,前端浏览器会在五分钟后停止响应的传输,尽管它仍会在后台继续处理您的查询。这意味着如果查询需要超过五分钟才能完成处理,其结果将不会显示在浏览器中。您可以重新加载页面并点击“继续接收回复”来获取最新的处理结果。
💡
我建议安装增强型上下文追踪插件,以便更清楚地了解查询的进展情况。

结论

现在,您已经搭建了一套私有的大型语言模型系统:使用Ollama作为模型引擎,OpenWebUI负责用户界面设计,nomic-embed-text用于生成嵌入数据,所有这些组件都连接到了您的本地知识库中。您的笔记和业务文档都保存在本地,没有任何信息会被发送给第三方。使用这套系统的主要步骤很简单:选择适合您硬件的模型,启用内存支持及全上下文检索功能,合理设置数据分块和处理重叠部分,在模型运行出现延迟时及时检查控制台日志即可。

<如果你需要更大的处理空间,可以在自己的服务器上部署相同的配置方案,从而继续享受隐私保护带来的便利。之后,你可以不断尝试不同的模型、数据分割方式以及提示语的设计;如果需要在长时间运行的任务中获得更详细的运行信息,也可以添加一些可选的功能。>

Comments are closed.