OpenWebUI
Key Takeaway
- 本地大模型和知识库可以通过ngrok实现外网访问,兼顾数据隐私安全和使用便捷。
- ngrok是一种内网穿透工具,能建立安全的内部和外部通道,实现外网访问内网。
- 部署ngrok需要安装ngrok、添加认证token,并通过命令将本地端口映射到外网。
- 通过外网访问本地知识库,用户可以随时随地与私人知识库交互,获取信息或生成内容。
- 文章强调了本地部署AI的趋势和ngrok在实现这一趋势中的价值。
Full Content
本地大模型和本地知识库,通过外部网络也可以访问。
简单来说就是,你用家里的电脑跑着大模型,然后到了外边,用手机也能访问。我先快速演示一下,然后再告诉你:1、这么做有什么价值;2、具体怎么操作。
我先把本地大模型跑起来。运行Ollama,让它在后端呆着。然后运行Docker,把Open WebUI这个镜像启动起来。
这时通过本地链接,我们就可以在这个ChatGPT风格的网页上使用本地大模型了。而且,不仅仅只是跟大模型聊天,你还可以把文档导进去,构建自己的本地知识库。
如果想知道具体怎么安装和使用,看我上一个视频。如果有什么疑问,或者想进一步交流,可以到知识星球来找我。我每天都会在星球里分享内容,以及回答问题。
截至目前,我们都是在本地运行。在这个基础上,要想实现外部访问,只需要在终端里多运行这一条命令。然后把这条链接发到手机上。
我把手机的Wi-Fi关了,在5G状态下打开链接。可以看到,同样的界面,同样的大模型列表,同样的文档,说明我们连接成功了。
所以,折腾这么一出,到底为了啥?
对我来说,最有价值的地方在于,我可以随时随地接入我私人的本地知识库。
其实这个思路就跟NAS一样。
你在家里的电脑上存了很多私人的文档。你不可能把这些文档在每个电脑上都备份一遍,更不可能传到云端。那到了外边,比如在公司的时候,或者出差的时候,想要使用,就可以通过外网访问家里的NAS。
那么,通过外网访问本地知识库也是一个道理。唯一不同的是,我们不是直接访问这些文档,而是与本地大模型交互,让大模型告诉我们文档里的内容,或者让大模型基于文档去生成新的内容。
所以,我这么多年积累的资料,我整个知识体系,都可以喂给大模型。它们都留在我家里的电脑上,很安全。然后,我走到哪儿都可以访问。这是最最吸引我的地方。
要实现这个,只需要安装一个东西:ngrok。
如果你是开发者的话,对ngrok应该很熟悉。它既是一种内网穿透工具,一种反向代理服务。简单来说就是,ngrok在内部和外部建立了一条安全的通道,让你通过外网也能访问内网。
安装和配置ngrok,只需要在终端里运行三条命令。我这边以Windows为例。如果你是MacOS的话,只有第一步的安装命令不一样。
第一条:choco install ngrok。
这个choco install是专门用来在Windows系统上安装、更新软件包的命令,有点类似pip install。只不过pip install是专门针对Python环境。
我估计大家在这一步都会报错,因为系统里没有安装Chocolatey。一般遇到报错,我都会让GitHub Copilot帮我分析。你用ChatGPT也可以,把一大堆看不懂的报错信息全部复制粘贴过去。然后根据提示操作就搞定了。
你看,GitHub Copilot就教我,先用系统管理员身份打开PowerShell,然后那一行命令,就会自动下载安装Chocolatey,最后重启PowerShell就行。
所以,完全没难度。大家看到报错千万别怕,直接问大模型就好了。
第二条:ngrok config add-authtoken
在ngrok官网注册之后,就会给你一个专门的身份验证令牌。那这条命令就是把你的令牌添加进配置里。
第三条:ngrok http http://localhost:3000
这个localhost:3000就是Ollama在本地使用的端口。你可以简单理解为,这条命令就是告诉ngrok,帮我把3000这个端口跟外部打通。
当你把第三条命令也成功执行,在终端里就会看到,ngrok给了你一个链接——这个就是咱们能在外部使用的链接。就像刚才我演示的那样,把它发给自己,在外边也可以使用了。
如果你觉得每次都要把链接发给自己太麻烦,还可以在后台创建一条固定的链接,然后通过一行命令配置起来。这样每一次启动,ngrok都会使用相同的链接。然后你可以把那个网页发送到手机桌面,每次一点开就行。
OK,以上就是ngrok的基本用法。这期视频我就是想给大家打开一个思路。就像我在知识星球里分享的:
从今年开始,AI会加速普及。两条路线:1、上终端;2、应用爆发。
那么,在端侧跑大模型、建立知识库之后,如果还能通过外网访问,那么就能同时兼顾数据隐私安全和使用便捷。这是ngrok的价值。
大家如果有什么建议或者疑问,可以到星球里交流。咱们下期见。
Key Takeaway
- Ollama是本地运行开源大模型的最佳工具,支持多平台,且易于安装和使用。
- Open WebUI提供ChatGPT风格的Web界面,支持本地大模型交互和RAG能力,可处理网页和文档。
- Anything LLM是更高级的本地知识库管理工具,支持多种大模型、嵌入模型和向量数据库,并提供Workspace概念和对话/查询模式。
- 本地部署大模型和知识库能实现数据安全、隐私保护和更灵活的定制化。
- 文章强调了Ollama的服务器模式,使其能开放端口供其他软件调用大模型能力。
Full Content
在本地跑开源大模型,目前最好的软件肯定是Ollama。
不管你用的是PC、Mac,甚至是树莓派,都能通过Ollama运行大大小小的模型。而且扩展性极强。
我准备分几期详细介绍Ollama的用法。今天这期,先介绍三点:
- 怎么用Ollama在本地运行大模型。
- 在跑本地大模型的同时,使用像ChatGPT那样的Web UI。
- 打造完全本地化的知识库。
大家如果有更好的建议,或者在安装和使用过程中有什么问题,可以到newtype知识星球来找我。
Ollama
安装Ollama超级简单。到官网ollama.com或者.ai下载对应版本就行。
安装完成之后,在终端里输入ollama run,后边接想要运行的大模型名称就行。比如:ollama run llama2。这时系统会自动下载对应的大模型文件。
如果你不确定大模型的名称,到官网的model子页面就能找到目前所有支持的大模型。每一款大模型都有不同的版本,根据你的需求、机器的内存大小,选择对应版本,然后复制命令就行。
一般来说,7b的模型至少需要8G内存,13b需要16G,70b需要64G。大家量力而为,不然跑起来真的非常卡顿。
在默认情况下,你需要在终端里与大模型做交互。不过这种搞法真的太古老了。我们肯定是希望在一个现代的、图形化的界面里操作。这时候就要用到Open WebUI了。
Open WebUI
要安装Open WebUI,需要先安装Docker。
你可以把Docker简单理解为就是一个虚拟的容器。所有应用和依赖都打包成一个容器,然后再在系统上运行。
Docker搞定之后,复制GitHub里的这行命令到终端里执行。一切顺利的话,打开一个本地链接,就能看到非常眼熟的界面了。
这个WebUI,除了具备基本的聊天功能之外,还包含了RAG能力。不管是网页还是文档,都可以作为参考资料给到大模型。
你如果想让大模型读取网页内容的话,在链接前面加个#就行。
你如果想让大模型读取文档的话,可以在对话框的位置导入,也可以在专门的Documents页面导入。
在对话框里输入#,会出现已经导入的所有文档。你可以选中一个,或者干脆让大模型把所有文档都作为参考资料。
如果你的要求不是太高,那么做到这一步就OK了。如果你想对知识库有更多的掌控,就下载这个软件:Anything LLM。
Anything LLM
Ollama其实有两种模式:
- 聊天模式
- 服务器模式
所谓服务器模式,你可以简单理解为,Ollama在后端运行大模型,然后开放一个端口给到别的软件,让那些软件可以调用大模型的能力。
要开启服务器模式非常简单。在终端里输入两个单词:ollama serve。
启动之后,把这个默认链接填到Anything LLM里。这时,软件会通过链接读取可以加载的模型。这些模型是用来生成内容的模型。
除此之外,搭建一个知识库,会涉及到另外两个关键:
- Embedding Model,嵌入模型。它负责把高维度的数据转化为低维度的嵌入空间。这个数据处理过程在RAG中非常重要。
- Vector Store,向量数据库,专门用来高效处理大规模向量数据。
这两个我们都用默认的。这样一来,整套系统都跑在你的电脑上。当然,你也可以选择全部跑在云端,比如,大模型和嵌入模型都用OpenAI的,向量数据库用Pinecone,都可以。
完成最基础的三个设置之后,就可以进入主界面了。这款软件的逻辑我挺喜欢的,它有一个Workspace的概念。在每一个Workspace内部,可以创建各种聊天窗口,可以导入各种文档。
所以,你可以根据项目来创建Workspace,一个项目建一个。然后,把关于这个项目的所有文档、所有网页都导入Workspace。最后,聊天模式还有两种可以设置:
- 对话模式:大模型会根据你给的文档,以及它本来就有的知识储备,综合起来回答。
- 查询模式:大模型只是简单地针对文档进行回答。
这个就是我前边说的,Anything LLM比Open WebUI更进阶的地方,完全可以满足个人对知识库的需求。我已经把它作为我在桌面端Workflow的核心。等这两期视频做完,我专门出一期,讲讲我目前在用的AI工具和工作流吧。