我们经常会问 AI 一些问题,大多数情况下,它会综合各种资料,给我们想要的回答。
但有的时候就不行了:
比如我写了 10 年的日记,这些都是私密信息,没有公开。
那让 AI 给我总结下我的一些经历,是不是就做不到了?
那如何在不把这些信息公开到互联网的情况下,让 AI 给我总结下呢?
这时候我们就需要搭建本地的知识库了。
而且搭了本地知识库也不行,用线上的 AI 模型的时候,万一它把我的日记记下来了呢?
如果我想绝对的安全那就也不能用这些线上模型。
这时候就需要跑本地 AI 模型了。
所以,这篇文章我们就来学习下本地知识库 + 本地模型。
除了上面说的安全外,它们还不用花一分钱!
首先,我们先用下线上的 AI 模型。
国内用国外的模型一般都要找个代理商来用。
这种代理挺多的,我这里用的 302.ai,你也可以用别的
这种代理都是给你对接好了国内、国外各种模型,可以直接用。
充值后,生成一个 API KEY:
接下来就可以调用 openai 的接口了。
我们创建个项目:
进入项目,安装 openai 的 sdk:
然后创建 index.mjs(.mjs 的后缀是告诉 node 这个文件是 es module 的)
跑一下:
如果问它我的日记里的一些东西,他就不知道了:
这时候就需要搭建一个知识库了。
我这里用的是 maxkb,一个开源的知识库
用 docker 跑一下:
首先没安装 docker 的话去官网下载下桌面端 www.docker.com/
跑起来后,可以看到镜像列表:
镜像跑起来的容器列表:
我们搜索下 maxkb 的镜像(这步可能需要):
点击 run,它会下载镜像,然后让你填入参数来跑:
输入容器名、映射的端口号、挂载的数据卷
映射端口的意思是你把本地的 8080 端口映射到容器里的 8080 端口,这样你就能通过本地的 8080 端口访问容器里的服务了。
挂载数据卷也是这个意思,把本地的 /Users/guang/.maxkb(这个目录是随便的,windows 下就是 c://xxx ) 目录挂载到容器里的 /var/lib/postgresql/data(这个目录是固定的)
还需要挂载本地的另一个目录到容器里的 /opt/maxkb/app/sandbox/python-packages
接下来点击 run,把容器跑起来:
跑起来之后访问 http://localhost:8080 就好了。
登录页面是这样的:
初始用户名和密码是: admin、MaxKB@123..
点击创建知识库:
这个知识库是放我的看过的小说:
点击上传文档:
文档可以是文本的 txt、markdown 等,也可以是表格的 excel、csv 等:
把这个小说上传上去
秋日的秘密.txt
这个小说绝对是网上搜不到的,因为我是让 AI 写的:
不信你可以问下试试:
上传这个文档:
这样,知识库里就有了一个文档:
然后点击创建一个应用:
配置应用前,我们先要配置下线上的模型:
点击系统管理 > 模型设置 > 添加模型:
添加一个 openai 的模型,填入刚才我们用的代理商的 api key 和 base url
点击添加:
然后回过头来继续配置应用:
选择刚才创建的模型:
关联上小说的知识库:
点击右上角的保存并发布。
之后就可以在概览里看到 base url 和 api key 了:
把它复制出来,替换 index.mjs 里的配置:
这时候就可以问这本小说的问题了:
我们多问点问题试试:
回答的都挺好的。
当然,这个小说内容比较少,你完全可以找一个内容更多的知识库,来让 AI 解读。
这就是知识库的作用!
我们企业内部的一些私有组件库,就可以把信息整理一下,做成知识库告诉 AI。
这样,它再生成的代码就是基于内部组件库的了。
那再看下第二个问题,虽然知识库是本地部署的,但是用的模型是线上的啊
这样可能有安全问题,所以我们要自己部署个本地模型。
我们用 ollama 来安装本地模型。
在 ollama 官网 ollama.com/ 下载:
安装后就可以用 ollama 命令了。
我们跑下 qwen 这个模型,它是中文开源模型:
从 0.5b 到 72b 是参数多少不同,消耗计算资源不同:
我们这里下个小的来测试:
下载后问了下问题,可以看到,大模型跑起来了。
这个窗口不要关掉,再开一个窗口调用下 api:
上面是流式返回的内容。
可以看到 API 也是通的。
接下来就可以把这个本地模型配到 maxkb 了。
添加 Ollama 模型:
填下名字、模型名、API 域名和 API Key
这里模型名填和本地一样的
API 域名用 host.docker.internal:11434 (就是容器内的 locahost)
API Key 填啥都行
然后改下小说助手的设置,换成本地的 Ollama 模型,点击保存:
为了证明我这次用的是本地的模型,我把线上 AI 的所有 API Key 都禁用掉了:
然后我让它给续写一段故事:
你仔细看下,写的还真挺好的。
本地用的这个 qwen2.5 模型真不错,一般情况下不用花钱去买线上的模型用了。
用本地知识库放一些私有的信息,然后交给本地的 AI 模型去解读,完全不用花一分钱,效果也足够用。
总结
今天我们学了本地知识库、本地 AI 模型,并用它来做了一个阅读小说的助手。
AI 模型只知道公开的信息,如果想让它对一些你的私有信息做解读,就需要用到知识库了。
我们用 docker 跑了 maxkb 这个开源知识库,完全免费用,数据都是存在本地的相当安全。
你可以用它接入线上 AI 模型来用,但如果担心这样不安全,也可以用 Ollma 跑个本地 AI 模型。
我们试了下本地 Ollama 跑的 qwen2.5 模型,然后搭配小说知识库里的一篇小说,续写啥的完全不成问题,解读也很到位。
当然,这些不是前端领域的应用。
对前端来说,最有价值的是把内部的组件库、文档等做成知识库,让 AI 生成的代码用内部组件库来写,也可以让它来做文档查询助手。
本地的 AI 模型 + 本地的知识库,完全不用花一分钱,但效果也足够用。
更多内容可以看我的小册《Node.js CLI 通关秘籍》