把大语言模型封装成桌面应用 [译]

把大语言模型封装成桌面应用 [译]

💡 原文中文,约2000字,阅读约需5分钟。
📝

内容提要

作者开发了桌面应用 Chatd,用户一键下载即可在本地运行大语言模型并与文档对话。该应用基于 Electron,集成 transformers.js 处理文档,并捆绑 Ollama 作为模型运行与分发系统,既避免应用体积过大,又能不更新应用即推送新模型。此设计降低了使用门槛,同时为高级用户保留更换模型的选项。

🔎

延伸解读

为什么选择捆绑 Ollama 而非直接打包模型

文章指出,若将大语言模型直接打包进 Electron 应用,初始下载体积会超过 4GB,且用户只能使用内置模型。作者选择捆绑 Ollama 可执行文件,由 Ollama 负责模型运行与分发,应用本身保持轻量。同时,模型更新只需推送到 Ollama 注册表,用户下次启动即可自动获取,无需发布新应用版本。这种设计在控制体积和保持模型新鲜度之间取得了平衡。

本地运行带来的文件访问优势

Chatd 利用本地运行的优势,可直接访问用户文件系统,实现与文档对话。作者提到,早期用户很快意识到本地聊天机器人访问文件的潜力。相比依赖云端 API 的方案,本地应用无需上传文档即可处理,这既简化了操作,也避免了额外的网络依赖。文章将文件系统访问视为桌面应用区别于纯网页应用的关键能力之一。

对高级用户的兼容设计

虽然 Chatd 面向非技术用户,但作者保留了高级用户的定制空间。如果检测到 Ollama 已在运行,应用会提供额外设置选项,允许用户配置 Chatd 并更换模型。这意味着已有模型的用户无需重复下载,也能根据需求选择不同模型。这种设计在不增加普通用户负担的前提下,兼顾了技术用户的灵活性,体现了分层体验的思路。

❓

Q&A

Chatd 是什么?它主要用来做什么?

Chatd 是一个桌面应用,用户一键下载后即可在本地运行大语言模型,并与自己的文档进行对话。它旨在降低使用门槛,让非技术用户也能轻松使用本地 LLM。

Chatd 为什么选择 Electron 而不是 Tauri?

作者希望所有代码能整合在一个可部署到任何操作系统的应用中,在 Electron 和 Tauri 之间选择。由于对 Electron 生态系统更熟悉,最终选择了 Electron。

Chatd 如何在不增大应用体积的情况下分发和更新大语言模型?

Chatd 捆绑了 Ollama 作为模型运行与分发系统。模型不打包进 Electron 应用,而是通过 Ollama 的分发系统从注册表下载。这样初始下载体积小,且作者可以单独更新模型而无需发布新应用版本。

Chatd 的架构包含哪些主要部分?

Chatd 架构包括四个主要部分:渲染进程(使用 HTML、CSS、JavaScript)、进程间通信(IPC)、主进程(处理文档并使用 transformers.js 提取数据)和大语言模型运行器(集成 Ollama)。

高级用户能否更换 Chatd 中的大语言模型?如何操作?

可以。如果检测到 Ollama 已在运行,Chatd 会提供额外设置选项,允许用户配置并更换模型。此外,用户如果已有模型,无需重复下载。

Chatd 如何处理文档并与文档对话?

主进程负责处理文档,提取数据后发送给 transformers.js(基于 ONNX 运行时)进行向量化,向量数据存储在内存中。之后利用本地运行的大语言模型实现与文档的对话。

🏷️

标签

➡️

继续阅读