0:00.000–0:00.940
zhHello 大家好我是周日金
0:00.940–0:03.620
zhAI这两年离咱们普通用户越来越近
0:03.620–0:06.080
zh现在甚至不需要单独买一台服务器
0:06.080–0:08.440
zh我们就可以直接把手头闲置在Mac
0:08.440–0:11.000
zh变成一台属于自己的本地AI服务器
0:11.000–0:13.000
zh这期视频我会从零开始
0:13.000–0:14.429
zh带大家把Olama、
0:14.429–0:15.857
enOpenWeb UI、
0:15.857–0:16.429
enREG、
0:16.429–0:17.000
enOCR、
0:17.000–0:18.143
enWhisper.
0:18.143–0:20.000
zhcpp和N8N一步步串起来
0:20.000–0:21.420
zh这套方案的重点就是
0:21.420–0:25.420
zh模型和大部分的数据都运行在自己本地的Mac上
0:25.420–0:27.140
zh也不要求特别高的配置
0:27.140–0:29.160
zh如果大家对这类玩法感兴趣
0:29.160–0:32.780
zh后面还可以继续带大家折腾本地图片和视频生成
0:32.780–0:34.040
zh本地AI编程
0:34.040–0:36.180
zh以及把AI介入Home Assistant
0:36.180–0:38.800
zh通过自然语言控制家里的智能设备
0:38.800–0:40.020
zh视频正式开始前
0:40.020–0:42.180
zh先求一波一进三连加关注支持一下
0:42.180–0:43.920
zh这样以后有新的教程更新
0:43.920–0:45.340
zh也能第一时间受到推送
0:45.340–0:46.100
zh非常感谢
0:46.100–0:49.520
zh接下来我们就从我的这台Mac mini来开始
0:54.742–0:56.332
zh在开始下载模型之前
0:56.332–0:58.892
zh我们需要先在Mac上安装OLAMA
0:58.892–1:00.212
zh你可以把它理解为
1:00.212–1:03.992
zh让普通用户可以在本地运行AI大模型的运行环境
1:03.992–1:06.692
zh直接前往OLAMA的官网下载对应的安装包
1:06.692–1:10.252
zh然后拖动到MacOS用程式文件夹就可以了
1:10.252–1:12.952
zh平时使用ChatGBT Cloud这类AI服务时
1:12.952–1:15.272
zh模型都是运行在云端服务器上
1:15.272–1:16.952
zh而OLAMA要做的事情
1:16.952–1:20.772
zh就是把像Deepseek签问LAMA这类开源模型
1:20.772–1:22.212
zh下载安装到你的Mac上
1:22.212–1:24.252
zh让他们直接利用本机的CPU
1:24.252–1:25.332
zh和GPU运行
1:25.332–1:27.192
zh安装后Olama并打开之后
1:27.192–1:28.532
zh下一步就是下载模型
1:28.532–1:29.992
zh不过这里需要注意啊
1:29.992–1:32.572
zh本DAI和ChatGPT这类云端的模型
1:32.572–1:33.332
zh最大的区别
1:33.332–1:35.812
zh就是模型大小会直接影响运行体验
1:35.812–1:38.612
zh所以不能盲目追求越大的模型就越好
1:38.612–1:41.532
zh我这里使用的是一台M4入门款的Mac mini
1:41.532–1:43.072
zh采用16GB的同一列存
1:43.072–1:44.912
zh加256GB的固态硬盘
1:44.912–1:47.292
zh确认Olama的服务在正常运行后
1:47.292–1:49.132
zh我们在MacOS的中段App中
1:49.132–1:50.432
zh输入这三条命令
1:50.432–1:52.252
zh它们分别负责不同的功能
1:52.252–1:53.872
zh第一个是大约模型
1:53.872–1:55.692
zh也就是本地AI的大脑
1:55.692–1:56.772
zh负责日常聊天
1:56.772–1:57.492
zh内容生成
1:57.492–1:58.732
zh总业资料等任务
1:58.732–2:00.972
zh其中4B代表40亿参数
2:00.972–2:03.672
zhQ4KM代表经过4B特量化
2:03.672–2:05.632
zh可以在降低模型这样的同时
2:05.632–2:07.172
zh保持不错的运行效果
2:07.172–2:09.692
zh是目前比较适合普通Mac的选择
2:09.692–2:11.432
zh第二个是向量模型
2:11.432–2:12.832
zh主要用于知识库检索
2:12.832–2:15.312
zh如果你以后想让AI读取自己的PDF
2:15.312–2:16.592
zh文档 视频稿件
2:16.592–2:18.432
zh然后根据这些资料回答问题
2:18.432–2:20.072
zh就需要通过embedding模型
2:20.072–2:22.192
zh先帮AI找到相关内容
2:22.192–2:24.792
zh第三个是欧塞AR文字试园模型
2:24.792–2:25.912
zh负责处理图片
2:25.912–2:27.472
zh扫描版PDF等内容
2:27.472–2:29.332
zh把图片里的文字提许出来
2:29.332–2:31.332
zh再交给语言模型进行分析
2:31.332–2:33.612
zh这里之所以选择签问的AR模型
2:33.612–2:35.732
zh是因为签问是目前比较成熟的
2:35.732–2:36.752
zh开源大模型之一
2:36.752–2:39.332
zh对中文理解和中文生成比较友好
2:39.332–2:41.432
zh其次是它提供的模型规格丰富
2:41.432–2:43.712
zh从4B到更大的参数版本
2:43.712–2:45.372
zh可以适配不同配置的Mac
2:45.372–2:46.152
zh还有一个是
2:46.152–2:48.192
zh它在OLAMA里的支持比较完善
2:48.192–2:50.012
zh安装和电用也都比较简单
2:50.012–2:51.272
zh当然除了签问
2:51.272–2:53.812
zhDeepSeq、Lama等模型也都可以运行
2:53.812–2:56.092
zh大家可以根据自己的需求进行选择
2:56.092–2:59.012
zh至于不同的Mac应该选择多大的模型
2:59.012–3:01.252
zh主要看新变性能和统一内存的大小
3:01.252–3:04.452
zh8GB内存的Mac建议先从4B级别模型开始
3:04.452–3:07.872
zh16GB内存运行4B会相对轻松
3:07.872–3:11.332
zh也可以在实际内存压力云雪情况下尝试9B
3:11.332–3:14.632
zh而24GB、32GB以及更高内存的Mac
3:14.632–3:16.492
zh则可以继续尝试更大的规格
3:16.492–3:20.172
zh但具体体验还会受到上下文长度和后台任务的影响
3:20.172–3:21.532
zh这里需要注意啊
3:21.532–3:23.412
zh模型标签不能随便改数字
3:23.412–3:25.252
zh如果继续使用千万3.5
3:25.252–3:29.092
zh目前OLAMA还提供9B 27B 35B等更大规格
3:29.092–3:32.512
zh具体名称一定以OLAMA模型库实际存在的标签为准
3:32.512–3:35.152
zh那咱们还是先把本地AI服务器跑起来
3:35.152–3:37.412
zh后续再根据实际需求升级模型
3:37.412–3:39.692
zh接下来我们在Microsoft的中段APP中
3:39.692–3:41.872
zh输入以下命令OLAMA LIST
3:41.872–3:44.132
zh查看是否已经全部下载完成
3:44.132–3:46.632
zh如果前面下载的模型都正常列出来
3:46.632–3:49.892
zh就可以来简单试一下模型能不能在本地正常运行
3:49.892–3:51.072
zh输入制传命令
3:51.072–3:52.032
enolama run
3:52.032–3:52.892
zh千万3.5
3:52.892–3:54.532
en4b-q4km
3:54.532–3:55.892
zh然后随便发一句话
3:55.892–3:56.632
zh比如你好
3:56.632–3:59.072
zh如果能正常给出回复就没问题了
3:59.072–4:01.052
zh随后输入制传命令结束对话
4:01.052–4:01.552
enBye
4:01.552–4:03.652
zh之后我们就可以停止运行
4:03.652–4:04.632
zh以释放资源
4:04.632–4:05.772
zh输入制传命令
4:05.772–4:06.832
enolama stop
4:06.832–4:07.652
zh千万3.5
4:07.652–4:09.072
en4b-q4km
4:09.072–4:10.692
zh然后再输入制传命令
4:10.692–4:11.472
enolama ps
4:11.472–4:14.132
zh查看这个AR大模型是否仍在运行
4:14.132–4:15.452
zh此时应该唯空
4:15.452–4:18.192
zh那么就说明我们的大模型已经没有在运行了
4:18.192–4:20.332
zh接下来咱们就要开始准备部署
4:20.332–4:22.332
zh家庭局网AN对话见面了
4:27.604–4:30.954
zh前面我们已经通过Olama把AI模型运行在Mac上
4:30.954–4:33.494
zh但是目前还需要通过中端的进行操作
4:33.494–4:35.274
zh对于日常使用来说不太方便
4:35.274–4:37.194
zh所以接下来我们就要给他搭建一个
4:37.194–4:39.054
zh类似ChatGB的网页界面
4:39.054–4:40.714
zh这里使用OpenWebUI
4:40.714–4:43.254
zh也就是让Olama负责运行AI模型
4:43.254–4:45.614
zhOpenWebUI负责提供交互界面
4:45.614–4:46.794
zh部署完成后
4:46.794–4:48.834
zh家里的手机平板电脑都可以通过
4:48.834–4:50.314
zh浏览器放完这台Mac mini
4:50.314–4:52.294
zh直接使用自己的本地AI
4:52.294–4:54.594
zh考虑到中国大陆用户的网络环境
4:54.594–4:56.914
zh这里直接通过Python安装OpenWebUI
4:56.914–4:59.434
zh同时Olama继续只监听本机地址
4:59.434–5:00.914
zh不会直接报道网络中
5:00.914–5:04.174
zh本教程固定使用OpenWebUI 0.11.0版本
5:04.174–5:06.574
zh不使用latest或滚动更新版本
5:06.574–5:09.394
zh避免版本变化导致操作流程不一炸
5:09.394–5:11.014
zh首先准备Python环境
5:11.014–5:13.014
zh如果你的Mac已经安装Homebrew
5:13.014–5:16.114
zh则可以输入brew install python at 3.11
5:16.114–5:17.554
zh如果没有安装Homebrew
5:17.554–5:19.494
zh也可以直接前往Python官方网站
5:19.494–5:22.174
zh下载安装Python 3.11对应的MacOS安装包
5:22.174–5:24.654
zh后面如果会继续折腾这类工具
5:24.654–5:26.114
zh建议提前装好Homebrew
5:26.114–5:27.854
zh管理和升级会方便不少
5:27.854–5:30.534
zh接下来创建OpenWeb UI独立运行环境
5:30.534–5:32.834
zh避免影响系统里的其他python项目
5:32.834–5:35.014
zh后续相关代码我不再一一进行解释
5:35.014–5:35.834
zh如果有看不懂
5:35.834–5:38.054
zh可以查看代码上方的文本注释
5:50.272–5:52.622
zh然后通过轻滑镜像安装OpenWebUI
6:02.916–6:03.806
zh安装完成后
6:03.806–6:06.026
zh第一次启动将以只允许本机访问
6:06.026–6:07.926
zh先完成账号和安全设置
6:07.926–6:09.306
zh等命令跑起来以后
6:09.306–6:10.886
zh不要关闭这个中端窗口
6:10.886–6:13.386
zh因为OpenWeb UI的服务就运行在这里
6:16.212–6:18.762
zh然后617打开127.0.0.1
6:18.762–6:19.582
zh网好3000
6:19.582–6:21.702
zh第一次进入需要充电账号
6:21.702–6:23.762
zh第一个账号就会自动成为管理员
6:27.421–6:28.451
zh进入管理后台后
6:28.451–6:29.931
zh前往设置身份验证
6:29.931–6:31.451
zh把newsign apps关闭
6:31.451–6:33.451
zh也就是不允许新用户自由注册
6:33.451–6:36.571
zh同时暂时不要安装来源不明的第三方Tools
6:36.571–6:37.991
zhFunctions或Pipelines
6:37.991–6:40.991
zh接着就可以在流量器打开127.0.0.1
6:40.991–6:42.431
zh冒号11434
6:42.431–6:44.551
en-API-Version
6:44.551–6:46.891
zh确认欧拉玛本地API正常响应
6:46.891–6:48.131
zh回到OpenWeb UI
6:48.131–6:50.371
zh在检查之前下载的前文3.5
6:50.371–6:53.771
zh4B-Q4KM是否已经出现在母型列表当中
6:53.771–6:54.891
zh确认没有问题后
6:54.891–6:55.871
zh在中端App中
6:55.871–6:58.411
zh按Ctrl加C停止OpenWeb UI
6:58.411–7:00.171
zh接下来开放家庭局域网
7:00.171–7:03.731
zh实际在系统设置网络中查看Mac mini的局域网IP
7:03.731–7:06.051
zh实际操作需要替完成你自己的IP
7:06.051–7:07.851
zh重新启动OpenWeb UI
7:11.000–7:14.350
zh现在Mac mini本机可以继续访问127.0.0.1
7:14.350–7:15.070
zh网号3000
7:15.070–7:17.950
zh并使用刚才创建的管理员账号进行登录
7:17.950–7:19.710
zh通过家庭网络里的手机
7:19.710–7:23.550
zh电脑则可以通过Mac mini的IP地址加段稿号3000来访问
7:23.550–7:25.510
zh同样使用刚才的账号来登录
7:25.510–7:26.910
zh这时候可以随便问您问题
7:26.910–7:29.370
zh看看局域网访问和模型交用是否正常
7:29.370–7:31.030
zh如果下设备都无法打开
7:31.030–7:32.350
zh依次可以清查几个地方
7:32.350–7:33.590
zh最后提醒一下
7:33.590–7:35.630
zh这里搭建的家庭局域网AI服务器
7:35.630–7:37.410
zh不会把服务暴露到公网
7:37.410–7:39.610
zh因此不需要进行路由器短口转发
7:39.610–7:42.530
zh也不要直接把OpenWeb AI开放到互联网环境
7:42.530–7:45.010
zh而这样配置后保持终端App不关闭
7:45.010–7:46.710
zhAI模式运行在自己的Mac上
7:46.710–7:48.950
zh数据只在家庭网络里进行流转
7:48.950–7:52.870
zh同时手机平板和电脑都可以共享这台本地AI服务器
7:58.147–8:00.337
zh前面OpenWeb UI已经可以这张访问了
8:00.337–8:02.537
zh接下来我们再给整个家庭AI服务器
8:02.537–8:04.377
zh建立一个统一的API接口
8:04.377–8:06.937
zh这样以后不管是N8N手机会议指令
8:06.937–8:09.357
zh还是其他支持OpenAI API的程序
8:09.357–8:11.217
zh都统一连接OpenWeb UI
8:11.217–8:13.097
zh不需要直接访问底层的奥拉玛
8:13.097–8:14.117
zh那这样的好处是
8:14.117–8:17.797
zh模型、账号和权限都可以在OpenWeb UI这一层统一管理
8:17.797–8:19.037
zh后面更换模型时
8:19.037–8:21.097
zh也不用重新修改每一个应用
8:21.097–8:22.617
zh时间咱们回到OpenWeb UI
8:22.617–8:25.057
zh点击左下角头像依次进入设置
8:25.057–8:27.557
zh身份验证找到API密钥并打开
8:27.557–8:30.177
zh如果界面提供API密钥端点限制
8:30.177–8:31.137
zh也一并开启
8:31.137–8:32.477
zh然后填写这个
8:32.477–8:37.377
zh这样生成的key就只允许访问模型列表和聊天接口
8:37.377–8:39.317
zh接下来进入账号API密钥
8:39.317–8:42.037
zh点击右侧的显示创建新的API密钥
8:42.037–8:44.357
zh生成密钥通常会以SK开头
8:44.357–8:47.357
zh这个密钥相当于访问我们家庭i服务器的密码
8:47.357–8:49.317
zh不要直接公开或者分享出去
8:49.317–8:52.657
zh如果后面准备长期让N8N这类的自动化工具使用
8:52.657–8:55.157
zh建议专门创建一个普通的本地账号
8:55.157–8:57.197
zh再用这个账号生成API密钥
8:57.197–8:59.377
zh不要长期使用管理员账号的密钥
8:59.377–9:02.057
zh因为密钥会计权创建这个账号的权限
9:02.057–9:04.877
zh而且一个账号通常只保留一个API密钥
9:04.877–9:06.957
zh接着我们来测试接口是否正常
9:06.957–9:08.997
zh打开一个新的终端APP窗口
9:08.997–9:12.297
zh把下面的命令中的SK换成刚才生成的密钥
9:12.297–9:13.597
zh如果结构正常
9:13.597–9:16.897
zh终端会访问当前OpenWeb UI可以调用的模型列表
9:16.897–9:20.297
zh这里可以顺便记一下返回结果里模型队的真实ID
9:20.297–9:23.477
zh因为后面其他地方调用AI时就需要填写这个名称
9:23.477–9:25.517
zh接下来再来测试聊天接口
9:25.517–9:28.917
zh同样的记得把SK开头的这串换成刚才生成的密钥
9:28.917–9:32.477
zh而model后面需要填写刚才模型列表里面实际反馈的ID
9:32.477–9:35.057
zh如果你下载的是其他签问或者其他模型
9:35.057–9:36.377
zh就替完成对应的模型
9:36.377–9:39.117
zh如果最后反馈Json里能够看到API正常
9:39.117–9:41.757
zh就说明这一套接口已经可以正常使用了
9:41.757–9:43.797
zh签问3.5在开启思考时
9:43.797–9:46.997
zh反馈内容里可能还会出现reasoning content这一类字段
9:46.997–9:48.077
zh这是正常现象
9:48.077–9:52.357
zh到这里我们就相当于给整个家庭AI服务器建立一个统一的入口
9:52.357–9:54.897
zh最底层人是Olama负责运行模型
9:54.897–9:58.157
zh上面的OpenWeb UI统一管理模型和API
9:58.157–10:01.797
zh在网上则可以接N8N手机快递指令或者其他应用
10:01.797–10:05.277
zh后面不管增加多少个客户端都尽量连接OpenWeb UI
10:05.277–10:07.637
zh而不是让每台设备直接访问欧拉玛
10:07.637–10:09.517
zh整个架构会更容易管理
10:14.685–10:17.535
zh前面我们已经把本地AI和聊天的API都搭好了
10:17.535–10:19.975
zh接下来就再补上一个非常熟能功能
10:19.975–10:21.315
zhCell文档知识库
10:21.315–10:22.515
zh也就是RAG
10:22.515–10:25.455
zhRAG可以列成先从你的资料里找内容
10:25.455–10:26.915
zh再交给AI声称回答
10:26.915–10:28.655
zh这样以后不管是自己的PDF
10:28.655–10:30.855
zh说明书工作文档还是视频稿
10:30.855–10:32.035
zh都可以放进知识库
10:32.035–10:34.255
zh让AI尽量根据这些资料来回答
10:34.255–10:36.255
zh而不是只靠模型本身的记忆
10:36.255–10:38.975
zh首先进入OpenWeb UI试试里的文档页面
10:38.975–10:40.875
zh进入模型引擎选择OLAMA
10:40.875–10:42.235
zhAPI密钥可以留空
10:42.235–10:44.675
zh地址填写127.0.0.1
10:44.675–10:46.035
zh冒号11434
10:46.035–10:47.095
zh进入模型出入
10:47.095–10:48.815
zh我们在视频一开始就下载好的
10:48.815–10:50.895
zh轻文3-embadding0.6b
10:50.895–10:52.455
zh而这里顺便解释一下
10:52.455–10:53.875
zh这个模型不负责聊天
10:53.875–10:55.735
zh它的工作是把文档找完成
10:55.735–10:57.635
zh便于检索的向量数据
10:57.635–10:58.495
zh只要你提问以后
10:58.495–11:01.135
zh系统才能快速找到和问题最相关的资料
11:01.135–11:03.275
zh其他参数可以先按照这一套来设置
11:03.275–11:04.635
zh大部分是我认的
11:04.635–11:07.195
zh这些参数主要是在检索效果和上下文本
11:07.195–11:09.215
zh占用之间做一个比较稳妥的平衡
11:09.215–11:10.755
zh比如快大小可以列成
11:10.755–11:12.675
zh每次把文档切成多大片段
11:12.675–11:14.815
zh快重叠则是在相邻片段之间
11:14.815–11:16.015
zh保留的部分重复内容
11:16.015–11:17.855
zh避免一句话刚好被重点切断
11:17.855–11:19.435
zhTuboK代表每次提问
11:19.435–11:21.515
zh最多取回多少个相关片段
11:21.515–11:22.975
zh这里先设置为3
11:22.975–11:24.195
zh并不是越大越好
11:24.195–11:25.575
zh因为塞进太多资料
11:25.575–11:27.975
zh反而会占模型有限的上下文空间
11:27.975–11:29.075
zh接下来我们创建一个
11:29.075–11:30.275
zh非常简单的测试文件
11:30.275–11:32.735
zh方便确认RA器是否真的正常工作
11:32.735–11:34.435
zh用任意文本编定器
11:34.435–11:35.855
zh新建一个Text文本
11:35.855–11:36.895
zh如果你用的是
11:36.895–11:38.695
zhMicroOS自带的文本编辑App
11:38.695–11:40.835
zh记得在菜单里选择制作成文本
11:40.835–11:42.575
zh比如里面写上这些内容
11:42.575–11:45.435
zh然后保存为家庭AI测试资料.txt
11:45.435–11:46.615
zh回到OpenWebUI
11:46.615–11:48.515
zh找到左侧边来的工作空间
11:48.515–11:50.075
zh再点击顶部的知识库
11:50.075–11:51.935
zh最后点击右上角的创建
11:51.935–11:54.155
zh名称填写家庭AI测试库
11:54.155–11:55.415
zh目标可以简单写真
11:55.415–11:58.655
zh用于测试本地RIG文档检索和应用功能
11:58.655–12:00.035
zh知识库创建完之后
12:00.035–12:01.415
zh再点击右上角的加号
12:01.415–12:02.415
zh选择上传文件
12:02.415–12:04.935
zh把刚才的txt文件上传进去
12:04.935–12:07.735
zh后面也可以上传带有文字层的PDF
12:07.735–12:09.695
zhDocx或Markdown文档
12:09.695–12:10.615
zh上乘完之后
12:10.615–12:12.335
zh在新兑化的聊天输入框里
12:12.335–12:14.695
zh通过警号手动附加这个支持库
12:14.695–12:16.735
zh而我这里为了教程演示方便
12:16.735–12:17.655
zh先手动选择
12:17.655–12:19.695
zh因为小参数模型主动判断
12:19.695–12:20.735
zh什么时候动用支持库
12:20.735–12:21.875
zh有时候不够稳定
12:21.875–12:23.675
zh然后我们可以问一个问题
12:23.675–12:25.135
zh只依据支持库回答
12:25.135–12:26.935
zh项目代号和设备维护时间
12:26.935–12:27.655
zh氛围是什么
12:27.655–12:28.815
zh请给出引用
12:28.815–12:30.035
zh正常情况下
12:30.035–12:30.975
zh耐心等待一会儿
12:30.975–12:33.475
zh他应该回答项目代号是清零
12:33.475–12:35.335
zh设备维护时间是每月第一
12:35.335–12:36.355
zh周六上午十点
12:36.355–12:39.055
zh而且回答旁边能够看到对应的资料引用
12:39.055–12:42.895
zh那么这套最基础的REG知识库就算大奖成功了
12:42.895–12:43.975
zh不过这样配置下来
12:43.975–12:46.095
zh你可能会发现还有一个地方容易踩坑
12:46.095–12:47.875
zh如果你的PDF是扫描件
12:47.875–12:50.055
zh本身没有可以复制的文字层
12:50.055–12:52.015
zh就不要拿它来测试REG了
12:52.015–12:54.775
zh因为知识库首先需要能够读取里面的文字
12:54.775–12:56.035
zh才能进行后续的处理
12:56.035–12:58.315
zh所以这种文件就需要先经过OCR
12:58.315–13:01.335
zh把图片里的文字设备成TXC或者Markdown
13:01.335–13:03.275
zh再上传到知识库来进行处理
13:03.275–13:06.255
zh接下来我们就继续把本地OCR的功能
13:06.255–13:07.235
zh也接近来
13:12.446–13:14.796
zh前面我们已经让AI能够读取次的文档
13:14.796–13:16.976
zh接下来再补上图片理解和OCR
13:16.976–13:19.816
zh也就是让这台本地AI不只能读文字
13:19.816–13:20.956
zh还可以看图片
13:20.956–13:22.856
zh那这里先区分两个概念
13:22.856–13:25.436
zh普通图片理解更适合看一张图里有什么
13:25.436–13:26.696
zh界面再显示什么
13:26.696–13:28.496
zh再顺便识别其中的文字
13:28.496–13:31.496
zhOCR则更专注于把图片里的文字
13:31.496–13:34.116
zh表格或者图表内容尽可能提取出来
13:34.116–13:36.976
zh先在OpenWeb UI里选择我们前面使用的
13:36.976–13:39.316
zh千万305 4B-KL4KM
13:39.316–13:40.816
zh如果你的Mac配置更高
13:40.816–13:42.016
zh也可以用9B的版本
13:42.016–13:44.916
zh上传一张同时包含物体和文字图片
13:44.916–13:45.596
zh然后输入
13:45.596–13:46.796
zh先描述画面内容
13:46.796–13:48.516
zh再逐项提取可见文字
13:48.516–13:50.496
zh不确定的部分标注为不确定
13:50.496–13:51.596
zh不需要自信补圈
13:51.596–13:53.736
zh这里可以分别拿产品包装
13:53.736–13:54.716
zh软件界面截图
13:54.716–13:55.456
zh中文表格
13:55.456–13:57.436
zh或者已经做好隐私透明的发票
13:57.436–13:59.136
zh和数据照片来测试一下
13:59.136–14:01.116
zh这样可以比较直观的判断出
14:01.116–14:02.956
zh模型到底是理解了图片内容
14:02.956–14:05.396
zh还是只是把里面的文字给识别出来
14:05.396–14:07.476
zh如果你出现了类似我这样的提示
14:07.476–14:09.156
zh就前往OpenWeb UI的设置
14:09.156–14:09.716
zh模型
14:09.716–14:11.556
zh找到刚才你前面使用的模型
14:12.016–14:12.656
zh编辑界面
14:12.656–14:15.296
zh找到高级参数下的NUMCTX
14:15.296–14:15.796
enOlama
14:15.796–14:17.456
zh针对我16GB的Mac mini
14:17.456–14:19.096
zh将数字更改为8192
14:19.096–14:21.156
zh然后重复上的操作就可以了
14:21.156–14:22.896
zh如果我们的目标不是理解图片
14:22.896–14:25.376
zh而是尽可能把图片里的文字给提取出来
14:25.376–14:28.536
zh就可以使用我们前面已经下载好的GLM OCR
14:28.536–14:30.036
zhOCR模型运行前
14:30.036–14:32.276
zh如果较大的千万模型还占着同一印存
14:32.276–14:33.636
zh先可以把它停掉
14:33.636–14:35.856
zh接下来我们准备好需要识别图片
14:35.856–14:37.456
zh放到一个统一的文件夹中
14:37.456–14:38.976
zh比如我这个目录像
14:38.976–14:41.256
zh对于我们Mac仿达中的用户文件夹
14:41.256–14:42.216
enAI test
14:42.216–14:44.636
zh这里手动新建一个test的文件夹就可以了
14:44.636–14:46.616
zh对于需要识别不同的内容图片
14:46.616–14:48.676
zh比如普通收据表格图表
14:48.676–14:50.096
zh都可以使用不同的命令
14:50.096–14:51.756
zh注意命令结尾的文件名
14:51.756–14:53.776
zh需要换成你自己图片的文件名
14:53.776–14:54.876
zh第一次测试时
14:54.876–14:56.576
zh建议每次只处理一张图片
14:56.576–14:58.916
zh先确认整套工作流能够稳定运行
14:58.916–15:00.956
zh如果遇到扫描PDF
15:00.956–15:03.876
zh也不用一开始就折腾完整的PDF解析工具
15:03.876–15:05.276
zh最简单办法就是
15:05.276–15:07.476
zh先用Microx自带的预览打开PDF
15:07.476–15:09.176
zh把其中一页导成PN器
15:09.176–15:11.496
zh再交给GLM OCR进行处理
15:11.496–15:13.676
zh等确认单页OCR没问题后
15:13.676–15:15.796
zh再考虑批量处理整份文档
15:15.796–15:17.996
zh识别出来的内容还可以继续利用
15:17.996–15:19.976
zh保存成TXT或者Markdown
15:19.976–15:22.576
zh再上传到我们上一节创建的知识库
15:22.576–15:24.216
zh然后交给签问做摘要
15:24.216–15:26.136
zh自端整理或者检索问答
15:26.136–15:28.056
zh那么整个流程就传起来了
15:28.056–15:30.996
zh如果OCR出现空白重复或者乱码
15:30.996–15:32.196
zh可以先更新Olam
15:32.196–15:34.276
zh然后每次只处理一张图片
15:34.276–15:35.436
zh图片过大时
15:35.436–15:39.016
zh可以把长辨锁到大约1600至2200像素
15:39.016–15:41.156
zh并优先使用PNG或者GPG
15:41.156–15:43.976
zh同时检查原图有没有明显模糊
15:43.976–15:45.056
zh倾斜反光
15:45.056–15:47.056
zh这些都会直接影响识别效果
15:52.240–15:54.070
zh除了文字和图片之外
15:54.070–15:55.950
zh本地还有一个非常实用的场景
15:55.950–15:57.550
zh就是处理视频和录音
15:57.550–15:59.410
zh比如把会议录音转成文字
15:59.410–16:00.910
zh把视频自动生成字幕
16:00.910–16:04.210
zh或者把自己的素材库快速整理成可搜索的文本
16:04.210–16:06.190
zh这里我们使用Whisper.cpp
16:06.190–16:08.590
zh它是Whisper模型C++实现的
16:08.590–16:10.610
zh针对Apple Silicon提供Mental加速
16:10.610–16:13.350
zh可以直接利用Mac的GPU进行本地转写
16:13.350–16:15.230
zh首先安装需要用到的工具
16:15.230–16:17.830
zhFMMP1G负责处理音频格式
16:17.830–16:20.150
zhWhisper.cpp负责语音识别
16:20.150–16:22.090
zh如果你的Mac已经安装Homebrew
16:22.090–16:23.930
zh可以直接输入代码来进行安装
16:23.930–16:25.670
zh如果你仍然没有安装Homebrew
16:25.670–16:28.310
zh安装whisper.cpp可以走圆码编译路线
16:28.310–16:29.790
zh不过对于普通用户来说
16:29.790–16:31.810
zh这一步会比Homebrew更复杂一些
16:31.810–16:34.350
zh还需要提前安装Xcode的Command Align Tools
16:34.350–16:35.690
zh这里就不展开了
16:35.690–16:36.630
zh安装完成后
16:36.630–16:39.130
zh可以通过下面两个命令来确认是否正常
16:39.130–16:40.730
zh接下来下载Whisper模型
16:40.730–16:42.190
zh我这里选择的是这个
16:42.190–16:44.570
zh这是一个支持中文和多语言的模型
16:44.570–16:46.830
zh相比完整Large模型体积更小
16:46.830–16:48.710
zh同时保留了比较好的转眼效果
16:48.710–16:50.150
zh更适合Mac本地运行
16:50.150–16:53.170
zh我们先创建存放模型和临时文件的目录
16:53.170–16:54.190
zh然后下载模型
16:54.190–16:57.230
zh下载完整后再计算一次SHA-1的值
16:57.230–17:01.150
zh方便和whisper.cpp模型文档公开的接应值进行核对
17:01.150–17:03.550
zh模型准备好后就可以开始处理视频
17:03.550–17:06.270
zh假设你的视频文件位于这个文件夹
17:06.270–17:09.330
zh也就是MicroOS用户目录的影片文件夹当中
17:09.330–17:12.070
zh大家根据自己的实际文件存储位置进行修改
17:12.070–17:17.050
zh首先使用FMMP1G把视频里的音频转换成Whisper更适合处理的格式
17:17.050–17:18.890
zh这几个参数简单介绍一下
17:18.890–17:20.430
zhVM表示去掉视频
17:20.430–17:21.250
zh只保留音频
17:21.250–17:24.630
zhAR16表示转换成16000赫兹的采样率
17:24.630–17:26.310
zhAC1表示单身道
17:26.310–17:29.230
zhPCM S16LE则是转换成Whisper
17:29.230–17:31.070
zh更容易处理的WAB格式
17:31.070–17:32.330
zh接下来运行Whisper
17:32.330–17:34.370
zh同时生成文字稿和字幕文件
17:34.370–17:37.270
zh-M用来指定我们前面下载的Whisper模型
17:37.270–17:39.890
zh-F指定需要转写的音频文件
17:39.890–17:41.670
zh-LZH告诉我们模型
17:41.670–17:43.490
zh这段文字主要内容是中文
17:43.490–17:45.730
zh-Prompt则可以提前提供一些
17:45.730–17:47.370
zh容易识别错误的中有名词
17:47.370–17:48.310
zh比如Mac mini
17:48.310–17:49.190
enApple Silicon
17:49.190–17:50.410
zhOlama和千问
17:50.410–17:51.930
zh对于科技类视频有其有用
17:51.930–17:54.190
zh比如这里我就加上了我的Lookup Weekly
17:54.190–17:58.750
zh后面的-otxt-oosrt和-ovtt
17:58.750–18:00.950
zh分别让它同时生成TXT文字稿
18:00.950–18:03.310
zhSRT字幕和VTT字幕
18:03.310–18:04.690
zh最后通过-off
18:04.690–18:06.770
zh指定输出文件的位置和名称
18:06.770–18:09.030
zh运行完成后会生成这些文件
18:09.030–18:10.890
zh其中TXT是纯文字稿
18:10.890–18:13.430
zh适合后续交给AI总结或者整理
18:13.430–18:15.330
zhSRT是常见的字幕格式
18:15.330–18:16.810
zh可以直接导入紧接软件
18:16.810–18:19.750
zhVTT是主要用于网页播放器的字幕
18:19.750–18:21.050
zh如果是8GB的Mac
18:21.050–18:25.730
zh也可以先尝试这里的Large-V3-Turbo-Q50电话模型
18:25.730–18:28.670
zh如果实际转写时内存压力较大或者速度不理想
18:28.670–18:30.970
zh再换成体积更小的Small多语言模型
18:30.970–18:33.430
zh不要下载来带EAN后置的英文专用模型
18:33.430–18:35.090
zh因为它只针对英文优化
18:35.090–18:36.410
zh如果需要中文转写
18:36.410–18:37.710
zh也不要开启翻译参数
18:37.710–18:39.710
zh否则模型会把内容翻译成英文
18:39.710–18:41.310
zh而不是保留原始的语言
18:41.310–18:44.430
zh到这里整套本地i工作流基本已经闭环
18:44.430–18:46.010
zh视频和录音可以通过Whisper
18:46.010–18:46.770
zh转写文字
18:46.770–18:48.210
zh再交给前文做总结
18:48.210–18:48.710
zh整理
18:48.710–18:50.870
zh最后也可以存入前面搭建的知识库
18:50.870–18:53.170
zh实现自己本地的内容管理系统
18:58.354–19:03.264
zh前面我们已经分别完成了本地云转写OpenWebUIAPI和签问调用
19:03.264–19:05.844
zh至于使用N8N搭建一条自动化工作流
19:05.844–19:07.504
zh上传音频或者视频后
19:07.504–19:09.424
zhN8N自动调用Whisper来转写
19:09.424–19:11.764
zh再把转写稿交给签问来整理
19:11.764–19:15.084
zh最后返回摘要提纲标题和证捷建议
19:15.084–19:16.844
zh不需要每次手动复制粘贴
19:16.844–19:19.124
zh首先把前面安装好的Whisper.cpp
19:19.124–19:21.744
zh变成一个可以被其他程序调用的本地API
19:21.744–19:24.224
zh先尝试允许Mac本机访问
19:24.224–19:25.804
zh保持这个中端窗口开启
19:25.804–19:28.164
zh再新开一个中南app窗口进行测试
19:28.164–19:30.204
zh如果能够正常返回转写结果
19:30.204–19:32.064
zhWhisper API就已经运行成功
19:32.064–19:34.684
zh后面N8N会运行在Docker容器里
19:34.684–19:36.684
zh如果出现无法连接Whisper的情况
19:36.684–19:38.484
zh可以按Ctrl加C停止服务
19:38.484–19:39.384
zh再这样改
19:39.384–19:40.504
zh这里需要特别注意
19:40.504–19:43.944
zhWhisper server本身没有用户登录和全线验证的功能
19:43.944–19:46.044
zh所以使用0.0.0.0时
19:46.044–19:48.364
zh只建议放在可信的家庭局网内
19:48.364–19:49.964
zh不要进行路由器端口转发
19:49.964–19:52.704
zh也不要把8178端口直接暴露到公网
19:52.704–19:53.904
zh接下来安装N8N
19:53.904–19:56.004
zh这里使用Docker Desktop来运行
19:56.004–19:57.444
zh并固定N8N版本
19:57.444–20:01.144
zh避免后续更新导致教程界面或者节点配置发生变化
20:01.144–20:03.844
zh先从Docker官网下载安装Docker Desktop
20:03.844–20:05.984
zh偷动到应用程序无电夹并启动
20:05.984–20:07.364
zh确认Docker正常运行后
20:07.364–20:09.544
zh再打开终端App输入下面的命令
20:16.852–20:19.162
zh接下来生成一段随机的加密密钥
20:22.856–20:25.186
zh把生成的结果替换到下面的XXX
20:29.721–20:31.851
zh然后我们访问127.0.0.1
20:31.851–20:32.891
zh号5678
20:32.891–20:36.111
zh第一次进入需要创建N8N的本地管理员账号
20:36.111–20:38.551
zh接下来我们来新建一条workflow工作流
20:38.551–20:40.491
zh这套流程一共只有四个节点
20:40.491–20:41.046
enWebhook
20:41.046–20:43.816
enwebhook HTTP request with perjuanxie
20:43.816–20:44.549
enHTTP request
20:44.549–20:45.656
zhHTTP Request的签文整理
20:45.656–20:47.216
enRespond to Webhook
20:47.216–20:48.896
zh第一个是Webhook节点
20:48.896–20:50.596
zh它相当于整条工作流的入口
20:50.596–20:52.896
zh以后只要把视频post到这个地址
20:52.896–20:54.356
zh工作流就会自动开始
20:54.356–20:56.056
zhWebhook的具体设置如下
20:56.056–20:58.036
zh没提到的设置保持不便即可
21:08.267–21:10.297
zh第二个节点添加http request
21:10.297–21:12.417
zh名称可以改成whisper转写
21:12.417–21:16.417
zh它负责把刚刚上传的音视频文件交给Mac上的whisper server
21:16.417–21:19.117
zh第二个节点http request的具体设置如下
21:19.117–21:20.997
zh没提到的设置保持不便即可
21:20.997–21:24.197
zh值得注意的是n8nbinaryfile这类型中
21:24.197–21:25.897
eninput data field
21:25.897–21:29.417
zhname需要填写webhook节点实际收到的二进制字段名称
21:29.417–21:31.097
zh点击前一个webhook节点
21:31.097–21:33.557
zh在output的binary中进行查看
21:33.557–21:35.797
zh如果显示为data那就填写为data
21:35.797–21:37.077
zh如果显示为Data0
21:37.077–21:38.357
zh那就填写为Data0
21:38.357–21:39.857
zh这个名称必须完全一致
21:39.857–21:40.857
zh否则会出现
21:40.857–21:43.337
zhThe item has no binary field的报错
21:43.337–21:45.877
zh第三个节点继续添加http request
21:45.877–21:47.497
zh名称改成前文整理
21:47.497–21:50.617
zh这个节点负责把Whisper返回完整转写稿
21:50.617–21:53.097
zh交给前面搭建好的OpenWeb UI API
21:53.097–21:55.937
zh第三个节点http request具体设置如下
21:55.937–21:57.957
zh没提到的设置保持不变即可
22:08.105–22:10.095
zh接下来回到前面的JSON输入框
22:10.095–22:12.295
zh把整个字段切换到expression模式
22:12.295–22:13.875
zh再粘贴下面的表达式
22:13.875–22:15.155
zh它的逻辑很简单
22:15.155–22:18.175
zhN8N自动读取Whisper转写节点里面的text
22:18.175–22:20.775
zh再连同预设提示词一起发给亲吻
22:23.996–22:26.026
zh最后添加Respound to Webhook节点
22:26.026–22:29.006
zh它负责把整条工作流结果返回给定用者
22:29.006–22:30.746
zhRespound with选择Json
22:30.746–22:33.346
zh然后把Respound body切换成Expression模式
22:33.346–22:34.566
zh粘贴下面的表达式
22:34.566–22:36.526
zhRespound code保持200即可
22:46.204–22:47.494
zh工作流设置完成以后
22:47.494–22:48.894
zh先不要急着正式启用
22:48.894–22:51.734
zh在N8N里点击Listen for Test Event
22:51.734–22:54.094
zh让Webhook等待一次测试请求
22:54.094–22:56.134
zh然后回到终端执行下面的命令
22:56.134–22:58.814
zh注意要把XAI Token后面的章位内容
22:58.814–23:01.454
zh替换成你前面实际设置的随机自如串
23:07.735–23:08.825
zh如果整个流程正常
23:08.825–23:10.205
zh你最终应该会得到
23:10.205–23:11.145
zh类似这样的结果
23:14.264–23:17.334
zh测试成功以后回到N8N的工作流程页面
23:17.334–23:19.294
zh点击右上角的Publish发布
23:19.294–23:23.094
zh发布后就不需要每次先点击Lessens for Test Event了
23:23.094–23:26.594
zh正式Webhook地址也会从Webhook Test AI Video Notes
23:26.594–23:28.754
zh变成Webhook AI Video Notes
23:28.754–23:30.754
zh以后只要把视频传到这个接口
23:30.754–23:33.074
zh整套流程就会自动变成Whisper
23:33.074–23:35.074
zh在本地把视频转成文字
23:35.074–23:37.194
zh千万再在本地完成摘要
23:37.194–23:38.974
zh提纲 标题和章节建议
23:38.974–23:41.694
zh最后把转写稿和整理结果一起返回
23:41.694–23:43.654
zh整个过程中的语音和文本内容
23:43.654–23:45.694
zh都可以在自己的Mac上完成处理
23:45.694–23:48.094
zh到这里整套工作流已经跑通了
23:48.094–23:50.594
zh不过直接使用Curve调用正式外部后格式
23:50.594–23:52.554
zh中端反围的是标准的JSON
23:52.554–23:54.514
zh所以会看到大量的斜杠N
23:54.514–23:56.114
zh引号和转译字符
23:56.114–23:57.794
zh比如斜杠N其实就是换
23:57.794–23:58.774
zh并不是烂码
23:58.774–24:02.514
zh只是JSON保存Markdown和多项文字时的正常格式
24:02.514–24:04.654
zh为让最终结果更加适合阅读
24:04.654–24:07.214
zh我们可以再用JQ把JSON里的转写稿
24:07.214–24:08.914
zh和签文之力结果提取出来
24:08.914–24:10.274
zh如果已经安装Homebrew
24:10.274–24:12.314
zh则可以执行Brew install GQ
24:12.314–24:13.414
zh安装完整后
24:13.414–24:16.094
zh把刚才电用正式工作流的命令稍微改一下
24:22.315–24:24.305
zh如果只是想看签问整理后的结果
24:24.305–24:25.445
zh也可以进一步讲话
24:28.320–24:30.370
zh如果只需要Whisper的完整转眼稿
24:30.370–24:31.350
zh也可以这么改
24:34.326–24:36.336
zh哦对了如果你的Mac没有安装Homebrew
24:36.336–24:38.376
zh也不一定非要额外安装JQ
24:38.376–24:40.396
zh前面已经准备了Python 3.1
24:40.396–24:43.876
zh可以直接用Python自带的JSON模块完成同样的处理
24:49.353–24:51.983
zh视频最后在补一个实际使用时一定会碰到的问题
24:51.983–24:53.763
zhMac mini重启以后
24:53.763–24:55.443
zh哪些东西需要重新打开
24:55.443–24:58.323
zh我们前面搭建的模型和数据都保存在硬盘里
24:58.323–25:00.183
zh不需要重新安装或者重新下载
25:00.183–25:00.962
zh但Olama,
25:00.962–25:02.074
enOpenWeb UI,
25:02.074–25:05.523
zhWhisper Server和N8N这些运行中的服务需要重新启动
25:05.523–25:07.263
zh建议按照下面这个顺序来
25:07.263–25:09.143
zh首先启动最底层的Olama
25:09.143–25:11.003
zh如果安装的是MicOS版的Olama
25:11.003–25:12.743
zh直接打开Olama app即可
25:12.743–25:15.583
zh也可以在中端里执行Open-AOlama
25:15.583–25:18.143
zh然后可以检查Olama是否已经恢复
25:18.143–25:20.903
zh如果能够正常返回Olama的版本信息
25:20.903–25:23.143
zh就说明底层模型服务已经正常
25:23.143–25:25.083
zh接下来再来启动OpenWeb UI
25:25.083–25:28.903
zh充计后可以先确认MacMe的局域网IP地址有没有发生变化
25:28.903–25:31.863
zh因为我们前面的启动命令里填写过这个地址
25:31.863–25:33.543
zh如果地址没有发生变化
25:33.543–25:34.763
zh就继续使用之前的IP
25:34.763–25:35.863
zh如果变化了
25:35.863–25:37.783
zh下面命令行里的也要一起替换
25:37.783–25:39.643
zh这个中端装口需要保持运行
25:39.643–25:40.883
zh然后617访问
25:40.883–25:42.843
zh127.0.0.1网号3000
25:42.843–25:44.203
zh局域网中的其他设备
25:44.203–25:46.463
zh仍然访问MacMe的IP地址网号3000
25:46.463–25:50.643
zh长期使用的话也可以在路由器里给Mac mini固定一个局网地址
25:50.643–25:52.763
zh选择每次重建后来进行检查
25:52.763–25:55.483
zh如果只是聊天知识库或者OpenWeb UI
25:55.483–25:57.443
zh其实不用一直启动Whisper Server
25:57.443–26:01.983
zh只有需要运行视频转写或者后面的N8n视频工作流时再打开即可
26:01.983–26:03.983
zh同样这个中端创口需要保持运行
26:03.983–26:05.703
zh可以打开另一个中端测试
26:05.703–26:07.483
zh只要服务器能够这样响应
26:07.483–26:09.703
zh就可以继续交给N8n来调用了
26:09.703–26:11.763
zh接着打开Docker Desktop App
26:11.763–26:16.083
zh因为我们创建N8n容器时已经设置了Restart Unless Stoped
26:16.083–26:17.143
zh所以正常情况下
26:17.443–26:18.543
zh只要Docker app启动
26:18.543–26:20.723
zh之前的N8n容器也会自动恢复运行
26:20.883–26:22.883
zh不需要重新执行那一串Docker run
26:23.283–26:24.883
zh可以先检查Docker PS
26:24.883–26:26.523
zh如果Liviar里能够看到N8n
26:26.523–26:28.483
zh就说明N8n已经自动恢复
26:28.683–26:29.483
zh如果没有启动
26:29.483–26:31.783
zh可以手动执行Docker StartN8n
26:31.943–26:35.383
zh然后留言器打开127.0.0.1-5678
26:35.823–26:36.983
zh如果能够进入N8n
26:36.983–26:39.143
zh就说明自动化服务已经恢复正常
26:39.243–26:42.283
zh到这里我们就从一台普通的Mac mini开始
26:42.283–26:45.443
zh完成一套相对完整的家庭本地AI服务
26:45.443–26:47.443
zhOlama负责运行AI模型
26:47.443–26:50.443
zhOpenWeb UI提供对话界面和统一API
26:50.443–26:53.303
zhEmbedding和RAG负责自己的文档知识库
26:53.303–26:56.223
zhGLM OCR处理图片和扫描件
26:56.223–26:58.823
zhWhisper.cpp负责视频录音转写
26:58.823–27:03.003
zh再通过N8N把这些能力串成一套简单的自动化工作流
27:03.003–27:06.503
zh这套方案其实不只是在Mac上跑了一个AI模型
27:06.503–27:11.003
zh当对话、文档、图片、映视频和自动化都连起来之后
27:11.003–27:13.883
zh这台Mac mini才开始从一台跑模型的电脑
27:13.883–27:16.123
zh变成一台可以长期放在家里
27:16.123–27:18.763
zh由不同设备随时电用的AI服务器
27:18.763–27:21.523
zh当然这只是一个非常技术的框架
27:21.523–27:23.543
zh后面还可以继续加入更大的模型
27:23.543–27:24.383
zh自己的资料库
27:24.383–27:25.323
zh手机快据指令
27:25.323–27:26.923
zh甚至更多自动化流程
27:26.923–27:29.223
zh大家完全可以根据自己的Mac配置
27:29.223–27:31.023
zh和实际需求继续往上搭
27:31.023–27:33.363
zh先把这套技术环境稳定跑起来
27:33.363–27:34.683
zh再逐步增加功能
27:34.683–27:37.163
zh更适合第一次接触本地AI的各位
27:37.163–27:37.663
zh好了
27:37.663–27:39.603
zh那么以上就是本期视频的全部内容了
27:39.603–27:41.363
zh如果觉得本期视频有所帮助的话
27:41.363–27:43.623
zh还请不要忘记点赞链加工主支持一下
27:43.623–27:44.183
zh就是李军
27:44.183–27:45.543
zh我们下期视频再见
27:45.543–27:46.083
zh拜拜
0:00.000–0:00.940
Hello 大家好我是周日金
0:00.940–0:03.620
AI这两年离咱们普通用户越来越近
0:03.620–0:06.080
现在甚至不需要单独买一台服务器
0:06.080–0:08.440
我们就可以直接把手头闲置在Mac
0:08.440–0:11.000
变成一台属于自己的本地AI服务器
0:11.000–0:13.000
这期视频我会从零开始
0:13.000–0:14.429
带大家把Olama、
0:14.429–0:15.857
OpenWeb UI、
0:15.857–0:16.429
REG、
0:16.429–0:17.000
OCR、
0:17.000–0:18.143
Whisper.
0:18.143–0:20.000
cpp和N8N一步步串起来
0:20.000–0:21.420
这套方案的重点就是
0:21.420–0:25.420
模型和大部分的数据都运行在自己本地的Mac上
0:25.420–0:27.140
也不要求特别高的配置
0:27.140–0:29.160
如果大家对这类玩法感兴趣
0:29.160–0:32.780
后面还可以继续带大家折腾本地图片和视频生成
0:32.780–0:34.040
本地AI编程
0:34.040–0:36.180
以及把AI介入Home Assistant
0:36.180–0:38.800
通过自然语言控制家里的智能设备
0:38.800–0:40.020
视频正式开始前
0:40.020–0:42.180
先求一波一进三连加关注支持一下
0:42.180–0:43.920
这样以后有新的教程更新
0:43.920–0:45.340
也能第一时间受到推送
0:45.340–0:46.100
非常感谢
0:46.100–0:49.520
接下来我们就从我的这台Mac mini来开始
0:54.742–0:56.332
在开始下载模型之前
0:56.332–0:58.892
我们需要先在Mac上安装OLAMA
0:58.892–1:00.212
你可以把它理解为
1:00.212–1:03.992
让普通用户可以在本地运行AI大模型的运行环境
1:03.992–1:06.692
直接前往OLAMA的官网下载对应的安装包
1:06.692–1:10.252
然后拖动到MacOS用程式文件夹就可以了
1:10.252–1:12.952
平时使用ChatGBT Cloud这类AI服务时
1:12.952–1:15.272
模型都是运行在云端服务器上
1:15.272–1:16.952
而OLAMA要做的事情
1:16.952–1:20.772
就是把像Deepseek签问LAMA这类开源模型
1:20.772–1:22.212
下载安装到你的Mac上
1:22.212–1:24.252
让他们直接利用本机的CPU
1:24.252–1:25.332
和GPU运行
1:25.332–1:27.192
安装后Olama并打开之后
1:27.192–1:28.532
下一步就是下载模型
1:28.532–1:29.992
不过这里需要注意啊
1:29.992–1:32.572
本DAI和ChatGPT这类云端的模型
1:32.572–1:33.332
最大的区别
1:33.332–1:35.812
就是模型大小会直接影响运行体验
1:35.812–1:38.612
所以不能盲目追求越大的模型就越好
1:38.612–1:41.532
我这里使用的是一台M4入门款的Mac mini
1:41.532–1:43.072
采用16GB的同一列存
1:43.072–1:44.912
加256GB的固态硬盘
1:44.912–1:47.292
确认Olama的服务在正常运行后
1:47.292–1:49.132
我们在MacOS的中段App中
1:49.132–1:50.432
输入这三条命令
1:50.432–1:52.252
它们分别负责不同的功能
1:52.252–1:53.872
第一个是大约模型
1:53.872–1:55.692
也就是本地AI的大脑
1:55.692–1:56.772
负责日常聊天
1:56.772–1:57.492
内容生成
1:57.492–1:58.732
总业资料等任务
1:58.732–2:00.972
其中4B代表40亿参数
2:00.972–2:03.672
Q4KM代表经过4B特量化
2:03.672–2:05.632
可以在降低模型这样的同时
2:05.632–2:07.172
保持不错的运行效果
2:07.172–2:09.692
是目前比较适合普通Mac的选择
2:09.692–2:11.432
第二个是向量模型
2:11.432–2:12.832
主要用于知识库检索
2:12.832–2:15.312
如果你以后想让AI读取自己的PDF
2:15.312–2:16.592
文档 视频稿件
2:16.592–2:18.432
然后根据这些资料回答问题
2:18.432–2:20.072
就需要通过embedding模型
2:20.072–2:22.192
先帮AI找到相关内容
2:22.192–2:24.792
第三个是欧塞AR文字试园模型
2:24.792–2:25.912
负责处理图片
2:25.912–2:27.472
扫描版PDF等内容
2:27.472–2:29.332
把图片里的文字提许出来
2:29.332–2:31.332
再交给语言模型进行分析
2:31.332–2:33.612
这里之所以选择签问的AR模型
2:33.612–2:35.732
是因为签问是目前比较成熟的
2:35.732–2:36.752
开源大模型之一
2:36.752–2:39.332
对中文理解和中文生成比较友好
2:39.332–2:41.432
其次是它提供的模型规格丰富
2:41.432–2:43.712
从4B到更大的参数版本
2:43.712–2:45.372
可以适配不同配置的Mac
2:45.372–2:46.152
还有一个是
2:46.152–2:48.192
它在OLAMA里的支持比较完善
2:48.192–2:50.012
安装和电用也都比较简单
2:50.012–2:51.272
当然除了签问
2:51.272–2:53.812
DeepSeq、Lama等模型也都可以运行
2:53.812–2:56.092
大家可以根据自己的需求进行选择
2:56.092–2:59.012
至于不同的Mac应该选择多大的模型
2:59.012–3:01.252
主要看新变性能和统一内存的大小
3:01.252–3:04.452
8GB内存的Mac建议先从4B级别模型开始
3:04.452–3:07.872
16GB内存运行4B会相对轻松
3:07.872–3:11.332
也可以在实际内存压力云雪情况下尝试9B
3:11.332–3:14.632
而24GB、32GB以及更高内存的Mac
3:14.632–3:16.492
则可以继续尝试更大的规格
3:16.492–3:20.172
但具体体验还会受到上下文长度和后台任务的影响
3:20.172–3:21.532
这里需要注意啊
3:21.532–3:23.412
模型标签不能随便改数字
3:23.412–3:25.252
如果继续使用千万3.5
3:25.252–3:29.092
目前OLAMA还提供9B 27B 35B等更大规格
3:29.092–3:32.512
具体名称一定以OLAMA模型库实际存在的标签为准
3:32.512–3:35.152
那咱们还是先把本地AI服务器跑起来
3:35.152–3:37.412
后续再根据实际需求升级模型
3:37.412–3:39.692
接下来我们在Microsoft的中段APP中
3:39.692–3:41.872
输入以下命令OLAMA LIST
3:41.872–3:44.132
查看是否已经全部下载完成
3:44.132–3:46.632
如果前面下载的模型都正常列出来
3:46.632–3:49.892
就可以来简单试一下模型能不能在本地正常运行
3:49.892–3:51.072
输入制传命令
3:51.072–3:52.032
olama run
3:52.032–3:52.892
千万3.5
3:52.892–3:54.532
4b-q4km
3:54.532–3:55.892
然后随便发一句话
3:55.892–3:56.632
比如你好
3:56.632–3:59.072
如果能正常给出回复就没问题了
3:59.072–4:01.052
随后输入制传命令结束对话
4:01.052–4:01.552
Bye
4:01.552–4:03.652
之后我们就可以停止运行
4:03.652–4:04.632
以释放资源
4:04.632–4:05.772
输入制传命令
4:05.772–4:06.832
olama stop
4:06.832–4:07.652
千万3.5
4:07.652–4:09.072
4b-q4km
4:09.072–4:10.692
然后再输入制传命令
4:10.692–4:11.472
olama ps
4:11.472–4:14.132
查看这个AR大模型是否仍在运行
4:14.132–4:15.452
此时应该唯空
4:15.452–4:18.192
那么就说明我们的大模型已经没有在运行了
4:18.192–4:20.332
接下来咱们就要开始准备部署
4:20.332–4:22.332
家庭局网AN对话见面了
4:27.604–4:30.954
前面我们已经通过Olama把AI模型运行在Mac上
4:30.954–4:33.494
但是目前还需要通过中端的进行操作
4:33.494–4:35.274
对于日常使用来说不太方便
4:35.274–4:37.194
所以接下来我们就要给他搭建一个
4:37.194–4:39.054
类似ChatGB的网页界面
4:39.054–4:40.714
这里使用OpenWebUI
4:40.714–4:43.254
也就是让Olama负责运行AI模型
4:43.254–4:45.614
OpenWebUI负责提供交互界面
4:45.614–4:46.794
部署完成后
4:46.794–4:48.834
家里的手机平板电脑都可以通过
4:48.834–4:50.314
浏览器放完这台Mac mini
4:50.314–4:52.294
直接使用自己的本地AI
4:52.294–4:54.594
考虑到中国大陆用户的网络环境
4:54.594–4:56.914
这里直接通过Python安装OpenWebUI
4:56.914–4:59.434
同时Olama继续只监听本机地址
4:59.434–5:00.914
不会直接报道网络中
5:00.914–5:04.174
本教程固定使用OpenWebUI 0.11.0版本
5:04.174–5:06.574
不使用latest或滚动更新版本
5:06.574–5:09.394
避免版本变化导致操作流程不一炸
5:09.394–5:11.014
首先准备Python环境
5:11.014–5:13.014
如果你的Mac已经安装Homebrew
5:13.014–5:16.114
则可以输入brew install python at 3.11
5:16.114–5:17.554
如果没有安装Homebrew
5:17.554–5:19.494
也可以直接前往Python官方网站
5:19.494–5:22.174
下载安装Python 3.11对应的MacOS安装包
5:22.174–5:24.654
后面如果会继续折腾这类工具
5:24.654–5:26.114
建议提前装好Homebrew
5:26.114–5:27.854
管理和升级会方便不少
5:27.854–5:30.534
接下来创建OpenWeb UI独立运行环境
5:30.534–5:32.834
避免影响系统里的其他python项目
5:32.834–5:35.014
后续相关代码我不再一一进行解释
5:35.014–5:35.834
如果有看不懂
5:35.834–5:38.054
可以查看代码上方的文本注释
5:50.272–5:52.622
然后通过轻滑镜像安装OpenWebUI
6:02.916–6:03.806
安装完成后
6:03.806–6:06.026
第一次启动将以只允许本机访问
6:06.026–6:07.926
先完成账号和安全设置
6:07.926–6:09.306
等命令跑起来以后
6:09.306–6:10.886
不要关闭这个中端窗口
6:10.886–6:13.386
因为OpenWeb UI的服务就运行在这里
6:16.212–6:18.762
然后617打开127.0.0.1
6:18.762–6:19.582
网好3000
6:19.582–6:21.702
第一次进入需要充电账号
6:21.702–6:23.762
第一个账号就会自动成为管理员
6:27.421–6:28.451
进入管理后台后
6:28.451–6:29.931
前往设置身份验证
6:29.931–6:31.451
把newsign apps关闭
6:31.451–6:33.451
也就是不允许新用户自由注册
6:33.451–6:36.571
同时暂时不要安装来源不明的第三方Tools
6:36.571–6:37.991
Functions或Pipelines
6:37.991–6:40.991
接着就可以在流量器打开127.0.0.1
6:40.991–6:42.431
冒号11434
6:42.431–6:44.551
-API-Version
6:44.551–6:46.891
确认欧拉玛本地API正常响应
6:46.891–6:48.131
回到OpenWeb UI
6:48.131–6:50.371
在检查之前下载的前文3.5
6:50.371–6:53.771
4B-Q4KM是否已经出现在母型列表当中
6:53.771–6:54.891
确认没有问题后
6:54.891–6:55.871
在中端App中
6:55.871–6:58.411
按Ctrl加C停止OpenWeb UI
6:58.411–7:00.171
接下来开放家庭局域网
7:00.171–7:03.731
实际在系统设置网络中查看Mac mini的局域网IP
7:03.731–7:06.051
实际操作需要替完成你自己的IP
7:06.051–7:07.851
重新启动OpenWeb UI
7:11.000–7:14.350
现在Mac mini本机可以继续访问127.0.0.1
7:14.350–7:15.070
网号3000
7:15.070–7:17.950
并使用刚才创建的管理员账号进行登录
7:17.950–7:19.710
通过家庭网络里的手机
7:19.710–7:23.550
电脑则可以通过Mac mini的IP地址加段稿号3000来访问
7:23.550–7:25.510
同样使用刚才的账号来登录
7:25.510–7:26.910
这时候可以随便问您问题
7:26.910–7:29.370
看看局域网访问和模型交用是否正常
7:29.370–7:31.030
如果下设备都无法打开
7:31.030–7:32.350
依次可以清查几个地方
7:32.350–7:33.590
最后提醒一下
7:33.590–7:35.630
这里搭建的家庭局域网AI服务器
7:35.630–7:37.410
不会把服务暴露到公网
7:37.410–7:39.610
因此不需要进行路由器短口转发
7:39.610–7:42.530
也不要直接把OpenWeb AI开放到互联网环境
7:42.530–7:45.010
而这样配置后保持终端App不关闭
7:45.010–7:46.710
AI模式运行在自己的Mac上
7:46.710–7:48.950
数据只在家庭网络里进行流转
7:48.950–7:52.870
同时手机平板和电脑都可以共享这台本地AI服务器
7:58.147–8:00.337
前面OpenWeb UI已经可以这张访问了
8:00.337–8:02.537
接下来我们再给整个家庭AI服务器
8:02.537–8:04.377
建立一个统一的API接口
8:04.377–8:06.937
这样以后不管是N8N手机会议指令
8:06.937–8:09.357
还是其他支持OpenAI API的程序
8:09.357–8:11.217
都统一连接OpenWeb UI
8:11.217–8:13.097
不需要直接访问底层的奥拉玛
8:13.097–8:14.117
那这样的好处是
8:14.117–8:17.797
模型、账号和权限都可以在OpenWeb UI这一层统一管理
8:17.797–8:19.037
后面更换模型时
8:19.037–8:21.097
也不用重新修改每一个应用
8:21.097–8:22.617
时间咱们回到OpenWeb UI
8:22.617–8:25.057
点击左下角头像依次进入设置
8:25.057–8:27.557
身份验证找到API密钥并打开
8:27.557–8:30.177
如果界面提供API密钥端点限制
8:30.177–8:31.137
也一并开启
8:31.137–8:32.477
然后填写这个
8:32.477–8:37.377
这样生成的key就只允许访问模型列表和聊天接口
8:37.377–8:39.317
接下来进入账号API密钥
8:39.317–8:42.037
点击右侧的显示创建新的API密钥
8:42.037–8:44.357
生成密钥通常会以SK开头
8:44.357–8:47.357
这个密钥相当于访问我们家庭i服务器的密码
8:47.357–8:49.317
不要直接公开或者分享出去
8:49.317–8:52.657
如果后面准备长期让N8N这类的自动化工具使用
8:52.657–8:55.157
建议专门创建一个普通的本地账号
8:55.157–8:57.197
再用这个账号生成API密钥
8:57.197–8:59.377
不要长期使用管理员账号的密钥
8:59.377–9:02.057
因为密钥会计权创建这个账号的权限
9:02.057–9:04.877
而且一个账号通常只保留一个API密钥
9:04.877–9:06.957
接着我们来测试接口是否正常
9:06.957–9:08.997
打开一个新的终端APP窗口
9:08.997–9:12.297
把下面的命令中的SK换成刚才生成的密钥
9:12.297–9:13.597
如果结构正常
9:13.597–9:16.897
终端会访问当前OpenWeb UI可以调用的模型列表
9:16.897–9:20.297
这里可以顺便记一下返回结果里模型队的真实ID
9:20.297–9:23.477
因为后面其他地方调用AI时就需要填写这个名称
9:23.477–9:25.517
接下来再来测试聊天接口
9:25.517–9:28.917
同样的记得把SK开头的这串换成刚才生成的密钥
9:28.917–9:32.477
而model后面需要填写刚才模型列表里面实际反馈的ID
9:32.477–9:35.057
如果你下载的是其他签问或者其他模型
9:35.057–9:36.377
就替完成对应的模型
9:36.377–9:39.117
如果最后反馈Json里能够看到API正常
9:39.117–9:41.757
就说明这一套接口已经可以正常使用了
9:41.757–9:43.797
签问3.5在开启思考时
9:43.797–9:46.997
反馈内容里可能还会出现reasoning content这一类字段
9:46.997–9:48.077
这是正常现象
9:48.077–9:52.357
到这里我们就相当于给整个家庭AI服务器建立一个统一的入口
9:52.357–9:54.897
最底层人是Olama负责运行模型
9:54.897–9:58.157
上面的OpenWeb UI统一管理模型和API
9:58.157–10:01.797
在网上则可以接N8N手机快递指令或者其他应用
10:01.797–10:05.277
后面不管增加多少个客户端都尽量连接OpenWeb UI
10:05.277–10:07.637
而不是让每台设备直接访问欧拉玛
10:07.637–10:09.517
整个架构会更容易管理
10:14.685–10:17.535
前面我们已经把本地AI和聊天的API都搭好了
10:17.535–10:19.975
接下来就再补上一个非常熟能功能
10:19.975–10:21.315
Cell文档知识库
10:21.315–10:22.515
也就是RAG
10:22.515–10:25.455
RAG可以列成先从你的资料里找内容
10:25.455–10:26.915
再交给AI声称回答
10:26.915–10:28.655
这样以后不管是自己的PDF
10:28.655–10:30.855
说明书工作文档还是视频稿
10:30.855–10:32.035
都可以放进知识库
10:32.035–10:34.255
让AI尽量根据这些资料来回答
10:34.255–10:36.255
而不是只靠模型本身的记忆
10:36.255–10:38.975
首先进入OpenWeb UI试试里的文档页面
10:38.975–10:40.875
进入模型引擎选择OLAMA
10:40.875–10:42.235
API密钥可以留空
10:42.235–10:44.675
地址填写127.0.0.1
10:44.675–10:46.035
冒号11434
10:46.035–10:47.095
进入模型出入
10:47.095–10:48.815
我们在视频一开始就下载好的
10:48.815–10:50.895
轻文3-embadding0.6b
10:50.895–10:52.455
而这里顺便解释一下
10:52.455–10:53.875
这个模型不负责聊天
10:53.875–10:55.735
它的工作是把文档找完成
10:55.735–10:57.635
便于检索的向量数据
10:57.635–10:58.495
只要你提问以后
10:58.495–11:01.135
系统才能快速找到和问题最相关的资料
11:01.135–11:03.275
其他参数可以先按照这一套来设置
11:03.275–11:04.635
大部分是我认的
11:04.635–11:07.195
这些参数主要是在检索效果和上下文本
11:07.195–11:09.215
占用之间做一个比较稳妥的平衡
11:09.215–11:10.755
比如快大小可以列成
11:10.755–11:12.675
每次把文档切成多大片段
11:12.675–11:14.815
快重叠则是在相邻片段之间
11:14.815–11:16.015
保留的部分重复内容
11:16.015–11:17.855
避免一句话刚好被重点切断
11:17.855–11:19.435
TuboK代表每次提问
11:19.435–11:21.515
最多取回多少个相关片段
11:21.515–11:22.975
这里先设置为3
11:22.975–11:24.195
并不是越大越好
11:24.195–11:25.575
因为塞进太多资料
11:25.575–11:27.975
反而会占模型有限的上下文空间
11:27.975–11:29.075
接下来我们创建一个
11:29.075–11:30.275
非常简单的测试文件
11:30.275–11:32.735
方便确认RA器是否真的正常工作
11:32.735–11:34.435
用任意文本编定器
11:34.435–11:35.855
新建一个Text文本
11:35.855–11:36.895
如果你用的是
11:36.895–11:38.695
MicroOS自带的文本编辑App
11:38.695–11:40.835
记得在菜单里选择制作成文本
11:40.835–11:42.575
比如里面写上这些内容
11:42.575–11:45.435
然后保存为家庭AI测试资料.txt
11:45.435–11:46.615
回到OpenWebUI
11:46.615–11:48.515
找到左侧边来的工作空间
11:48.515–11:50.075
再点击顶部的知识库
11:50.075–11:51.935
最后点击右上角的创建
11:51.935–11:54.155
名称填写家庭AI测试库
11:54.155–11:55.415
目标可以简单写真
11:55.415–11:58.655
用于测试本地RIG文档检索和应用功能
11:58.655–12:00.035
知识库创建完之后
12:00.035–12:01.415
再点击右上角的加号
12:01.415–12:02.415
选择上传文件
12:02.415–12:04.935
把刚才的txt文件上传进去
12:04.935–12:07.735
后面也可以上传带有文字层的PDF
12:07.735–12:09.695
Docx或Markdown文档
12:09.695–12:10.615
上乘完之后
12:10.615–12:12.335
在新兑化的聊天输入框里
12:12.335–12:14.695
通过警号手动附加这个支持库
12:14.695–12:16.735
而我这里为了教程演示方便
12:16.735–12:17.655
先手动选择
12:17.655–12:19.695
因为小参数模型主动判断
12:19.695–12:20.735
什么时候动用支持库
12:20.735–12:21.875
有时候不够稳定
12:21.875–12:23.675
然后我们可以问一个问题
12:23.675–12:25.135
只依据支持库回答
12:25.135–12:26.935
项目代号和设备维护时间
12:26.935–12:27.655
氛围是什么
12:27.655–12:28.815
请给出引用
12:28.815–12:30.035
正常情况下
12:30.035–12:30.975
耐心等待一会儿
12:30.975–12:33.475
他应该回答项目代号是清零
12:33.475–12:35.335
设备维护时间是每月第一
12:35.335–12:36.355
周六上午十点
12:36.355–12:39.055
而且回答旁边能够看到对应的资料引用
12:39.055–12:42.895
那么这套最基础的REG知识库就算大奖成功了
12:42.895–12:43.975
不过这样配置下来
12:43.975–12:46.095
你可能会发现还有一个地方容易踩坑
12:46.095–12:47.875
如果你的PDF是扫描件
12:47.875–12:50.055
本身没有可以复制的文字层
12:50.055–12:52.015
就不要拿它来测试REG了
12:52.015–12:54.775
因为知识库首先需要能够读取里面的文字
12:54.775–12:56.035
才能进行后续的处理
12:56.035–12:58.315
所以这种文件就需要先经过OCR
12:58.315–13:01.335
把图片里的文字设备成TXC或者Markdown
13:01.335–13:03.275
再上传到知识库来进行处理
13:03.275–13:06.255
接下来我们就继续把本地OCR的功能
13:06.255–13:07.235
也接近来
13:12.446–13:14.796
前面我们已经让AI能够读取次的文档
13:14.796–13:16.976
接下来再补上图片理解和OCR
13:16.976–13:19.816
也就是让这台本地AI不只能读文字
13:19.816–13:20.956
还可以看图片
13:20.956–13:22.856
那这里先区分两个概念
13:22.856–13:25.436
普通图片理解更适合看一张图里有什么
13:25.436–13:26.696
界面再显示什么
13:26.696–13:28.496
再顺便识别其中的文字
13:28.496–13:31.496
OCR则更专注于把图片里的文字
13:31.496–13:34.116
表格或者图表内容尽可能提取出来
13:34.116–13:36.976
先在OpenWeb UI里选择我们前面使用的
13:36.976–13:39.316
千万305 4B-KL4KM
13:39.316–13:40.816
如果你的Mac配置更高
13:40.816–13:42.016
也可以用9B的版本
13:42.016–13:44.916
上传一张同时包含物体和文字图片
13:44.916–13:45.596
然后输入
13:45.596–13:46.796
先描述画面内容
13:46.796–13:48.516
再逐项提取可见文字
13:48.516–13:50.496
不确定的部分标注为不确定
13:50.496–13:51.596
不需要自信补圈
13:51.596–13:53.736
这里可以分别拿产品包装
13:53.736–13:54.716
软件界面截图
13:54.716–13:55.456
中文表格
13:55.456–13:57.436
或者已经做好隐私透明的发票
13:57.436–13:59.136
和数据照片来测试一下
13:59.136–14:01.116
这样可以比较直观的判断出
14:01.116–14:02.956
模型到底是理解了图片内容
14:02.956–14:05.396
还是只是把里面的文字给识别出来
14:05.396–14:07.476
如果你出现了类似我这样的提示
14:07.476–14:09.156
就前往OpenWeb UI的设置
14:09.156–14:09.716
模型
14:09.716–14:11.556
找到刚才你前面使用的模型
14:12.016–14:12.656
编辑界面
14:12.656–14:15.296
找到高级参数下的NUMCTX
14:15.296–14:15.796
Olama
14:15.796–14:17.456
针对我16GB的Mac mini
14:17.456–14:19.096
将数字更改为8192
14:19.096–14:21.156
然后重复上的操作就可以了
14:21.156–14:22.896
如果我们的目标不是理解图片
14:22.896–14:25.376
而是尽可能把图片里的文字给提取出来
14:25.376–14:28.536
就可以使用我们前面已经下载好的GLM OCR
14:28.536–14:30.036
OCR模型运行前
14:30.036–14:32.276
如果较大的千万模型还占着同一印存
14:32.276–14:33.636
先可以把它停掉
14:33.636–14:35.856
接下来我们准备好需要识别图片
14:35.856–14:37.456
放到一个统一的文件夹中
14:37.456–14:38.976
比如我这个目录像
14:38.976–14:41.256
对于我们Mac仿达中的用户文件夹
14:41.256–14:42.216
AI test
14:42.216–14:44.636
这里手动新建一个test的文件夹就可以了
14:44.636–14:46.616
对于需要识别不同的内容图片
14:46.616–14:48.676
比如普通收据表格图表
14:48.676–14:50.096
都可以使用不同的命令
14:50.096–14:51.756
注意命令结尾的文件名
14:51.756–14:53.776
需要换成你自己图片的文件名
14:53.776–14:54.876
第一次测试时
14:54.876–14:56.576
建议每次只处理一张图片
14:56.576–14:58.916
先确认整套工作流能够稳定运行
14:58.916–15:00.956
如果遇到扫描PDF
15:00.956–15:03.876
也不用一开始就折腾完整的PDF解析工具
15:03.876–15:05.276
最简单办法就是
15:05.276–15:07.476
先用Microx自带的预览打开PDF
15:07.476–15:09.176
把其中一页导成PN器
15:09.176–15:11.496
再交给GLM OCR进行处理
15:11.496–15:13.676
等确认单页OCR没问题后
15:13.676–15:15.796
再考虑批量处理整份文档
15:15.796–15:17.996
识别出来的内容还可以继续利用
15:17.996–15:19.976
保存成TXT或者Markdown
15:19.976–15:22.576
再上传到我们上一节创建的知识库
15:22.576–15:24.216
然后交给签问做摘要
15:24.216–15:26.136
自端整理或者检索问答
15:26.136–15:28.056
那么整个流程就传起来了
15:28.056–15:30.996
如果OCR出现空白重复或者乱码
15:30.996–15:32.196
可以先更新Olam
15:32.196–15:34.276
然后每次只处理一张图片
15:34.276–15:35.436
图片过大时
15:35.436–15:39.016
可以把长辨锁到大约1600至2200像素
15:39.016–15:41.156
并优先使用PNG或者GPG
15:41.156–15:43.976
同时检查原图有没有明显模糊
15:43.976–15:45.056
倾斜反光
15:45.056–15:47.056
这些都会直接影响识别效果
15:52.240–15:54.070
除了文字和图片之外
15:54.070–15:55.950
本地还有一个非常实用的场景
15:55.950–15:57.550
就是处理视频和录音
15:57.550–15:59.410
比如把会议录音转成文字
15:59.410–16:00.910
把视频自动生成字幕
16:00.910–16:04.210
或者把自己的素材库快速整理成可搜索的文本
16:04.210–16:06.190
这里我们使用Whisper.cpp
16:06.190–16:08.590
它是Whisper模型C++实现的
16:08.590–16:10.610
针对Apple Silicon提供Mental加速
16:10.610–16:13.350
可以直接利用Mac的GPU进行本地转写
16:13.350–16:15.230
首先安装需要用到的工具
16:15.230–16:17.830
FMMP1G负责处理音频格式
16:17.830–16:20.150
Whisper.cpp负责语音识别
16:20.150–16:22.090
如果你的Mac已经安装Homebrew
16:22.090–16:23.930
可以直接输入代码来进行安装
16:23.930–16:25.670
如果你仍然没有安装Homebrew
16:25.670–16:28.310
安装whisper.cpp可以走圆码编译路线
16:28.310–16:29.790
不过对于普通用户来说
16:29.790–16:31.810
这一步会比Homebrew更复杂一些
16:31.810–16:34.350
还需要提前安装Xcode的Command Align Tools
16:34.350–16:35.690
这里就不展开了
16:35.690–16:36.630
安装完成后
16:36.630–16:39.130
可以通过下面两个命令来确认是否正常
16:39.130–16:40.730
接下来下载Whisper模型
16:40.730–16:42.190
我这里选择的是这个
16:42.190–16:44.570
这是一个支持中文和多语言的模型
16:44.570–16:46.830
相比完整Large模型体积更小
16:46.830–16:48.710
同时保留了比较好的转眼效果
16:48.710–16:50.150
更适合Mac本地运行
16:50.150–16:53.170
我们先创建存放模型和临时文件的目录
16:53.170–16:54.190
然后下载模型
16:54.190–16:57.230
下载完整后再计算一次SHA-1的值
16:57.230–17:01.150
方便和whisper.cpp模型文档公开的接应值进行核对
17:01.150–17:03.550
模型准备好后就可以开始处理视频
17:03.550–17:06.270
假设你的视频文件位于这个文件夹
17:06.270–17:09.330
也就是MicroOS用户目录的影片文件夹当中
17:09.330–17:12.070
大家根据自己的实际文件存储位置进行修改
17:12.070–17:17.050
首先使用FMMP1G把视频里的音频转换成Whisper更适合处理的格式
17:17.050–17:18.890
这几个参数简单介绍一下
17:18.890–17:20.430
VM表示去掉视频
17:20.430–17:21.250
只保留音频
17:21.250–17:24.630
AR16表示转换成16000赫兹的采样率
17:24.630–17:26.310
AC1表示单身道
17:26.310–17:29.230
PCM S16LE则是转换成Whisper
17:29.230–17:31.070
更容易处理的WAB格式
17:31.070–17:32.330
接下来运行Whisper
17:32.330–17:34.370
同时生成文字稿和字幕文件
17:34.370–17:37.270
-M用来指定我们前面下载的Whisper模型
17:37.270–17:39.890
-F指定需要转写的音频文件
17:39.890–17:41.670
-LZH告诉我们模型
17:41.670–17:43.490
这段文字主要内容是中文
17:43.490–17:45.730
-Prompt则可以提前提供一些
17:45.730–17:47.370
容易识别错误的中有名词
17:47.370–17:48.310
比如Mac mini
17:48.310–17:49.190
Apple Silicon
17:49.190–17:50.410
Olama和千问
17:50.410–17:51.930
对于科技类视频有其有用
17:51.930–17:54.190
比如这里我就加上了我的Lookup Weekly
17:54.190–17:58.750
后面的-otxt-oosrt和-ovtt
17:58.750–18:00.950
分别让它同时生成TXT文字稿
18:00.950–18:03.310
SRT字幕和VTT字幕
18:03.310–18:04.690
最后通过-off
18:04.690–18:06.770
指定输出文件的位置和名称
18:06.770–18:09.030
运行完成后会生成这些文件
18:09.030–18:10.890
其中TXT是纯文字稿
18:10.890–18:13.430
适合后续交给AI总结或者整理
18:13.430–18:15.330
SRT是常见的字幕格式
18:15.330–18:16.810
可以直接导入紧接软件
18:16.810–18:19.750
VTT是主要用于网页播放器的字幕
18:19.750–18:21.050
如果是8GB的Mac
18:21.050–18:25.730
也可以先尝试这里的Large-V3-Turbo-Q50电话模型
18:25.730–18:28.670
如果实际转写时内存压力较大或者速度不理想
18:28.670–18:30.970
再换成体积更小的Small多语言模型
18:30.970–18:33.430
不要下载来带EAN后置的英文专用模型
18:33.430–18:35.090
因为它只针对英文优化
18:35.090–18:36.410
如果需要中文转写
18:36.410–18:37.710
也不要开启翻译参数
18:37.710–18:39.710
否则模型会把内容翻译成英文
18:39.710–18:41.310
而不是保留原始的语言
18:41.310–18:44.430
到这里整套本地i工作流基本已经闭环
18:44.430–18:46.010
视频和录音可以通过Whisper
18:46.010–18:46.770
转写文字
18:46.770–18:48.210
再交给前文做总结
18:48.210–18:48.710
整理
18:48.710–18:50.870
最后也可以存入前面搭建的知识库
18:50.870–18:53.170
实现自己本地的内容管理系统
18:58.354–19:03.264
前面我们已经分别完成了本地云转写OpenWebUIAPI和签问调用
19:03.264–19:05.844
至于使用N8N搭建一条自动化工作流
19:05.844–19:07.504
上传音频或者视频后
19:07.504–19:09.424
N8N自动调用Whisper来转写
19:09.424–19:11.764
再把转写稿交给签问来整理
19:11.764–19:15.084
最后返回摘要提纲标题和证捷建议
19:15.084–19:16.844
不需要每次手动复制粘贴
19:16.844–19:19.124
首先把前面安装好的Whisper.cpp
19:19.124–19:21.744
变成一个可以被其他程序调用的本地API
19:21.744–19:24.224
先尝试允许Mac本机访问
19:24.224–19:25.804
保持这个中端窗口开启
19:25.804–19:28.164
再新开一个中南app窗口进行测试
19:28.164–19:30.204
如果能够正常返回转写结果
19:30.204–19:32.064
Whisper API就已经运行成功
19:32.064–19:34.684
后面N8N会运行在Docker容器里
19:34.684–19:36.684
如果出现无法连接Whisper的情况
19:36.684–19:38.484
可以按Ctrl加C停止服务
19:38.484–19:39.384
再这样改
19:39.384–19:40.504
这里需要特别注意
19:40.504–19:43.944
Whisper server本身没有用户登录和全线验证的功能
19:43.944–19:46.044
所以使用0.0.0.0时
19:46.044–19:48.364
只建议放在可信的家庭局网内
19:48.364–19:49.964
不要进行路由器端口转发
19:49.964–19:52.704
也不要把8178端口直接暴露到公网
19:52.704–19:53.904
接下来安装N8N
19:53.904–19:56.004
这里使用Docker Desktop来运行
19:56.004–19:57.444
并固定N8N版本
19:57.444–20:01.144
避免后续更新导致教程界面或者节点配置发生变化
20:01.144–20:03.844
先从Docker官网下载安装Docker Desktop
20:03.844–20:05.984
偷动到应用程序无电夹并启动
20:05.984–20:07.364
确认Docker正常运行后
20:07.364–20:09.544
再打开终端App输入下面的命令
20:16.852–20:19.162
接下来生成一段随机的加密密钥
20:22.856–20:25.186
把生成的结果替换到下面的XXX
20:29.721–20:31.851
然后我们访问127.0.0.1
20:31.851–20:32.891
号5678
20:32.891–20:36.111
第一次进入需要创建N8N的本地管理员账号
20:36.111–20:38.551
接下来我们来新建一条workflow工作流
20:38.551–20:40.491
这套流程一共只有四个节点
20:40.491–20:41.046
Webhook
20:41.046–20:43.816
webhook HTTP request with perjuanxie
20:43.816–20:44.549
HTTP request
20:44.549–20:45.656
HTTP Request的签文整理
20:45.656–20:47.216
Respond to Webhook
20:47.216–20:48.896
第一个是Webhook节点
20:48.896–20:50.596
它相当于整条工作流的入口
20:50.596–20:52.896
以后只要把视频post到这个地址
20:52.896–20:54.356
工作流就会自动开始
20:54.356–20:56.056
Webhook的具体设置如下
20:56.056–20:58.036
没提到的设置保持不便即可
21:08.267–21:10.297
第二个节点添加http request
21:10.297–21:12.417
名称可以改成whisper转写
21:12.417–21:16.417
它负责把刚刚上传的音视频文件交给Mac上的whisper server
21:16.417–21:19.117
第二个节点http request的具体设置如下
21:19.117–21:20.997
没提到的设置保持不便即可
21:20.997–21:24.197
值得注意的是n8nbinaryfile这类型中
21:24.197–21:25.897
input data field
21:25.897–21:29.417
name需要填写webhook节点实际收到的二进制字段名称
21:29.417–21:31.097
点击前一个webhook节点
21:31.097–21:33.557
在output的binary中进行查看
21:33.557–21:35.797
如果显示为data那就填写为data
21:35.797–21:37.077
如果显示为Data0
21:37.077–21:38.357
那就填写为Data0
21:38.357–21:39.857
这个名称必须完全一致
21:39.857–21:40.857
否则会出现
21:40.857–21:43.337
The item has no binary field的报错
21:43.337–21:45.877
第三个节点继续添加http request
21:45.877–21:47.497
名称改成前文整理
21:47.497–21:50.617
这个节点负责把Whisper返回完整转写稿
21:50.617–21:53.097
交给前面搭建好的OpenWeb UI API
21:53.097–21:55.937
第三个节点http request具体设置如下
21:55.937–21:57.957
没提到的设置保持不变即可
22:08.105–22:10.095
接下来回到前面的JSON输入框
22:10.095–22:12.295
把整个字段切换到expression模式
22:12.295–22:13.875
再粘贴下面的表达式
22:13.875–22:15.155
它的逻辑很简单
22:15.155–22:18.175
N8N自动读取Whisper转写节点里面的text
22:18.175–22:20.775
再连同预设提示词一起发给亲吻
22:23.996–22:26.026
最后添加Respound to Webhook节点
22:26.026–22:29.006
它负责把整条工作流结果返回给定用者
22:29.006–22:30.746
Respound with选择Json
22:30.746–22:33.346
然后把Respound body切换成Expression模式
22:33.346–22:34.566
粘贴下面的表达式
22:34.566–22:36.526
Respound code保持200即可
22:46.204–22:47.494
工作流设置完成以后
22:47.494–22:48.894
先不要急着正式启用
22:48.894–22:51.734
在N8N里点击Listen for Test Event
22:51.734–22:54.094
让Webhook等待一次测试请求
22:54.094–22:56.134
然后回到终端执行下面的命令
22:56.134–22:58.814
注意要把XAI Token后面的章位内容
22:58.814–23:01.454
替换成你前面实际设置的随机自如串
23:07.735–23:08.825
如果整个流程正常
23:08.825–23:10.205
你最终应该会得到
23:10.205–23:11.145
类似这样的结果
23:14.264–23:17.334
测试成功以后回到N8N的工作流程页面
23:17.334–23:19.294
点击右上角的Publish发布
23:19.294–23:23.094
发布后就不需要每次先点击Lessens for Test Event了
23:23.094–23:26.594
正式Webhook地址也会从Webhook Test AI Video Notes
23:26.594–23:28.754
变成Webhook AI Video Notes
23:28.754–23:30.754
以后只要把视频传到这个接口
23:30.754–23:33.074
整套流程就会自动变成Whisper
23:33.074–23:35.074
在本地把视频转成文字
23:35.074–23:37.194
千万再在本地完成摘要
23:37.194–23:38.974
提纲 标题和章节建议
23:38.974–23:41.694
最后把转写稿和整理结果一起返回
23:41.694–23:43.654
整个过程中的语音和文本内容
23:43.654–23:45.694
都可以在自己的Mac上完成处理
23:45.694–23:48.094
到这里整套工作流已经跑通了
23:48.094–23:50.594
不过直接使用Curve调用正式外部后格式
23:50.594–23:52.554
中端反围的是标准的JSON
23:52.554–23:54.514
所以会看到大量的斜杠N
23:54.514–23:56.114
引号和转译字符
23:56.114–23:57.794
比如斜杠N其实就是换
23:57.794–23:58.774
并不是烂码
23:58.774–24:02.514
只是JSON保存Markdown和多项文字时的正常格式
24:02.514–24:04.654
为让最终结果更加适合阅读
24:04.654–24:07.214
我们可以再用JQ把JSON里的转写稿
24:07.214–24:08.914
和签文之力结果提取出来
24:08.914–24:10.274
如果已经安装Homebrew
24:10.274–24:12.314
则可以执行Brew install GQ
24:12.314–24:13.414
安装完整后
24:13.414–24:16.094
把刚才电用正式工作流的命令稍微改一下
24:22.315–24:24.305
如果只是想看签问整理后的结果
24:24.305–24:25.445
也可以进一步讲话
24:28.320–24:30.370
如果只需要Whisper的完整转眼稿
24:30.370–24:31.350
也可以这么改
24:34.326–24:36.336
哦对了如果你的Mac没有安装Homebrew
24:36.336–24:38.376
也不一定非要额外安装JQ
24:38.376–24:40.396
前面已经准备了Python 3.1
24:40.396–24:43.876
可以直接用Python自带的JSON模块完成同样的处理
24:49.353–24:51.983
视频最后在补一个实际使用时一定会碰到的问题
24:51.983–24:53.763
Mac mini重启以后
24:53.763–24:55.443
哪些东西需要重新打开
24:55.443–24:58.323
我们前面搭建的模型和数据都保存在硬盘里
24:58.323–25:00.183
不需要重新安装或者重新下载
25:00.183–25:00.962
但Olama,
25:00.962–25:02.074
OpenWeb UI,
25:02.074–25:05.523
Whisper Server和N8N这些运行中的服务需要重新启动
25:05.523–25:07.263
建议按照下面这个顺序来
25:07.263–25:09.143
首先启动最底层的Olama
25:09.143–25:11.003
如果安装的是MicOS版的Olama
25:11.003–25:12.743
直接打开Olama app即可
25:12.743–25:15.583
也可以在中端里执行Open-AOlama
25:15.583–25:18.143
然后可以检查Olama是否已经恢复
25:18.143–25:20.903
如果能够正常返回Olama的版本信息
25:20.903–25:23.143
就说明底层模型服务已经正常
25:23.143–25:25.083
接下来再来启动OpenWeb UI
25:25.083–25:28.903
充计后可以先确认MacMe的局域网IP地址有没有发生变化
25:28.903–25:31.863
因为我们前面的启动命令里填写过这个地址
25:31.863–25:33.543
如果地址没有发生变化
25:33.543–25:34.763
就继续使用之前的IP
25:34.763–25:35.863
如果变化了
25:35.863–25:37.783
下面命令行里的也要一起替换
25:37.783–25:39.643
这个中端装口需要保持运行
25:39.643–25:40.883
然后617访问
25:40.883–25:42.843
127.0.0.1网号3000
25:42.843–25:44.203
局域网中的其他设备
25:44.203–25:46.463
仍然访问MacMe的IP地址网号3000
25:46.463–25:50.643
长期使用的话也可以在路由器里给Mac mini固定一个局网地址
25:50.643–25:52.763
选择每次重建后来进行检查
25:52.763–25:55.483
如果只是聊天知识库或者OpenWeb UI
25:55.483–25:57.443
其实不用一直启动Whisper Server
25:57.443–26:01.983
只有需要运行视频转写或者后面的N8n视频工作流时再打开即可
26:01.983–26:03.983
同样这个中端创口需要保持运行
26:03.983–26:05.703
可以打开另一个中端测试
26:05.703–26:07.483
只要服务器能够这样响应
26:07.483–26:09.703
就可以继续交给N8n来调用了
26:09.703–26:11.763
接着打开Docker Desktop App
26:11.763–26:16.083
因为我们创建N8n容器时已经设置了Restart Unless Stoped
26:16.083–26:17.143
所以正常情况下
26:17.443–26:18.543
只要Docker app启动
26:18.543–26:20.723
之前的N8n容器也会自动恢复运行
26:20.883–26:22.883
不需要重新执行那一串Docker run
26:23.283–26:24.883
可以先检查Docker PS
26:24.883–26:26.523
如果Liviar里能够看到N8n
26:26.523–26:28.483
就说明N8n已经自动恢复
26:28.683–26:29.483
如果没有启动
26:29.483–26:31.783
可以手动执行Docker StartN8n
26:31.943–26:35.383
然后留言器打开127.0.0.1-5678
26:35.823–26:36.983
如果能够进入N8n
26:36.983–26:39.143
就说明自动化服务已经恢复正常
26:39.243–26:42.283
到这里我们就从一台普通的Mac mini开始
26:42.283–26:45.443
完成一套相对完整的家庭本地AI服务
26:45.443–26:47.443
Olama负责运行AI模型
26:47.443–26:50.443
OpenWeb UI提供对话界面和统一API
26:50.443–26:53.303
Embedding和RAG负责自己的文档知识库
26:53.303–26:56.223
GLM OCR处理图片和扫描件
26:56.223–26:58.823
Whisper.cpp负责视频录音转写
26:58.823–27:03.003
再通过N8N把这些能力串成一套简单的自动化工作流
27:03.003–27:06.503
这套方案其实不只是在Mac上跑了一个AI模型
27:06.503–27:11.003
当对话、文档、图片、映视频和自动化都连起来之后
27:11.003–27:13.883
这台Mac mini才开始从一台跑模型的电脑
27:13.883–27:16.123
变成一台可以长期放在家里
27:16.123–27:18.763
由不同设备随时电用的AI服务器
27:18.763–27:21.523
当然这只是一个非常技术的框架
27:21.523–27:23.543
后面还可以继续加入更大的模型
27:23.543–27:24.383
自己的资料库
27:24.383–27:25.323
手机快据指令
27:25.323–27:26.923
甚至更多自动化流程
27:26.923–27:29.223
大家完全可以根据自己的Mac配置
27:29.223–27:31.023
和实际需求继续往上搭
27:31.023–27:33.363
先把这套技术环境稳定跑起来
27:33.363–27:34.683
再逐步增加功能
27:34.683–27:37.163
更适合第一次接触本地AI的各位
27:37.163–27:37.663
好了
27:37.663–27:39.603
那么以上就是本期视频的全部内容了
27:39.603–27:41.363
如果觉得本期视频有所帮助的话
27:41.363–27:43.623
还请不要忘记点赞链加工主支持一下
27:43.623–27:44.183
就是李军
27:44.183–27:45.543
我们下期视频再见
27:45.543–27:46.083
拜拜
0:00.000–0:00.940
zhHello 大家好我是周日金
Hello 大家好我是周日金
0:00.940–0:03.620
zhAI这两年离咱们普通用户越来越近
AI这两年离咱们普通用户越来越近
0:03.620–0:06.080
zh现在甚至不需要单独买一台服务器
现在甚至不需要单独买一台服务器
0:06.080–0:08.440
zh我们就可以直接把手头闲置在Mac
我们就可以直接把手头闲置在Mac
0:08.440–0:11.000
zh变成一台属于自己的本地AI服务器
变成一台属于自己的本地AI服务器
0:11.000–0:13.000
zh这期视频我会从零开始
这期视频我会从零开始
0:13.000–0:14.429
zh带大家把Olama、
带大家把Olama、
0:14.429–0:15.857
enOpenWeb UI、
OpenWeb UI、
0:15.857–0:16.429
enREG、
REG、
0:16.429–0:17.000
enOCR、
OCR、
0:17.000–0:18.143
enWhisper.
Whisper.
0:18.143–0:20.000
zhcpp和N8N一步步串起来
cpp和N8N一步步串起来
0:20.000–0:21.420
zh这套方案的重点就是
这套方案的重点就是
0:21.420–0:25.420
zh模型和大部分的数据都运行在自己本地的Mac上
模型和大部分的数据都运行在自己本地的Mac上
0:25.420–0:27.140
zh也不要求特别高的配置
也不要求特别高的配置
0:27.140–0:29.160
zh如果大家对这类玩法感兴趣
如果大家对这类玩法感兴趣
0:29.160–0:32.780
zh后面还可以继续带大家折腾本地图片和视频生成
后面还可以继续带大家折腾本地图片和视频生成
0:32.780–0:34.040
zh本地AI编程
本地AI编程
0:34.040–0:36.180
zh以及把AI介入Home Assistant
以及把AI介入Home Assistant
0:36.180–0:38.800
zh通过自然语言控制家里的智能设备
通过自然语言控制家里的智能设备
0:38.800–0:40.020
zh视频正式开始前
视频正式开始前
0:40.020–0:42.180
zh先求一波一进三连加关注支持一下
先求一波一进三连加关注支持一下
0:42.180–0:43.920
zh这样以后有新的教程更新
这样以后有新的教程更新
0:43.920–0:45.340
zh也能第一时间受到推送
也能第一时间受到推送
0:45.340–0:46.100
zh非常感谢
非常感谢
0:46.100–0:49.520
zh接下来我们就从我的这台Mac mini来开始
接下来我们就从我的这台Mac mini来开始
0:54.742–0:56.332
zh在开始下载模型之前
在开始下载模型之前
0:56.332–0:58.892
zh我们需要先在Mac上安装OLAMA
我们需要先在Mac上安装OLAMA
0:58.892–1:00.212
zh你可以把它理解为
你可以把它理解为
1:00.212–1:03.992
zh让普通用户可以在本地运行AI大模型的运行环境
让普通用户可以在本地运行AI大模型的运行环境
1:03.992–1:06.692
zh直接前往OLAMA的官网下载对应的安装包
直接前往OLAMA的官网下载对应的安装包
1:06.692–1:10.252
zh然后拖动到MacOS用程式文件夹就可以了
然后拖动到MacOS用程式文件夹就可以了
1:10.252–1:12.952
zh平时使用ChatGBT Cloud这类AI服务时
平时使用ChatGBT Cloud这类AI服务时
1:12.952–1:15.272
zh模型都是运行在云端服务器上
模型都是运行在云端服务器上
1:15.272–1:16.952
zh而OLAMA要做的事情
而OLAMA要做的事情
1:16.952–1:20.772
zh就是把像Deepseek签问LAMA这类开源模型
就是把像Deepseek签问LAMA这类开源模型
1:20.772–1:22.212
zh下载安装到你的Mac上
下载安装到你的Mac上
1:22.212–1:24.252
zh让他们直接利用本机的CPU
让他们直接利用本机的CPU
1:24.252–1:25.332
zh和GPU运行
和GPU运行
1:25.332–1:27.192
zh安装后Olama并打开之后
安装后Olama并打开之后
1:27.192–1:28.532
zh下一步就是下载模型
下一步就是下载模型
1:28.532–1:29.992
zh不过这里需要注意啊
不过这里需要注意啊
1:29.992–1:32.572
zh本DAI和ChatGPT这类云端的模型
本DAI和ChatGPT这类云端的模型
1:32.572–1:33.332
zh最大的区别
最大的区别
1:33.332–1:35.812
zh就是模型大小会直接影响运行体验
就是模型大小会直接影响运行体验
1:35.812–1:38.612
zh所以不能盲目追求越大的模型就越好
所以不能盲目追求越大的模型就越好
1:38.612–1:41.532
zh我这里使用的是一台M4入门款的Mac mini
我这里使用的是一台M4入门款的Mac mini
1:41.532–1:43.072
zh采用16GB的同一列存
采用16GB的同一列存
1:43.072–1:44.912
zh加256GB的固态硬盘
加256GB的固态硬盘
1:44.912–1:47.292
zh确认Olama的服务在正常运行后
确认Olama的服务在正常运行后
1:47.292–1:49.132
zh我们在MacOS的中段App中
我们在MacOS的中段App中
1:49.132–1:50.432
zh输入这三条命令
输入这三条命令
1:50.432–1:52.252
zh它们分别负责不同的功能
它们分别负责不同的功能
1:52.252–1:53.872
zh第一个是大约模型
第一个是大约模型
1:53.872–1:55.692
zh也就是本地AI的大脑
也就是本地AI的大脑
1:55.692–1:56.772
zh负责日常聊天
负责日常聊天
1:56.772–1:57.492
zh内容生成
内容生成
1:57.492–1:58.732
zh总业资料等任务
总业资料等任务
1:58.732–2:00.972
zh其中4B代表40亿参数
其中4B代表40亿参数
2:00.972–2:03.672
zhQ4KM代表经过4B特量化
Q4KM代表经过4B特量化
2:03.672–2:05.632
zh可以在降低模型这样的同时
可以在降低模型这样的同时
2:05.632–2:07.172
zh保持不错的运行效果
保持不错的运行效果
2:07.172–2:09.692
zh是目前比较适合普通Mac的选择
是目前比较适合普通Mac的选择
2:09.692–2:11.432
zh第二个是向量模型
第二个是向量模型
2:11.432–2:12.832
zh主要用于知识库检索
主要用于知识库检索
2:12.832–2:15.312
zh如果你以后想让AI读取自己的PDF
如果你以后想让AI读取自己的PDF
2:15.312–2:16.592
zh文档 视频稿件
文档 视频稿件
2:16.592–2:18.432
zh然后根据这些资料回答问题
然后根据这些资料回答问题
2:18.432–2:20.072
zh就需要通过embedding模型
就需要通过embedding模型
2:20.072–2:22.192
zh先帮AI找到相关内容
先帮AI找到相关内容
2:22.192–2:24.792
zh第三个是欧塞AR文字试园模型
第三个是欧塞AR文字试园模型
2:24.792–2:25.912
zh负责处理图片
负责处理图片
2:25.912–2:27.472
zh扫描版PDF等内容
扫描版PDF等内容
2:27.472–2:29.332
zh把图片里的文字提许出来
把图片里的文字提许出来
2:29.332–2:31.332
zh再交给语言模型进行分析
再交给语言模型进行分析
2:31.332–2:33.612
zh这里之所以选择签问的AR模型
这里之所以选择签问的AR模型
2:33.612–2:35.732
zh是因为签问是目前比较成熟的
是因为签问是目前比较成熟的
2:35.732–2:36.752
zh开源大模型之一
开源大模型之一
2:36.752–2:39.332
zh对中文理解和中文生成比较友好
对中文理解和中文生成比较友好
2:39.332–2:41.432
zh其次是它提供的模型规格丰富
其次是它提供的模型规格丰富
2:41.432–2:43.712
zh从4B到更大的参数版本
从4B到更大的参数版本
2:43.712–2:45.372
zh可以适配不同配置的Mac
可以适配不同配置的Mac
2:45.372–2:46.152
zh还有一个是
还有一个是
2:46.152–2:48.192
zh它在OLAMA里的支持比较完善
它在OLAMA里的支持比较完善
2:48.192–2:50.012
zh安装和电用也都比较简单
安装和电用也都比较简单
2:50.012–2:51.272
zh当然除了签问
当然除了签问
2:51.272–2:53.812
zhDeepSeq、Lama等模型也都可以运行
DeepSeq、Lama等模型也都可以运行
2:53.812–2:56.092
zh大家可以根据自己的需求进行选择
大家可以根据自己的需求进行选择
2:56.092–2:59.012
zh至于不同的Mac应该选择多大的模型
至于不同的Mac应该选择多大的模型
2:59.012–3:01.252
zh主要看新变性能和统一内存的大小
主要看新变性能和统一内存的大小
3:01.252–3:04.452
zh8GB内存的Mac建议先从4B级别模型开始
8GB内存的Mac建议先从4B级别模型开始
3:04.452–3:07.872
zh16GB内存运行4B会相对轻松
16GB内存运行4B会相对轻松
3:07.872–3:11.332
zh也可以在实际内存压力云雪情况下尝试9B
也可以在实际内存压力云雪情况下尝试9B
3:11.332–3:14.632
zh而24GB、32GB以及更高内存的Mac
而24GB、32GB以及更高内存的Mac
3:14.632–3:16.492
zh则可以继续尝试更大的规格
则可以继续尝试更大的规格
3:16.492–3:20.172
zh但具体体验还会受到上下文长度和后台任务的影响
但具体体验还会受到上下文长度和后台任务的影响
3:20.172–3:21.532
zh这里需要注意啊
这里需要注意啊
3:21.532–3:23.412
zh模型标签不能随便改数字
模型标签不能随便改数字
3:23.412–3:25.252
zh如果继续使用千万3.5
如果继续使用千万3.5
3:25.252–3:29.092
zh目前OLAMA还提供9B 27B 35B等更大规格
目前OLAMA还提供9B 27B 35B等更大规格
3:29.092–3:32.512
zh具体名称一定以OLAMA模型库实际存在的标签为准
具体名称一定以OLAMA模型库实际存在的标签为准
3:32.512–3:35.152
zh那咱们还是先把本地AI服务器跑起来
那咱们还是先把本地AI服务器跑起来
3:35.152–3:37.412
zh后续再根据实际需求升级模型
后续再根据实际需求升级模型
3:37.412–3:39.692
zh接下来我们在Microsoft的中段APP中
接下来我们在Microsoft的中段APP中
3:39.692–3:41.872
zh输入以下命令OLAMA LIST
输入以下命令OLAMA LIST
3:41.872–3:44.132
zh查看是否已经全部下载完成
查看是否已经全部下载完成
3:44.132–3:46.632
zh如果前面下载的模型都正常列出来
如果前面下载的模型都正常列出来
3:46.632–3:49.892
zh就可以来简单试一下模型能不能在本地正常运行
就可以来简单试一下模型能不能在本地正常运行
3:49.892–3:51.072
zh输入制传命令
输入制传命令
3:51.072–3:52.032
enolama run
olama run
3:52.032–3:52.892
zh千万3.5
千万3.5
3:52.892–3:54.532
en4b-q4km
4b-q4km
3:54.532–3:55.892
zh然后随便发一句话
然后随便发一句话
3:55.892–3:56.632
zh比如你好
比如你好
3:56.632–3:59.072
zh如果能正常给出回复就没问题了
如果能正常给出回复就没问题了
3:59.072–4:01.052
zh随后输入制传命令结束对话
随后输入制传命令结束对话
4:01.052–4:01.552
enBye
Bye
4:01.552–4:03.652
zh之后我们就可以停止运行
之后我们就可以停止运行
4:03.652–4:04.632
zh以释放资源
以释放资源
4:04.632–4:05.772
zh输入制传命令
输入制传命令
4:05.772–4:06.832
enolama stop
olama stop
4:06.832–4:07.652
zh千万3.5
千万3.5
4:07.652–4:09.072
en4b-q4km
4b-q4km
4:09.072–4:10.692
zh然后再输入制传命令
然后再输入制传命令
4:10.692–4:11.472
enolama ps
olama ps
4:11.472–4:14.132
zh查看这个AR大模型是否仍在运行
查看这个AR大模型是否仍在运行
4:14.132–4:15.452
zh此时应该唯空
此时应该唯空
4:15.452–4:18.192
zh那么就说明我们的大模型已经没有在运行了
那么就说明我们的大模型已经没有在运行了
4:18.192–4:20.332
zh接下来咱们就要开始准备部署
接下来咱们就要开始准备部署
4:20.332–4:22.332
zh家庭局网AN对话见面了
家庭局网AN对话见面了
4:27.604–4:30.954
zh前面我们已经通过Olama把AI模型运行在Mac上
前面我们已经通过Olama把AI模型运行在Mac上
4:30.954–4:33.494
zh但是目前还需要通过中端的进行操作
但是目前还需要通过中端的进行操作
4:33.494–4:35.274
zh对于日常使用来说不太方便
对于日常使用来说不太方便
4:35.274–4:37.194
zh所以接下来我们就要给他搭建一个
所以接下来我们就要给他搭建一个
4:37.194–4:39.054
zh类似ChatGB的网页界面
类似ChatGB的网页界面
4:39.054–4:40.714
zh这里使用OpenWebUI
这里使用OpenWebUI
4:40.714–4:43.254
zh也就是让Olama负责运行AI模型
也就是让Olama负责运行AI模型
4:43.254–4:45.614
zhOpenWebUI负责提供交互界面
OpenWebUI负责提供交互界面
4:45.614–4:46.794
zh部署完成后
部署完成后
4:46.794–4:48.834
zh家里的手机平板电脑都可以通过
家里的手机平板电脑都可以通过
4:48.834–4:50.314
zh浏览器放完这台Mac mini
浏览器放完这台Mac mini
4:50.314–4:52.294
zh直接使用自己的本地AI
直接使用自己的本地AI
4:52.294–4:54.594
zh考虑到中国大陆用户的网络环境
考虑到中国大陆用户的网络环境
4:54.594–4:56.914
zh这里直接通过Python安装OpenWebUI
这里直接通过Python安装OpenWebUI
4:56.914–4:59.434
zh同时Olama继续只监听本机地址
同时Olama继续只监听本机地址
4:59.434–5:00.914
zh不会直接报道网络中
不会直接报道网络中
5:00.914–5:04.174
zh本教程固定使用OpenWebUI 0.11.0版本
本教程固定使用OpenWebUI 0.11.0版本
5:04.174–5:06.574
zh不使用latest或滚动更新版本
不使用latest或滚动更新版本
5:06.574–5:09.394
zh避免版本变化导致操作流程不一炸
避免版本变化导致操作流程不一炸
5:09.394–5:11.014
zh首先准备Python环境
首先准备Python环境
5:11.014–5:13.014
zh如果你的Mac已经安装Homebrew
如果你的Mac已经安装Homebrew
5:13.014–5:16.114
zh则可以输入brew install python at 3.11
则可以输入brew install python at 3.11
5:16.114–5:17.554
zh如果没有安装Homebrew
如果没有安装Homebrew
5:17.554–5:19.494
zh也可以直接前往Python官方网站
也可以直接前往Python官方网站
5:19.494–5:22.174
zh下载安装Python 3.11对应的MacOS安装包
下载安装Python 3.11对应的MacOS安装包
5:22.174–5:24.654
zh后面如果会继续折腾这类工具
后面如果会继续折腾这类工具
5:24.654–5:26.114
zh建议提前装好Homebrew
建议提前装好Homebrew
5:26.114–5:27.854
zh管理和升级会方便不少
管理和升级会方便不少
5:27.854–5:30.534
zh接下来创建OpenWeb UI独立运行环境
接下来创建OpenWeb UI独立运行环境
5:30.534–5:32.834
zh避免影响系统里的其他python项目
避免影响系统里的其他python项目
5:32.834–5:35.014
zh后续相关代码我不再一一进行解释
后续相关代码我不再一一进行解释
5:35.014–5:35.834
zh如果有看不懂
如果有看不懂
5:35.834–5:38.054
zh可以查看代码上方的文本注释
可以查看代码上方的文本注释
5:50.272–5:52.622
zh然后通过轻滑镜像安装OpenWebUI
然后通过轻滑镜像安装OpenWebUI
6:02.916–6:03.806
zh安装完成后
安装完成后
6:03.806–6:06.026
zh第一次启动将以只允许本机访问
第一次启动将以只允许本机访问
6:06.026–6:07.926
zh先完成账号和安全设置
先完成账号和安全设置
6:07.926–6:09.306
zh等命令跑起来以后
等命令跑起来以后
6:09.306–6:10.886
zh不要关闭这个中端窗口
不要关闭这个中端窗口
6:10.886–6:13.386
zh因为OpenWeb UI的服务就运行在这里
因为OpenWeb UI的服务就运行在这里
6:16.212–6:18.762
zh然后617打开127.0.0.1
然后617打开127.0.0.1
6:18.762–6:19.582
zh网好3000
网好3000
6:19.582–6:21.702
zh第一次进入需要充电账号
第一次进入需要充电账号
6:21.702–6:23.762
zh第一个账号就会自动成为管理员
第一个账号就会自动成为管理员
6:27.421–6:28.451
zh进入管理后台后
进入管理后台后
6:28.451–6:29.931
zh前往设置身份验证
前往设置身份验证
6:29.931–6:31.451
zh把newsign apps关闭
把newsign apps关闭
6:31.451–6:33.451
zh也就是不允许新用户自由注册
也就是不允许新用户自由注册
6:33.451–6:36.571
zh同时暂时不要安装来源不明的第三方Tools
同时暂时不要安装来源不明的第三方Tools
6:36.571–6:37.991
zhFunctions或Pipelines
Functions或Pipelines
6:37.991–6:40.991
zh接着就可以在流量器打开127.0.0.1
接着就可以在流量器打开127.0.0.1
6:40.991–6:42.431
zh冒号11434
冒号11434
6:42.431–6:44.551
en-API-Version
-API-Version
6:44.551–6:46.891
zh确认欧拉玛本地API正常响应
确认欧拉玛本地API正常响应
6:46.891–6:48.131
zh回到OpenWeb UI
回到OpenWeb UI
6:48.131–6:50.371
zh在检查之前下载的前文3.5
在检查之前下载的前文3.5
6:50.371–6:53.771
zh4B-Q4KM是否已经出现在母型列表当中
4B-Q4KM是否已经出现在母型列表当中
6:53.771–6:54.891
zh确认没有问题后
确认没有问题后
6:54.891–6:55.871
zh在中端App中
在中端App中
6:55.871–6:58.411
zh按Ctrl加C停止OpenWeb UI
按Ctrl加C停止OpenWeb UI
6:58.411–7:00.171
zh接下来开放家庭局域网
接下来开放家庭局域网
7:00.171–7:03.731
zh实际在系统设置网络中查看Mac mini的局域网IP
实际在系统设置网络中查看Mac mini的局域网IP
7:03.731–7:06.051
zh实际操作需要替完成你自己的IP
实际操作需要替完成你自己的IP
7:06.051–7:07.851
zh重新启动OpenWeb UI
重新启动OpenWeb UI
7:11.000–7:14.350
zh现在Mac mini本机可以继续访问127.0.0.1
现在Mac mini本机可以继续访问127.0.0.1
7:14.350–7:15.070
zh网号3000
网号3000
7:15.070–7:17.950
zh并使用刚才创建的管理员账号进行登录
并使用刚才创建的管理员账号进行登录
7:17.950–7:19.710
zh通过家庭网络里的手机
通过家庭网络里的手机
7:19.710–7:23.550
zh电脑则可以通过Mac mini的IP地址加段稿号3000来访问
电脑则可以通过Mac mini的IP地址加段稿号3000来访问
7:23.550–7:25.510
zh同样使用刚才的账号来登录
同样使用刚才的账号来登录
7:25.510–7:26.910
zh这时候可以随便问您问题
这时候可以随便问您问题
7:26.910–7:29.370
zh看看局域网访问和模型交用是否正常
看看局域网访问和模型交用是否正常
7:29.370–7:31.030
zh如果下设备都无法打开
如果下设备都无法打开
7:31.030–7:32.350
zh依次可以清查几个地方
依次可以清查几个地方
7:32.350–7:33.590
zh最后提醒一下
最后提醒一下
7:33.590–7:35.630
zh这里搭建的家庭局域网AI服务器
这里搭建的家庭局域网AI服务器
7:35.630–7:37.410
zh不会把服务暴露到公网
不会把服务暴露到公网
7:37.410–7:39.610
zh因此不需要进行路由器短口转发
因此不需要进行路由器短口转发
7:39.610–7:42.530
zh也不要直接把OpenWeb AI开放到互联网环境
也不要直接把OpenWeb AI开放到互联网环境
7:42.530–7:45.010
zh而这样配置后保持终端App不关闭
而这样配置后保持终端App不关闭
7:45.010–7:46.710
zhAI模式运行在自己的Mac上
AI模式运行在自己的Mac上
7:46.710–7:48.950
zh数据只在家庭网络里进行流转
数据只在家庭网络里进行流转
7:48.950–7:52.870
zh同时手机平板和电脑都可以共享这台本地AI服务器
同时手机平板和电脑都可以共享这台本地AI服务器
7:58.147–8:00.337
zh前面OpenWeb UI已经可以这张访问了
前面OpenWeb UI已经可以这张访问了
8:00.337–8:02.537
zh接下来我们再给整个家庭AI服务器
接下来我们再给整个家庭AI服务器
8:02.537–8:04.377
zh建立一个统一的API接口
建立一个统一的API接口
8:04.377–8:06.937
zh这样以后不管是N8N手机会议指令
这样以后不管是N8N手机会议指令
8:06.937–8:09.357
zh还是其他支持OpenAI API的程序
还是其他支持OpenAI API的程序
8:09.357–8:11.217
zh都统一连接OpenWeb UI
都统一连接OpenWeb UI
8:11.217–8:13.097
zh不需要直接访问底层的奥拉玛
不需要直接访问底层的奥拉玛
8:13.097–8:14.117
zh那这样的好处是
那这样的好处是
8:14.117–8:17.797
zh模型、账号和权限都可以在OpenWeb UI这一层统一管理
模型、账号和权限都可以在OpenWeb UI这一层统一管理
8:17.797–8:19.037
zh后面更换模型时
后面更换模型时
8:19.037–8:21.097
zh也不用重新修改每一个应用
也不用重新修改每一个应用
8:21.097–8:22.617
zh时间咱们回到OpenWeb UI
时间咱们回到OpenWeb UI
8:22.617–8:25.057
zh点击左下角头像依次进入设置
点击左下角头像依次进入设置
8:25.057–8:27.557
zh身份验证找到API密钥并打开
身份验证找到API密钥并打开
8:27.557–8:30.177
zh如果界面提供API密钥端点限制
如果界面提供API密钥端点限制
8:30.177–8:31.137
zh也一并开启
也一并开启
8:31.137–8:32.477
zh然后填写这个
然后填写这个
8:32.477–8:37.377
zh这样生成的key就只允许访问模型列表和聊天接口
这样生成的key就只允许访问模型列表和聊天接口
8:37.377–8:39.317
zh接下来进入账号API密钥
接下来进入账号API密钥
8:39.317–8:42.037
zh点击右侧的显示创建新的API密钥
点击右侧的显示创建新的API密钥
8:42.037–8:44.357
zh生成密钥通常会以SK开头
生成密钥通常会以SK开头
8:44.357–8:47.357
zh这个密钥相当于访问我们家庭i服务器的密码
这个密钥相当于访问我们家庭i服务器的密码
8:47.357–8:49.317
zh不要直接公开或者分享出去
不要直接公开或者分享出去
8:49.317–8:52.657
zh如果后面准备长期让N8N这类的自动化工具使用
如果后面准备长期让N8N这类的自动化工具使用
8:52.657–8:55.157
zh建议专门创建一个普通的本地账号
建议专门创建一个普通的本地账号
8:55.157–8:57.197
zh再用这个账号生成API密钥
再用这个账号生成API密钥
8:57.197–8:59.377
zh不要长期使用管理员账号的密钥
不要长期使用管理员账号的密钥
8:59.377–9:02.057
zh因为密钥会计权创建这个账号的权限
因为密钥会计权创建这个账号的权限
9:02.057–9:04.877
zh而且一个账号通常只保留一个API密钥
而且一个账号通常只保留一个API密钥
9:04.877–9:06.957
zh接着我们来测试接口是否正常
接着我们来测试接口是否正常
9:06.957–9:08.997
zh打开一个新的终端APP窗口
打开一个新的终端APP窗口
9:08.997–9:12.297
zh把下面的命令中的SK换成刚才生成的密钥
把下面的命令中的SK换成刚才生成的密钥
9:12.297–9:13.597
zh如果结构正常
如果结构正常
9:13.597–9:16.897
zh终端会访问当前OpenWeb UI可以调用的模型列表
终端会访问当前OpenWeb UI可以调用的模型列表
9:16.897–9:20.297
zh这里可以顺便记一下返回结果里模型队的真实ID
这里可以顺便记一下返回结果里模型队的真实ID
9:20.297–9:23.477
zh因为后面其他地方调用AI时就需要填写这个名称
因为后面其他地方调用AI时就需要填写这个名称
9:23.477–9:25.517
zh接下来再来测试聊天接口
接下来再来测试聊天接口
9:25.517–9:28.917
zh同样的记得把SK开头的这串换成刚才生成的密钥
同样的记得把SK开头的这串换成刚才生成的密钥
9:28.917–9:32.477
zh而model后面需要填写刚才模型列表里面实际反馈的ID
而model后面需要填写刚才模型列表里面实际反馈的ID
9:32.477–9:35.057
zh如果你下载的是其他签问或者其他模型
如果你下载的是其他签问或者其他模型
9:35.057–9:36.377
zh就替完成对应的模型
就替完成对应的模型
9:36.377–9:39.117
zh如果最后反馈Json里能够看到API正常
如果最后反馈Json里能够看到API正常
9:39.117–9:41.757
zh就说明这一套接口已经可以正常使用了
就说明这一套接口已经可以正常使用了
9:41.757–9:43.797
zh签问3.5在开启思考时
签问3.5在开启思考时
9:43.797–9:46.997
zh反馈内容里可能还会出现reasoning content这一类字段
反馈内容里可能还会出现reasoning content这一类字段
9:46.997–9:48.077
zh这是正常现象
这是正常现象
9:48.077–9:52.357
zh到这里我们就相当于给整个家庭AI服务器建立一个统一的入口
到这里我们就相当于给整个家庭AI服务器建立一个统一的入口
9:52.357–9:54.897
zh最底层人是Olama负责运行模型
最底层人是Olama负责运行模型
9:54.897–9:58.157
zh上面的OpenWeb UI统一管理模型和API
上面的OpenWeb UI统一管理模型和API
9:58.157–10:01.797
zh在网上则可以接N8N手机快递指令或者其他应用
在网上则可以接N8N手机快递指令或者其他应用
10:01.797–10:05.277
zh后面不管增加多少个客户端都尽量连接OpenWeb UI
后面不管增加多少个客户端都尽量连接OpenWeb UI
10:05.277–10:07.637
zh而不是让每台设备直接访问欧拉玛
而不是让每台设备直接访问欧拉玛
10:07.637–10:09.517
zh整个架构会更容易管理
整个架构会更容易管理
10:14.685–10:17.535
zh前面我们已经把本地AI和聊天的API都搭好了
前面我们已经把本地AI和聊天的API都搭好了
10:17.535–10:19.975
zh接下来就再补上一个非常熟能功能
接下来就再补上一个非常熟能功能
10:19.975–10:21.315
zhCell文档知识库
Cell文档知识库
10:21.315–10:22.515
zh也就是RAG
也就是RAG
10:22.515–10:25.455
zhRAG可以列成先从你的资料里找内容
RAG可以列成先从你的资料里找内容
10:25.455–10:26.915
zh再交给AI声称回答
再交给AI声称回答
10:26.915–10:28.655
zh这样以后不管是自己的PDF
这样以后不管是自己的PDF
10:28.655–10:30.855
zh说明书工作文档还是视频稿
说明书工作文档还是视频稿
10:30.855–10:32.035
zh都可以放进知识库
都可以放进知识库
10:32.035–10:34.255
zh让AI尽量根据这些资料来回答
让AI尽量根据这些资料来回答
10:34.255–10:36.255
zh而不是只靠模型本身的记忆
而不是只靠模型本身的记忆
10:36.255–10:38.975
zh首先进入OpenWeb UI试试里的文档页面
首先进入OpenWeb UI试试里的文档页面
10:38.975–10:40.875
zh进入模型引擎选择OLAMA
进入模型引擎选择OLAMA
10:40.875–10:42.235
zhAPI密钥可以留空
API密钥可以留空
10:42.235–10:44.675
zh地址填写127.0.0.1
地址填写127.0.0.1
10:44.675–10:46.035
zh冒号11434
冒号11434
10:46.035–10:47.095
zh进入模型出入
进入模型出入
10:47.095–10:48.815
zh我们在视频一开始就下载好的
我们在视频一开始就下载好的
10:48.815–10:50.895
zh轻文3-embadding0.6b
轻文3-embadding0.6b
10:50.895–10:52.455
zh而这里顺便解释一下
而这里顺便解释一下
10:52.455–10:53.875
zh这个模型不负责聊天
这个模型不负责聊天
10:53.875–10:55.735
zh它的工作是把文档找完成
它的工作是把文档找完成
10:55.735–10:57.635
zh便于检索的向量数据
便于检索的向量数据
10:57.635–10:58.495
zh只要你提问以后
只要你提问以后
10:58.495–11:01.135
zh系统才能快速找到和问题最相关的资料
系统才能快速找到和问题最相关的资料
11:01.135–11:03.275
zh其他参数可以先按照这一套来设置
其他参数可以先按照这一套来设置
11:03.275–11:04.635
zh大部分是我认的
大部分是我认的
11:04.635–11:07.195
zh这些参数主要是在检索效果和上下文本
这些参数主要是在检索效果和上下文本
11:07.195–11:09.215
zh占用之间做一个比较稳妥的平衡
占用之间做一个比较稳妥的平衡
11:09.215–11:10.755
zh比如快大小可以列成
比如快大小可以列成
11:10.755–11:12.675
zh每次把文档切成多大片段
每次把文档切成多大片段
11:12.675–11:14.815
zh快重叠则是在相邻片段之间
快重叠则是在相邻片段之间
11:14.815–11:16.015
zh保留的部分重复内容
保留的部分重复内容
11:16.015–11:17.855
zh避免一句话刚好被重点切断
避免一句话刚好被重点切断
11:17.855–11:19.435
zhTuboK代表每次提问
TuboK代表每次提问
11:19.435–11:21.515
zh最多取回多少个相关片段
最多取回多少个相关片段
11:21.515–11:22.975
zh这里先设置为3
这里先设置为3
11:22.975–11:24.195
zh并不是越大越好
并不是越大越好
11:24.195–11:25.575
zh因为塞进太多资料
因为塞进太多资料
11:25.575–11:27.975
zh反而会占模型有限的上下文空间
反而会占模型有限的上下文空间
11:27.975–11:29.075
zh接下来我们创建一个
接下来我们创建一个
11:29.075–11:30.275
zh非常简单的测试文件
非常简单的测试文件
11:30.275–11:32.735
zh方便确认RA器是否真的正常工作
方便确认RA器是否真的正常工作
11:32.735–11:34.435
zh用任意文本编定器
用任意文本编定器
11:34.435–11:35.855
zh新建一个Text文本
新建一个Text文本
11:35.855–11:36.895
zh如果你用的是
如果你用的是
11:36.895–11:38.695
zhMicroOS自带的文本编辑App
MicroOS自带的文本编辑App
11:38.695–11:40.835
zh记得在菜单里选择制作成文本
记得在菜单里选择制作成文本
11:40.835–11:42.575
zh比如里面写上这些内容
比如里面写上这些内容
11:42.575–11:45.435
zh然后保存为家庭AI测试资料.txt
然后保存为家庭AI测试资料.txt
11:45.435–11:46.615
zh回到OpenWebUI
回到OpenWebUI
11:46.615–11:48.515
zh找到左侧边来的工作空间
找到左侧边来的工作空间
11:48.515–11:50.075
zh再点击顶部的知识库
再点击顶部的知识库
11:50.075–11:51.935
zh最后点击右上角的创建
最后点击右上角的创建
11:51.935–11:54.155
zh名称填写家庭AI测试库
名称填写家庭AI测试库
11:54.155–11:55.415
zh目标可以简单写真
目标可以简单写真
11:55.415–11:58.655
zh用于测试本地RIG文档检索和应用功能
用于测试本地RIG文档检索和应用功能
11:58.655–12:00.035
zh知识库创建完之后
知识库创建完之后
12:00.035–12:01.415
zh再点击右上角的加号
再点击右上角的加号
12:01.415–12:02.415
zh选择上传文件
选择上传文件
12:02.415–12:04.935
zh把刚才的txt文件上传进去
把刚才的txt文件上传进去
12:04.935–12:07.735
zh后面也可以上传带有文字层的PDF
后面也可以上传带有文字层的PDF
12:07.735–12:09.695
zhDocx或Markdown文档
Docx或Markdown文档
12:09.695–12:10.615
zh上乘完之后
上乘完之后
12:10.615–12:12.335
zh在新兑化的聊天输入框里
在新兑化的聊天输入框里
12:12.335–12:14.695
zh通过警号手动附加这个支持库
通过警号手动附加这个支持库
12:14.695–12:16.735
zh而我这里为了教程演示方便
而我这里为了教程演示方便
12:16.735–12:17.655
zh先手动选择
先手动选择
12:17.655–12:19.695
zh因为小参数模型主动判断
因为小参数模型主动判断
12:19.695–12:20.735
zh什么时候动用支持库
什么时候动用支持库
12:20.735–12:21.875
zh有时候不够稳定
有时候不够稳定
12:21.875–12:23.675
zh然后我们可以问一个问题
然后我们可以问一个问题
12:23.675–12:25.135
zh只依据支持库回答
只依据支持库回答
12:25.135–12:26.935
zh项目代号和设备维护时间
项目代号和设备维护时间
12:26.935–12:27.655
zh氛围是什么
氛围是什么
12:27.655–12:28.815
zh请给出引用
请给出引用
12:28.815–12:30.035
zh正常情况下
正常情况下
12:30.035–12:30.975
zh耐心等待一会儿
耐心等待一会儿
12:30.975–12:33.475
zh他应该回答项目代号是清零
他应该回答项目代号是清零
12:33.475–12:35.335
zh设备维护时间是每月第一
设备维护时间是每月第一
12:35.335–12:36.355
zh周六上午十点
周六上午十点
12:36.355–12:39.055
zh而且回答旁边能够看到对应的资料引用
而且回答旁边能够看到对应的资料引用
12:39.055–12:42.895
zh那么这套最基础的REG知识库就算大奖成功了
那么这套最基础的REG知识库就算大奖成功了
12:42.895–12:43.975
zh不过这样配置下来
不过这样配置下来
12:43.975–12:46.095
zh你可能会发现还有一个地方容易踩坑
你可能会发现还有一个地方容易踩坑
12:46.095–12:47.875
zh如果你的PDF是扫描件
如果你的PDF是扫描件
12:47.875–12:50.055
zh本身没有可以复制的文字层
本身没有可以复制的文字层
12:50.055–12:52.015
zh就不要拿它来测试REG了
就不要拿它来测试REG了
12:52.015–12:54.775
zh因为知识库首先需要能够读取里面的文字
因为知识库首先需要能够读取里面的文字
12:54.775–12:56.035
zh才能进行后续的处理
才能进行后续的处理
12:56.035–12:58.315
zh所以这种文件就需要先经过OCR
所以这种文件就需要先经过OCR
12:58.315–13:01.335
zh把图片里的文字设备成TXC或者Markdown
把图片里的文字设备成TXC或者Markdown
13:01.335–13:03.275
zh再上传到知识库来进行处理
再上传到知识库来进行处理
13:03.275–13:06.255
zh接下来我们就继续把本地OCR的功能
接下来我们就继续把本地OCR的功能
13:06.255–13:07.235
zh也接近来
也接近来
13:12.446–13:14.796
zh前面我们已经让AI能够读取次的文档
前面我们已经让AI能够读取次的文档
13:14.796–13:16.976
zh接下来再补上图片理解和OCR
接下来再补上图片理解和OCR
13:16.976–13:19.816
zh也就是让这台本地AI不只能读文字
也就是让这台本地AI不只能读文字
13:19.816–13:20.956
zh还可以看图片
还可以看图片
13:20.956–13:22.856
zh那这里先区分两个概念
那这里先区分两个概念
13:22.856–13:25.436
zh普通图片理解更适合看一张图里有什么
普通图片理解更适合看一张图里有什么
13:25.436–13:26.696
zh界面再显示什么
界面再显示什么
13:26.696–13:28.496
zh再顺便识别其中的文字
再顺便识别其中的文字
13:28.496–13:31.496
zhOCR则更专注于把图片里的文字
OCR则更专注于把图片里的文字
13:31.496–13:34.116
zh表格或者图表内容尽可能提取出来
表格或者图表内容尽可能提取出来
13:34.116–13:36.976
zh先在OpenWeb UI里选择我们前面使用的
先在OpenWeb UI里选择我们前面使用的
13:36.976–13:39.316
zh千万305 4B-KL4KM
千万305 4B-KL4KM
13:39.316–13:40.816
zh如果你的Mac配置更高
如果你的Mac配置更高
13:40.816–13:42.016
zh也可以用9B的版本
也可以用9B的版本
13:42.016–13:44.916
zh上传一张同时包含物体和文字图片
上传一张同时包含物体和文字图片
13:44.916–13:45.596
zh然后输入
然后输入
13:45.596–13:46.796
zh先描述画面内容
先描述画面内容
13:46.796–13:48.516
zh再逐项提取可见文字
再逐项提取可见文字
13:48.516–13:50.496
zh不确定的部分标注为不确定
不确定的部分标注为不确定
13:50.496–13:51.596
zh不需要自信补圈
不需要自信补圈
13:51.596–13:53.736
zh这里可以分别拿产品包装
这里可以分别拿产品包装
13:53.736–13:54.716
zh软件界面截图
软件界面截图
13:54.716–13:55.456
zh中文表格
中文表格
13:55.456–13:57.436
zh或者已经做好隐私透明的发票
或者已经做好隐私透明的发票
13:57.436–13:59.136
zh和数据照片来测试一下
和数据照片来测试一下
13:59.136–14:01.116
zh这样可以比较直观的判断出
这样可以比较直观的判断出
14:01.116–14:02.956
zh模型到底是理解了图片内容
模型到底是理解了图片内容
14:02.956–14:05.396
zh还是只是把里面的文字给识别出来
还是只是把里面的文字给识别出来
14:05.396–14:07.476
zh如果你出现了类似我这样的提示
如果你出现了类似我这样的提示
14:07.476–14:09.156
zh就前往OpenWeb UI的设置
就前往OpenWeb UI的设置
14:09.156–14:09.716
zh模型
模型
14:09.716–14:11.556
zh找到刚才你前面使用的模型
找到刚才你前面使用的模型
14:12.016–14:12.656
zh编辑界面
编辑界面
14:12.656–14:15.296
zh找到高级参数下的NUMCTX
找到高级参数下的NUMCTX
14:15.296–14:15.796
enOlama
Olama
14:15.796–14:17.456
zh针对我16GB的Mac mini
针对我16GB的Mac mini
14:17.456–14:19.096
zh将数字更改为8192
将数字更改为8192
14:19.096–14:21.156
zh然后重复上的操作就可以了
然后重复上的操作就可以了
14:21.156–14:22.896
zh如果我们的目标不是理解图片
如果我们的目标不是理解图片
14:22.896–14:25.376
zh而是尽可能把图片里的文字给提取出来
而是尽可能把图片里的文字给提取出来
14:25.376–14:28.536
zh就可以使用我们前面已经下载好的GLM OCR
就可以使用我们前面已经下载好的GLM OCR
14:28.536–14:30.036
zhOCR模型运行前
OCR模型运行前
14:30.036–14:32.276
zh如果较大的千万模型还占着同一印存
如果较大的千万模型还占着同一印存
14:32.276–14:33.636
zh先可以把它停掉
先可以把它停掉
14:33.636–14:35.856
zh接下来我们准备好需要识别图片
接下来我们准备好需要识别图片
14:35.856–14:37.456
zh放到一个统一的文件夹中
放到一个统一的文件夹中
14:37.456–14:38.976
zh比如我这个目录像
比如我这个目录像
14:38.976–14:41.256
zh对于我们Mac仿达中的用户文件夹
对于我们Mac仿达中的用户文件夹
14:41.256–14:42.216
enAI test
AI test
14:42.216–14:44.636
zh这里手动新建一个test的文件夹就可以了
这里手动新建一个test的文件夹就可以了
14:44.636–14:46.616
zh对于需要识别不同的内容图片
对于需要识别不同的内容图片
14:46.616–14:48.676
zh比如普通收据表格图表
比如普通收据表格图表
14:48.676–14:50.096
zh都可以使用不同的命令
都可以使用不同的命令
14:50.096–14:51.756
zh注意命令结尾的文件名
注意命令结尾的文件名
14:51.756–14:53.776
zh需要换成你自己图片的文件名
需要换成你自己图片的文件名
14:53.776–14:54.876
zh第一次测试时
第一次测试时
14:54.876–14:56.576
zh建议每次只处理一张图片
建议每次只处理一张图片
14:56.576–14:58.916
zh先确认整套工作流能够稳定运行
先确认整套工作流能够稳定运行
14:58.916–15:00.956
zh如果遇到扫描PDF
如果遇到扫描PDF
15:00.956–15:03.876
zh也不用一开始就折腾完整的PDF解析工具
也不用一开始就折腾完整的PDF解析工具
15:03.876–15:05.276
zh最简单办法就是
最简单办法就是
15:05.276–15:07.476
zh先用Microx自带的预览打开PDF
先用Microx自带的预览打开PDF
15:07.476–15:09.176
zh把其中一页导成PN器
把其中一页导成PN器
15:09.176–15:11.496
zh再交给GLM OCR进行处理
再交给GLM OCR进行处理
15:11.496–15:13.676
zh等确认单页OCR没问题后
等确认单页OCR没问题后
15:13.676–15:15.796
zh再考虑批量处理整份文档
再考虑批量处理整份文档
15:15.796–15:17.996
zh识别出来的内容还可以继续利用
识别出来的内容还可以继续利用
15:17.996–15:19.976
zh保存成TXT或者Markdown
保存成TXT或者Markdown
15:19.976–15:22.576
zh再上传到我们上一节创建的知识库
再上传到我们上一节创建的知识库
15:22.576–15:24.216
zh然后交给签问做摘要
然后交给签问做摘要
15:24.216–15:26.136
zh自端整理或者检索问答
自端整理或者检索问答
15:26.136–15:28.056
zh那么整个流程就传起来了
那么整个流程就传起来了
15:28.056–15:30.996
zh如果OCR出现空白重复或者乱码
如果OCR出现空白重复或者乱码
15:30.996–15:32.196
zh可以先更新Olam
可以先更新Olam
15:32.196–15:34.276
zh然后每次只处理一张图片
然后每次只处理一张图片
15:34.276–15:35.436
zh图片过大时
图片过大时
15:35.436–15:39.016
zh可以把长辨锁到大约1600至2200像素
可以把长辨锁到大约1600至2200像素
15:39.016–15:41.156
zh并优先使用PNG或者GPG
并优先使用PNG或者GPG
15:41.156–15:43.976
zh同时检查原图有没有明显模糊
同时检查原图有没有明显模糊
15:43.976–15:45.056
zh倾斜反光
倾斜反光
15:45.056–15:47.056
zh这些都会直接影响识别效果
这些都会直接影响识别效果
15:52.240–15:54.070
zh除了文字和图片之外
除了文字和图片之外
15:54.070–15:55.950
zh本地还有一个非常实用的场景
本地还有一个非常实用的场景
15:55.950–15:57.550
zh就是处理视频和录音
就是处理视频和录音
15:57.550–15:59.410
zh比如把会议录音转成文字
比如把会议录音转成文字
15:59.410–16:00.910
zh把视频自动生成字幕
把视频自动生成字幕
16:00.910–16:04.210
zh或者把自己的素材库快速整理成可搜索的文本
或者把自己的素材库快速整理成可搜索的文本
16:04.210–16:06.190
zh这里我们使用Whisper.cpp
这里我们使用Whisper.cpp
16:06.190–16:08.590
zh它是Whisper模型C++实现的
它是Whisper模型C++实现的
16:08.590–16:10.610
zh针对Apple Silicon提供Mental加速
针对Apple Silicon提供Mental加速
16:10.610–16:13.350
zh可以直接利用Mac的GPU进行本地转写
可以直接利用Mac的GPU进行本地转写
16:13.350–16:15.230
zh首先安装需要用到的工具
首先安装需要用到的工具
16:15.230–16:17.830
zhFMMP1G负责处理音频格式
FMMP1G负责处理音频格式
16:17.830–16:20.150
zhWhisper.cpp负责语音识别
Whisper.cpp负责语音识别
16:20.150–16:22.090
zh如果你的Mac已经安装Homebrew
如果你的Mac已经安装Homebrew
16:22.090–16:23.930
zh可以直接输入代码来进行安装
可以直接输入代码来进行安装
16:23.930–16:25.670
zh如果你仍然没有安装Homebrew
如果你仍然没有安装Homebrew
16:25.670–16:28.310
zh安装whisper.cpp可以走圆码编译路线
安装whisper.cpp可以走圆码编译路线
16:28.310–16:29.790
zh不过对于普通用户来说
不过对于普通用户来说
16:29.790–16:31.810
zh这一步会比Homebrew更复杂一些
这一步会比Homebrew更复杂一些
16:31.810–16:34.350
zh还需要提前安装Xcode的Command Align Tools
还需要提前安装Xcode的Command Align Tools
16:34.350–16:35.690
zh这里就不展开了
这里就不展开了
16:35.690–16:36.630
zh安装完成后
安装完成后
16:36.630–16:39.130
zh可以通过下面两个命令来确认是否正常
可以通过下面两个命令来确认是否正常
16:39.130–16:40.730
zh接下来下载Whisper模型
接下来下载Whisper模型
16:40.730–16:42.190
zh我这里选择的是这个
我这里选择的是这个
16:42.190–16:44.570
zh这是一个支持中文和多语言的模型
这是一个支持中文和多语言的模型
16:44.570–16:46.830
zh相比完整Large模型体积更小
相比完整Large模型体积更小
16:46.830–16:48.710
zh同时保留了比较好的转眼效果
同时保留了比较好的转眼效果
16:48.710–16:50.150
zh更适合Mac本地运行
更适合Mac本地运行
16:50.150–16:53.170
zh我们先创建存放模型和临时文件的目录
我们先创建存放模型和临时文件的目录
16:53.170–16:54.190
zh然后下载模型
然后下载模型
16:54.190–16:57.230
zh下载完整后再计算一次SHA-1的值
下载完整后再计算一次SHA-1的值
16:57.230–17:01.150
zh方便和whisper.cpp模型文档公开的接应值进行核对
方便和whisper.cpp模型文档公开的接应值进行核对
17:01.150–17:03.550
zh模型准备好后就可以开始处理视频
模型准备好后就可以开始处理视频
17:03.550–17:06.270
zh假设你的视频文件位于这个文件夹
假设你的视频文件位于这个文件夹
17:06.270–17:09.330
zh也就是MicroOS用户目录的影片文件夹当中
也就是MicroOS用户目录的影片文件夹当中
17:09.330–17:12.070
zh大家根据自己的实际文件存储位置进行修改
大家根据自己的实际文件存储位置进行修改
17:12.070–17:17.050
zh首先使用FMMP1G把视频里的音频转换成Whisper更适合处理的格式
首先使用FMMP1G把视频里的音频转换成Whisper更适合处理的格式
17:17.050–17:18.890
zh这几个参数简单介绍一下
这几个参数简单介绍一下
17:18.890–17:20.430
zhVM表示去掉视频
VM表示去掉视频
17:20.430–17:21.250
zh只保留音频
只保留音频
17:21.250–17:24.630
zhAR16表示转换成16000赫兹的采样率
AR16表示转换成16000赫兹的采样率
17:24.630–17:26.310
zhAC1表示单身道
AC1表示单身道
17:26.310–17:29.230
zhPCM S16LE则是转换成Whisper
PCM S16LE则是转换成Whisper
17:29.230–17:31.070
zh更容易处理的WAB格式
更容易处理的WAB格式
17:31.070–17:32.330
zh接下来运行Whisper
接下来运行Whisper
17:32.330–17:34.370
zh同时生成文字稿和字幕文件
同时生成文字稿和字幕文件
17:34.370–17:37.270
zh-M用来指定我们前面下载的Whisper模型
-M用来指定我们前面下载的Whisper模型
17:37.270–17:39.890
zh-F指定需要转写的音频文件
-F指定需要转写的音频文件
17:39.890–17:41.670
zh-LZH告诉我们模型
-LZH告诉我们模型
17:41.670–17:43.490
zh这段文字主要内容是中文
这段文字主要内容是中文
17:43.490–17:45.730
zh-Prompt则可以提前提供一些
-Prompt则可以提前提供一些
17:45.730–17:47.370
zh容易识别错误的中有名词
容易识别错误的中有名词
17:47.370–17:48.310
zh比如Mac mini
比如Mac mini
17:48.310–17:49.190
enApple Silicon
Apple Silicon
17:49.190–17:50.410
zhOlama和千问
Olama和千问
17:50.410–17:51.930
zh对于科技类视频有其有用
对于科技类视频有其有用
17:51.930–17:54.190
zh比如这里我就加上了我的Lookup Weekly
比如这里我就加上了我的Lookup Weekly
17:54.190–17:58.750
zh后面的-otxt-oosrt和-ovtt
后面的-otxt-oosrt和-ovtt
17:58.750–18:00.950
zh分别让它同时生成TXT文字稿
分别让它同时生成TXT文字稿
18:00.950–18:03.310
zhSRT字幕和VTT字幕
SRT字幕和VTT字幕
18:03.310–18:04.690
zh最后通过-off
最后通过-off
18:04.690–18:06.770
zh指定输出文件的位置和名称
指定输出文件的位置和名称
18:06.770–18:09.030
zh运行完成后会生成这些文件
运行完成后会生成这些文件
18:09.030–18:10.890
zh其中TXT是纯文字稿
其中TXT是纯文字稿
18:10.890–18:13.430
zh适合后续交给AI总结或者整理
适合后续交给AI总结或者整理
18:13.430–18:15.330
zhSRT是常见的字幕格式
SRT是常见的字幕格式
18:15.330–18:16.810
zh可以直接导入紧接软件
可以直接导入紧接软件
18:16.810–18:19.750
zhVTT是主要用于网页播放器的字幕
VTT是主要用于网页播放器的字幕
18:19.750–18:21.050
zh如果是8GB的Mac
如果是8GB的Mac
18:21.050–18:25.730
zh也可以先尝试这里的Large-V3-Turbo-Q50电话模型
也可以先尝试这里的Large-V3-Turbo-Q50电话模型
18:25.730–18:28.670
zh如果实际转写时内存压力较大或者速度不理想
如果实际转写时内存压力较大或者速度不理想
18:28.670–18:30.970
zh再换成体积更小的Small多语言模型
再换成体积更小的Small多语言模型
18:30.970–18:33.430
zh不要下载来带EAN后置的英文专用模型
不要下载来带EAN后置的英文专用模型
18:33.430–18:35.090
zh因为它只针对英文优化
因为它只针对英文优化
18:35.090–18:36.410
zh如果需要中文转写
如果需要中文转写
18:36.410–18:37.710
zh也不要开启翻译参数
也不要开启翻译参数
18:37.710–18:39.710
zh否则模型会把内容翻译成英文
否则模型会把内容翻译成英文
18:39.710–18:41.310
zh而不是保留原始的语言
而不是保留原始的语言
18:41.310–18:44.430
zh到这里整套本地i工作流基本已经闭环
到这里整套本地i工作流基本已经闭环
18:44.430–18:46.010
zh视频和录音可以通过Whisper
视频和录音可以通过Whisper
18:46.010–18:46.770
zh转写文字
转写文字
18:46.770–18:48.210
zh再交给前文做总结
再交给前文做总结
18:48.210–18:48.710
zh整理
整理
18:48.710–18:50.870
zh最后也可以存入前面搭建的知识库
最后也可以存入前面搭建的知识库
18:50.870–18:53.170
zh实现自己本地的内容管理系统
实现自己本地的内容管理系统
18:58.354–19:03.264
zh前面我们已经分别完成了本地云转写OpenWebUIAPI和签问调用
前面我们已经分别完成了本地云转写OpenWebUIAPI和签问调用
19:03.264–19:05.844
zh至于使用N8N搭建一条自动化工作流
至于使用N8N搭建一条自动化工作流
19:05.844–19:07.504
zh上传音频或者视频后
上传音频或者视频后
19:07.504–19:09.424
zhN8N自动调用Whisper来转写
N8N自动调用Whisper来转写
19:09.424–19:11.764
zh再把转写稿交给签问来整理
再把转写稿交给签问来整理
19:11.764–19:15.084
zh最后返回摘要提纲标题和证捷建议
最后返回摘要提纲标题和证捷建议
19:15.084–19:16.844
zh不需要每次手动复制粘贴
不需要每次手动复制粘贴
19:16.844–19:19.124
zh首先把前面安装好的Whisper.cpp
首先把前面安装好的Whisper.cpp
19:19.124–19:21.744
zh变成一个可以被其他程序调用的本地API
变成一个可以被其他程序调用的本地API
19:21.744–19:24.224
zh先尝试允许Mac本机访问
先尝试允许Mac本机访问
19:24.224–19:25.804
zh保持这个中端窗口开启
保持这个中端窗口开启
19:25.804–19:28.164
zh再新开一个中南app窗口进行测试
再新开一个中南app窗口进行测试
19:28.164–19:30.204
zh如果能够正常返回转写结果
如果能够正常返回转写结果
19:30.204–19:32.064
zhWhisper API就已经运行成功
Whisper API就已经运行成功
19:32.064–19:34.684
zh后面N8N会运行在Docker容器里
后面N8N会运行在Docker容器里
19:34.684–19:36.684
zh如果出现无法连接Whisper的情况
如果出现无法连接Whisper的情况
19:36.684–19:38.484
zh可以按Ctrl加C停止服务
可以按Ctrl加C停止服务
19:38.484–19:39.384
zh再这样改
再这样改
19:39.384–19:40.504
zh这里需要特别注意
这里需要特别注意
19:40.504–19:43.944
zhWhisper server本身没有用户登录和全线验证的功能
Whisper server本身没有用户登录和全线验证的功能
19:43.944–19:46.044
zh所以使用0.0.0.0时
所以使用0.0.0.0时
19:46.044–19:48.364
zh只建议放在可信的家庭局网内
只建议放在可信的家庭局网内
19:48.364–19:49.964
zh不要进行路由器端口转发
不要进行路由器端口转发
19:49.964–19:52.704
zh也不要把8178端口直接暴露到公网
也不要把8178端口直接暴露到公网
19:52.704–19:53.904
zh接下来安装N8N
接下来安装N8N
19:53.904–19:56.004
zh这里使用Docker Desktop来运行
这里使用Docker Desktop来运行
19:56.004–19:57.444
zh并固定N8N版本
并固定N8N版本
19:57.444–20:01.144
zh避免后续更新导致教程界面或者节点配置发生变化
避免后续更新导致教程界面或者节点配置发生变化
20:01.144–20:03.844
zh先从Docker官网下载安装Docker Desktop
先从Docker官网下载安装Docker Desktop
20:03.844–20:05.984
zh偷动到应用程序无电夹并启动
偷动到应用程序无电夹并启动
20:05.984–20:07.364
zh确认Docker正常运行后
确认Docker正常运行后
20:07.364–20:09.544
zh再打开终端App输入下面的命令
再打开终端App输入下面的命令
20:16.852–20:19.162
zh接下来生成一段随机的加密密钥
接下来生成一段随机的加密密钥
20:22.856–20:25.186
zh把生成的结果替换到下面的XXX
把生成的结果替换到下面的XXX
20:29.721–20:31.851
zh然后我们访问127.0.0.1
然后我们访问127.0.0.1
20:31.851–20:32.891
zh号5678
号5678
20:32.891–20:36.111
zh第一次进入需要创建N8N的本地管理员账号
第一次进入需要创建N8N的本地管理员账号
20:36.111–20:38.551
zh接下来我们来新建一条workflow工作流
接下来我们来新建一条workflow工作流
20:38.551–20:40.491
zh这套流程一共只有四个节点
这套流程一共只有四个节点
20:40.491–20:41.046
enWebhook
Webhook
20:41.046–20:43.816
enwebhook HTTP request with perjuanxie
webhook HTTP request with perjuanxie
20:43.816–20:44.549
enHTTP request
HTTP request
20:44.549–20:45.656
zhHTTP Request的签文整理
HTTP Request的签文整理
20:45.656–20:47.216
enRespond to Webhook
Respond to Webhook
20:47.216–20:48.896
zh第一个是Webhook节点
第一个是Webhook节点
20:48.896–20:50.596
zh它相当于整条工作流的入口
它相当于整条工作流的入口
20:50.596–20:52.896
zh以后只要把视频post到这个地址
以后只要把视频post到这个地址
20:52.896–20:54.356
zh工作流就会自动开始
工作流就会自动开始
20:54.356–20:56.056
zhWebhook的具体设置如下
Webhook的具体设置如下
20:56.056–20:58.036
zh没提到的设置保持不便即可
没提到的设置保持不便即可
21:08.267–21:10.297
zh第二个节点添加http request
第二个节点添加http request
21:10.297–21:12.417
zh名称可以改成whisper转写
名称可以改成whisper转写
21:12.417–21:16.417
zh它负责把刚刚上传的音视频文件交给Mac上的whisper server
它负责把刚刚上传的音视频文件交给Mac上的whisper server
21:16.417–21:19.117
zh第二个节点http request的具体设置如下
第二个节点http request的具体设置如下
21:19.117–21:20.997
zh没提到的设置保持不便即可
没提到的设置保持不便即可
21:20.997–21:24.197
zh值得注意的是n8nbinaryfile这类型中
值得注意的是n8nbinaryfile这类型中
21:24.197–21:25.897
eninput data field
input data field
21:25.897–21:29.417
zhname需要填写webhook节点实际收到的二进制字段名称
name需要填写webhook节点实际收到的二进制字段名称
21:29.417–21:31.097
zh点击前一个webhook节点
点击前一个webhook节点
21:31.097–21:33.557
zh在output的binary中进行查看
在output的binary中进行查看
21:33.557–21:35.797
zh如果显示为data那就填写为data
如果显示为data那就填写为data
21:35.797–21:37.077
zh如果显示为Data0
如果显示为Data0
21:37.077–21:38.357
zh那就填写为Data0
那就填写为Data0
21:38.357–21:39.857
zh这个名称必须完全一致
这个名称必须完全一致
21:39.857–21:40.857
zh否则会出现
否则会出现
21:40.857–21:43.337
zhThe item has no binary field的报错
The item has no binary field的报错
21:43.337–21:45.877
zh第三个节点继续添加http request
第三个节点继续添加http request
21:45.877–21:47.497
zh名称改成前文整理
名称改成前文整理
21:47.497–21:50.617
zh这个节点负责把Whisper返回完整转写稿
这个节点负责把Whisper返回完整转写稿
21:50.617–21:53.097
zh交给前面搭建好的OpenWeb UI API
交给前面搭建好的OpenWeb UI API
21:53.097–21:55.937
zh第三个节点http request具体设置如下
第三个节点http request具体设置如下
21:55.937–21:57.957
zh没提到的设置保持不变即可
没提到的设置保持不变即可
22:08.105–22:10.095
zh接下来回到前面的JSON输入框
接下来回到前面的JSON输入框
22:10.095–22:12.295
zh把整个字段切换到expression模式
把整个字段切换到expression模式
22:12.295–22:13.875
zh再粘贴下面的表达式
再粘贴下面的表达式
22:13.875–22:15.155
zh它的逻辑很简单
它的逻辑很简单
22:15.155–22:18.175
zhN8N自动读取Whisper转写节点里面的text
N8N自动读取Whisper转写节点里面的text
22:18.175–22:20.775
zh再连同预设提示词一起发给亲吻
再连同预设提示词一起发给亲吻
22:23.996–22:26.026
zh最后添加Respound to Webhook节点
最后添加Respound to Webhook节点
22:26.026–22:29.006
zh它负责把整条工作流结果返回给定用者
它负责把整条工作流结果返回给定用者
22:29.006–22:30.746
zhRespound with选择Json
Respound with选择Json
22:30.746–22:33.346
zh然后把Respound body切换成Expression模式
然后把Respound body切换成Expression模式
22:33.346–22:34.566
zh粘贴下面的表达式
粘贴下面的表达式
22:34.566–22:36.526
zhRespound code保持200即可
Respound code保持200即可
22:46.204–22:47.494
zh工作流设置完成以后
工作流设置完成以后
22:47.494–22:48.894
zh先不要急着正式启用
先不要急着正式启用
22:48.894–22:51.734
zh在N8N里点击Listen for Test Event
在N8N里点击Listen for Test Event
22:51.734–22:54.094
zh让Webhook等待一次测试请求
让Webhook等待一次测试请求
22:54.094–22:56.134
zh然后回到终端执行下面的命令
然后回到终端执行下面的命令
22:56.134–22:58.814
zh注意要把XAI Token后面的章位内容
注意要把XAI Token后面的章位内容
22:58.814–23:01.454
zh替换成你前面实际设置的随机自如串
替换成你前面实际设置的随机自如串
23:07.735–23:08.825
zh如果整个流程正常
如果整个流程正常
23:08.825–23:10.205
zh你最终应该会得到
你最终应该会得到
23:10.205–23:11.145
zh类似这样的结果
类似这样的结果
23:14.264–23:17.334
zh测试成功以后回到N8N的工作流程页面
测试成功以后回到N8N的工作流程页面
23:17.334–23:19.294
zh点击右上角的Publish发布
点击右上角的Publish发布
23:19.294–23:23.094
zh发布后就不需要每次先点击Lessens for Test Event了
发布后就不需要每次先点击Lessens for Test Event了
23:23.094–23:26.594
zh正式Webhook地址也会从Webhook Test AI Video Notes
正式Webhook地址也会从Webhook Test AI Video Notes
23:26.594–23:28.754
zh变成Webhook AI Video Notes
变成Webhook AI Video Notes
23:28.754–23:30.754
zh以后只要把视频传到这个接口
以后只要把视频传到这个接口
23:30.754–23:33.074
zh整套流程就会自动变成Whisper
整套流程就会自动变成Whisper
23:33.074–23:35.074
zh在本地把视频转成文字
在本地把视频转成文字
23:35.074–23:37.194
zh千万再在本地完成摘要
千万再在本地完成摘要
23:37.194–23:38.974
zh提纲 标题和章节建议
提纲 标题和章节建议
23:38.974–23:41.694
zh最后把转写稿和整理结果一起返回
最后把转写稿和整理结果一起返回
23:41.694–23:43.654
zh整个过程中的语音和文本内容
整个过程中的语音和文本内容
23:43.654–23:45.694
zh都可以在自己的Mac上完成处理
都可以在自己的Mac上完成处理
23:45.694–23:48.094
zh到这里整套工作流已经跑通了
到这里整套工作流已经跑通了
23:48.094–23:50.594
zh不过直接使用Curve调用正式外部后格式
不过直接使用Curve调用正式外部后格式
23:50.594–23:52.554
zh中端反围的是标准的JSON
中端反围的是标准的JSON
23:52.554–23:54.514
zh所以会看到大量的斜杠N
所以会看到大量的斜杠N
23:54.514–23:56.114
zh引号和转译字符
引号和转译字符
23:56.114–23:57.794
zh比如斜杠N其实就是换
比如斜杠N其实就是换
23:57.794–23:58.774
zh并不是烂码
并不是烂码
23:58.774–24:02.514
zh只是JSON保存Markdown和多项文字时的正常格式
只是JSON保存Markdown和多项文字时的正常格式
24:02.514–24:04.654
zh为让最终结果更加适合阅读
为让最终结果更加适合阅读
24:04.654–24:07.214
zh我们可以再用JQ把JSON里的转写稿
我们可以再用JQ把JSON里的转写稿
24:07.214–24:08.914
zh和签文之力结果提取出来
和签文之力结果提取出来
24:08.914–24:10.274
zh如果已经安装Homebrew
如果已经安装Homebrew
24:10.274–24:12.314
zh则可以执行Brew install GQ
则可以执行Brew install GQ
24:12.314–24:13.414
zh安装完整后
安装完整后
24:13.414–24:16.094
zh把刚才电用正式工作流的命令稍微改一下
把刚才电用正式工作流的命令稍微改一下
24:22.315–24:24.305
zh如果只是想看签问整理后的结果
如果只是想看签问整理后的结果
24:24.305–24:25.445
zh也可以进一步讲话
也可以进一步讲话
24:28.320–24:30.370
zh如果只需要Whisper的完整转眼稿
如果只需要Whisper的完整转眼稿
24:30.370–24:31.350
zh也可以这么改
也可以这么改
24:34.326–24:36.336
zh哦对了如果你的Mac没有安装Homebrew
哦对了如果你的Mac没有安装Homebrew
24:36.336–24:38.376
zh也不一定非要额外安装JQ
也不一定非要额外安装JQ
24:38.376–24:40.396
zh前面已经准备了Python 3.1
前面已经准备了Python 3.1
24:40.396–24:43.876
zh可以直接用Python自带的JSON模块完成同样的处理
可以直接用Python自带的JSON模块完成同样的处理
24:49.353–24:51.983
zh视频最后在补一个实际使用时一定会碰到的问题
视频最后在补一个实际使用时一定会碰到的问题
24:51.983–24:53.763
zhMac mini重启以后
Mac mini重启以后
24:53.763–24:55.443
zh哪些东西需要重新打开
哪些东西需要重新打开
24:55.443–24:58.323
zh我们前面搭建的模型和数据都保存在硬盘里
我们前面搭建的模型和数据都保存在硬盘里
24:58.323–25:00.183
zh不需要重新安装或者重新下载
不需要重新安装或者重新下载
25:00.183–25:00.962
zh但Olama,
但Olama,
25:00.962–25:02.074
enOpenWeb UI,
OpenWeb UI,
25:02.074–25:05.523
zhWhisper Server和N8N这些运行中的服务需要重新启动
Whisper Server和N8N这些运行中的服务需要重新启动
25:05.523–25:07.263
zh建议按照下面这个顺序来
建议按照下面这个顺序来
25:07.263–25:09.143
zh首先启动最底层的Olama
首先启动最底层的Olama
25:09.143–25:11.003
zh如果安装的是MicOS版的Olama
如果安装的是MicOS版的Olama
25:11.003–25:12.743
zh直接打开Olama app即可
直接打开Olama app即可
25:12.743–25:15.583
zh也可以在中端里执行Open-AOlama
也可以在中端里执行Open-AOlama
25:15.583–25:18.143
zh然后可以检查Olama是否已经恢复
然后可以检查Olama是否已经恢复
25:18.143–25:20.903
zh如果能够正常返回Olama的版本信息
如果能够正常返回Olama的版本信息
25:20.903–25:23.143
zh就说明底层模型服务已经正常
就说明底层模型服务已经正常
25:23.143–25:25.083
zh接下来再来启动OpenWeb UI
接下来再来启动OpenWeb UI
25:25.083–25:28.903
zh充计后可以先确认MacMe的局域网IP地址有没有发生变化
充计后可以先确认MacMe的局域网IP地址有没有发生变化
25:28.903–25:31.863
zh因为我们前面的启动命令里填写过这个地址
因为我们前面的启动命令里填写过这个地址
25:31.863–25:33.543
zh如果地址没有发生变化
如果地址没有发生变化
25:33.543–25:34.763
zh就继续使用之前的IP
就继续使用之前的IP
25:34.763–25:35.863
zh如果变化了
如果变化了
25:35.863–25:37.783
zh下面命令行里的也要一起替换
下面命令行里的也要一起替换
25:37.783–25:39.643
zh这个中端装口需要保持运行
这个中端装口需要保持运行
25:39.643–25:40.883
zh然后617访问
然后617访问
25:40.883–25:42.843
zh127.0.0.1网号3000
127.0.0.1网号3000
25:42.843–25:44.203
zh局域网中的其他设备
局域网中的其他设备
25:44.203–25:46.463
zh仍然访问MacMe的IP地址网号3000
仍然访问MacMe的IP地址网号3000
25:46.463–25:50.643
zh长期使用的话也可以在路由器里给Mac mini固定一个局网地址
长期使用的话也可以在路由器里给Mac mini固定一个局网地址
25:50.643–25:52.763
zh选择每次重建后来进行检查
选择每次重建后来进行检查
25:52.763–25:55.483
zh如果只是聊天知识库或者OpenWeb UI
如果只是聊天知识库或者OpenWeb UI
25:55.483–25:57.443
zh其实不用一直启动Whisper Server
其实不用一直启动Whisper Server
25:57.443–26:01.983
zh只有需要运行视频转写或者后面的N8n视频工作流时再打开即可
只有需要运行视频转写或者后面的N8n视频工作流时再打开即可
26:01.983–26:03.983
zh同样这个中端创口需要保持运行
同样这个中端创口需要保持运行
26:03.983–26:05.703
zh可以打开另一个中端测试
可以打开另一个中端测试
26:05.703–26:07.483
zh只要服务器能够这样响应
只要服务器能够这样响应
26:07.483–26:09.703
zh就可以继续交给N8n来调用了
就可以继续交给N8n来调用了
26:09.703–26:11.763
zh接着打开Docker Desktop App
接着打开Docker Desktop App
26:11.763–26:16.083
zh因为我们创建N8n容器时已经设置了Restart Unless Stoped
因为我们创建N8n容器时已经设置了Restart Unless Stoped
26:16.083–26:17.143
zh所以正常情况下
所以正常情况下
26:17.443–26:18.543
zh只要Docker app启动
只要Docker app启动
26:18.543–26:20.723
zh之前的N8n容器也会自动恢复运行
之前的N8n容器也会自动恢复运行
26:20.883–26:22.883
zh不需要重新执行那一串Docker run
不需要重新执行那一串Docker run
26:23.283–26:24.883
zh可以先检查Docker PS
可以先检查Docker PS
26:24.883–26:26.523
zh如果Liviar里能够看到N8n
如果Liviar里能够看到N8n
26:26.523–26:28.483
zh就说明N8n已经自动恢复
就说明N8n已经自动恢复
26:28.683–26:29.483
zh如果没有启动
如果没有启动
26:29.483–26:31.783
zh可以手动执行Docker StartN8n
可以手动执行Docker StartN8n
26:31.943–26:35.383
zh然后留言器打开127.0.0.1-5678
然后留言器打开127.0.0.1-5678
26:35.823–26:36.983
zh如果能够进入N8n
如果能够进入N8n
26:36.983–26:39.143
zh就说明自动化服务已经恢复正常
就说明自动化服务已经恢复正常
26:39.243–26:42.283
zh到这里我们就从一台普通的Mac mini开始
到这里我们就从一台普通的Mac mini开始
26:42.283–26:45.443
zh完成一套相对完整的家庭本地AI服务
完成一套相对完整的家庭本地AI服务
26:45.443–26:47.443
zhOlama负责运行AI模型
Olama负责运行AI模型
26:47.443–26:50.443
zhOpenWeb UI提供对话界面和统一API
OpenWeb UI提供对话界面和统一API
26:50.443–26:53.303
zhEmbedding和RAG负责自己的文档知识库
Embedding和RAG负责自己的文档知识库
26:53.303–26:56.223
zhGLM OCR处理图片和扫描件
GLM OCR处理图片和扫描件
26:56.223–26:58.823
zhWhisper.cpp负责视频录音转写
Whisper.cpp负责视频录音转写
26:58.823–27:03.003
zh再通过N8N把这些能力串成一套简单的自动化工作流
再通过N8N把这些能力串成一套简单的自动化工作流
27:03.003–27:06.503
zh这套方案其实不只是在Mac上跑了一个AI模型
这套方案其实不只是在Mac上跑了一个AI模型
27:06.503–27:11.003
zh当对话、文档、图片、映视频和自动化都连起来之后
当对话、文档、图片、映视频和自动化都连起来之后
27:11.003–27:13.883
zh这台Mac mini才开始从一台跑模型的电脑
这台Mac mini才开始从一台跑模型的电脑
27:13.883–27:16.123
zh变成一台可以长期放在家里
变成一台可以长期放在家里
27:16.123–27:18.763
zh由不同设备随时电用的AI服务器
由不同设备随时电用的AI服务器
27:18.763–27:21.523
zh当然这只是一个非常技术的框架
当然这只是一个非常技术的框架
27:21.523–27:23.543
zh后面还可以继续加入更大的模型
后面还可以继续加入更大的模型
27:23.543–27:24.383
zh自己的资料库
自己的资料库
27:24.383–27:25.323
zh手机快据指令
手机快据指令
27:25.323–27:26.923
zh甚至更多自动化流程
甚至更多自动化流程
27:26.923–27:29.223
zh大家完全可以根据自己的Mac配置
大家完全可以根据自己的Mac配置
27:29.223–27:31.023
zh和实际需求继续往上搭
和实际需求继续往上搭
27:31.023–27:33.363
zh先把这套技术环境稳定跑起来
先把这套技术环境稳定跑起来
27:33.363–27:34.683
zh再逐步增加功能
再逐步增加功能
27:34.683–27:37.163
zh更适合第一次接触本地AI的各位
更适合第一次接触本地AI的各位
27:37.163–27:37.663
zh好了
好了
27:37.663–27:39.603
zh那么以上就是本期视频的全部内容了
那么以上就是本期视频的全部内容了
27:39.603–27:41.363
zh如果觉得本期视频有所帮助的话
如果觉得本期视频有所帮助的话
27:41.363–27:43.623
zh还请不要忘记点赞链加工主支持一下
还请不要忘记点赞链加工主支持一下
27:43.623–27:44.183
zh就是李军
就是李军
27:44.183–27:45.543
zh我们下期视频再见
我们下期视频再见
27:45.543–27:46.083
zh拜拜
拜拜
影片筆記:Mac mini 变身家庭 AI 服务器:从零搭建完整本地 AI 工作流
<!-- VIDEONOTE_PUBLICATION_WARNINGS_BEGIN -->
⚠️ 可先使用,仍有待修正項目
本筆記已完成可閱讀的逐字稿與時間跳轉;下列為待處理問題,建議播放原片確認。
- 待修正:逐字稿全文快速校讀未完成(已保留自動字幕/原始逐字稿並繼續生成筆記。;未完成的全文速讀項目可在精進模式回聽確認。)
- 待修正:逐字稿可先使用,但有待校正清單(segment=6 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=7 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語)
<!-- VIDEONOTE_PUBLICATION_WARNINGS_END -->
一句話總結
本影片詳細演示了如何將一台入門款 M4 Mac mini(16GB 記憶體)改造成家庭本地 AI 伺服器,透過串接 Ollama、OpenWebUI、Whisper.cpp 與 N8N,實現從影片上傳、語音轉寫、OCR 文字提取、知識庫檢索到自動化摘要生成的完整本地 AI 工作流。
核心重點
- 硬體與架構:使用 M4 Mac mini 作為基礎,模型與數據完全在本地運行,確保隱私與數據安全。
- 核心軟體堆疊:
- Ollama:負責運行大語言模型(LLM)、向量模型(Embedding)及 OCR 模型。
- OpenWebUI:提供類似 ChatGPT 的網頁介面,並統一管理 API 金鑰與權限。
- Whisper.cpp:處理語音轉寫,支援 Apple Silicon Metal 加速。
- N8N:透過 Docker 部署,用於串接 Webhook、語音轉寫與 AI 摘要的自動化流程。
- 關鍵技術實現:
- RAG(檢索增強生成):透過 Embedding 模型將本地文件向量化,讓 AI 能基於特定知識庫回答問題。
- OCR 處理:針對掃描版 PDF 或圖片,使用專門的 OCR 模型提取文字,再輸入 RAG 系統。
- 自動化串接:建立 N8N 工作流,自動觸發「影片上傳 -> Whisper 轉寫 -> Qwen 摘要 -> 返回結果」的鏈路。
- 資源管理:強調根據記憶體大小選擇合適的模型參數(如 16GB 記憶體適合 4B 或 9B 模型),並注意服務重啟時的順序與資源釋放。
詳細大綱
一、 前言與硬體準備
- 目標:將閒置 Mac 變為本地 AI 伺服器,模型與數據均在本地運行。
- 硬體規格:M4 入門款 Mac mini,16GB 統一記憶體,256GB SSD。
- 未來擴展:提及後續可能涉及本地圖片/視頻生成、AI 編程及 Home Assistant 整合。
二、 核心模型部署 (Ollama)
- 安裝 Ollama:從官網下載並拖入應用程式資料夾。
- 模型選擇原則:
- 模型大小影響運行體驗,非越大越好。
- 8GB 記憶體建議 4B 級別;16GB 可運行 4B 或嘗試 9B;24GB+ 可嘗試更大規格。
- 需確認模型標籤以 Ollama 模型庫實際存在為準。
- 下載模型指令:
- 語言模型 (LLM):
ollama pull qwen2.5:4b-q4_K_M (註:逐字稿口誤為「大約模型」,實際指 LLM,負責聊天與生成)。
- 向量模型 (Embedding):用於知識庫檢索,將文檔轉為向量數據。
- OCR 模型:
ollama pull qwen2.5-ocr (註:逐字稿口誤為「歐塞AR」),負責圖片文字提取。
- 測試與管理:
ollama run:測試模型回應。
ollama stop:停止模型以釋放資源。
ollama ps:檢查運行狀態。
三、 網頁介面與 API 管理 (OpenWebUI)
- 部署 OpenWebUI:
- 使用 Python 3.11 環境安裝,固定版本 0.11.0。
- 建議安裝 Homebrew 以方便管理。
- 創建獨立虛擬環境避免衝突。
- 初始設定:
- 首次啟動僅允許本機訪問 (
127.0.0.1:3000)。
- 建立第一個帳號自動成為管理員。
- 關閉新用戶註冊,暫不安裝第三方工具。
- 開放局網訪問:
- 查詢 Mac mini 局網 IP。
- 重新啟動 OpenWebUI,透過
IP:3000 讓局網內其他設備訪問。
- 確認服務未暴露至公網,無需路由器端口轉發。
- API 金鑰設定:
- 在 OpenWebUI 設定中生成 API Key (以 SK 開頭)。
- 建議為 N8N 等自動化工具創建普通帳號並生成專屬 Key,避免使用管理員 Key。
- 測試 API 接口:使用
curl 命令測試模型列表與聊天接口。
四、 知識庫與檢索增強生成 (RAG)
- RAG 原理:先從資料找內容,再交給 AI 生成回答,避免僅依賴模型記憶。
- 設定步驟:
- 在 OpenWebUI 文檔頁面選擇 Ollama API。
- 模型選擇預先下載的 Embedding 模型 (如
qwen2.5-embedding:0.6b)。
- 調整參數:Chunk Size (片段大小), Chunk Overlap (重疊部分), TopK (檢索片段數,建議設為 3)。
- 測試驗證:
- 上傳測試文件 (TXT/PDF/Docx)。
- 透過
# 號手動附加知識庫進行提問。
- 確認回答包含引用來源。
- 注意:掃描版 PDF 需先經 OCR 處理才能放入 RAG。
五、 影像理解與文字提取 (OCR)
- 區分概念:
- 圖片理解:描述畫面內容並識別文字 (使用大語言模型,如 Qwen 3.5 4B/9B)。
- OCR 提取:專注於提取文字、表格、圖表 (使用 GLM OCR 模型)。
- 圖片理解設定:
- 若出現提示不足,需在 OpenWebUI 模型設定中調整
NUMCTX (上下文長度),例如設為 8192。
- OCR 處理流程:
- 使用
ollama run qwen2.5-ocr 處理圖片。
- 對於掃描 PDF,建議先用預覽轉為 PNG,再交給 OCR。
- 輸出結果可保存為 TXT/Markdown 並上傳至知識庫。
- 優化建議:圖片過大時縮放至 1600-2200 像素,優先使用 PNG/JPG,避免模糊、傾斜、反光。
六、 語音轉寫 (Whisper.cpp)
- 工具介紹:Whisper.cpp 為 C++ 實現,針對 Apple Silicon 提供 Metal 加速。
- 安裝與模型:
- 需安裝
ffmpeg (處理音頻格式) 與 Whisper.cpp。
- 下載支援中文的多語言模型 (如
large-v3-turbo 或 small 多語言版),避免使用僅針對英文優化的模型。
- 下載後計算 SHA-1 值進行核對。
- 轉寫流程:
- 使用
ffmpeg 將視頻音頻轉為 16kHz 單聲道 PCM S16LE 格式。
- 運行
Whisper.cpp,指定模型、音頻文件、語言 (zh) 及 Prompt (專有名詞)。
- 生成 TXT (純文字)、SRT (字幕)、VTT (網頁字幕) 文件。
- 8GB 記憶體可嘗試
large-v3-turbo-q5_0,若壓力大則換用 small 多語言模型。
- 注意:中文轉寫時不要開啟翻譯參數,否則會譯為英文。
七、 自動化工作流串接 (N8N)
- Whisper Server API:
- 將 Whisper.cpp 啟動為本地 API 服務,供 N8N 調用。
- 僅限家庭局網內使用,勿暴露至公網。
- N8N 部署:
- 使用 Docker Desktop 運行,固定版本。
- 生成加密金鑰,創建本地管理員帳號。
- 工作流設計 (四個節點):
- Webhook:工作流入口,接收視頻上傳。
- HTTP Request (Whisper 轉寫):將二進制文件發送給本地 Whisper Server。需注意
input data field name 必須與 Webhook 輸出的二進制字段名稱一致 (如 data 或 data0)。
- HTTP Request (Qwen 整理):將 Whisper 返回的完整轉寫稿,連同提示詞發送給 OpenWebUI API 進行摘要、提綱、標題與章節建議生成。
- Respond to Webhook:將最終結果以 JSON 格式返回給用戶。
- 測試與發布:
- 使用
Listen for Test Event 測試 Webhook。
- 測試成功後點擊
Publish 發布工作流。
- 正式地址將變更為
Webhook AI Video Notes。
- 結果處理:
- 若需閱讀 Markdown 格式結果,可使用
JQ 或 Python JSON 模塊處理 JSON 中的轉義字符 (如 \n)。
八、 服務重啟與維護
- Ollama:打開 App 或執行
open -a Ollama,確認版本資訊返回正常。
- OpenWebUI:確認局網 IP 未變化,保持終端窗口運行,確保 API 可用。
- Whisper Server:僅在需要轉寫時啟動,保持終端窗口運行。
- N8N (Docker):啟動 Docker Desktop,容器應自動恢復 (
Restart Unless Stopped)。若未啟動,手動執行 docker start n8n。
- 架構總結:
- 底層:Ollama (運行模型)。
- 中間層:OpenWebUI (統一 API 與權限管理)。
- 應用層:RAG (知識庫), OCR (影像), Whisper (語音), N8N (自動化)。
- 最終目標:將 Mac mini 變為長期運行、多設備共享的本地 AI 伺服器。
工具 / 模型 / 名詞整理
| 類別 | 名稱/版本 | 備註/說明 |
| :--- | :--- | :--- |
| 硬體 | Mac mini (M4 入門款) | 16GB 統一記憶體, 256GB SSD |
| 基礎設施 | Ollama | 本地 AI 模型運行環境 |
| 基礎設施 | OpenWebUI | 網頁對話介面, 統一 API 管理 |
| 基礎設施 | N8N | 自動化工作流工具 |
| 基礎設施 | Docker Desktop | 用於運行 N8N 容器 |
| 基礎設施 | Homebrew | Mac 套件管理工具 |
| 基礎設施 | Python 3.11 | 運行 OpenWebUI 的環境 |
| 語言模型 (LLM) | Qwen 2.5 (千問) | 逐字稿口誤為「簽問」、「千萬」、「前文」、「輕文」等 |
| LLM 規格 | 4B, 9B, 27B, 35B | 參數大小,依記憶體選擇 |
| 量化格式 | Q4_K_M, Q5_0 | 量化技術,平衡大小與效果 |
| 向量模型 | Qwen 2.5 Embedding | 用於 RAG 檢索,逐字稿口誤為「向量模型」具體名稱未明說,僅提及功能 |
| OCR 模型 | Qwen 2.5 OCR | 逐字稿口誤為「歐塞AR」、「GLM OCR」混用,實際指代 Qwen 的 OCR 能力或模型 |
| 語音模型 | Whisper.cpp | 語音轉寫工具,C++ 實現 |
| Whisper 模型 | large-v3-turbo, small | 多語言模型,支援中文 |
| 音頻處理 | FFmpeg | 處理音頻格式轉換 |
| 其他工具 | JQ | JSON 數據處理工具 |
| 其他工具 | macOS 預覽 (Preview) | 用於將 PDF 頁面導出為圖片 |
| 其他工具 | macOS 文字編輯 (TextEdit) | 用於創建測試文本文件 |
操作流程整理
- 環境準備:
- 安裝 Ollama 並下載所需模型 (LLM, Embedding, OCR)。
- 安裝 Python 3.11 環境,部署 OpenWebUI。
- 安裝 Docker Desktop 並部署 N8N。
- 安裝 FFmpeg 與 Whisper.cpp。
- 基礎服務啟動與測試:
- 啟動 Ollama,確認模型運行狀態 (
ollama ps)。
- 啟動 OpenWebUI,設定管理員帳號,生成 API Key。
- 測試 OpenWebUI 的局網訪問與 API 接口。
- 知識庫與 OCR 設定:
- 在 OpenWebUI 中配置 Embedding 模型與 RAG 參數 (Chunk Size, TopK)。
- 對於圖片/PDF,若為掃描版,先使用預覽轉為 PNG,再透過
ollama run qwen2.5-ocr 提取文字。
- 將提取的文字或原始文件上傳至 OpenWebUI 知識庫,並透過
# 號測試檢索。
- 語音轉寫設定:
- 使用 FFmpeg 將視頻音頻轉為 16kHz 單聲道 PCM S16LE 格式。
- 運行 Whisper.cpp,指定多語言模型 (如
large-v3-turbo) 與語言代碼 (zh)。
- 生成 TXT/SRT/VTT 文件。
- 自動化工作流 (N8N) 串接:
- 啟動 Whisper Server API。
- 在 N8N 中建立工作流:
- 節點 1:Webhook 接收視頻文件。
- 節點 2:HTTP Request 調用 Whisper Server 進行轉寫。
- 節點 3:HTTP Request 調用 OpenWebUI API,將轉寫稿發送給 LLM 進行摘要與章節建議。
- 節點 4:Respond to Webhook 返回 JSON 結果。
- 測試 Webhook 並發布工作流。
- 日常維護:
- Mac 重啟後,依序啟動 Ollama、OpenWebUI、Whisper Server (按需) 與 N8N (Docker)。
值得注意的限制或風險
- 硬體資源限制:
- 16GB 記憶體對於大參數模型(如 9B 以上)可能產生壓力,建議優先選擇 4B 或量化後的模型。
- 處理高分辨率圖片或長視頻時,可能遇到記憶體不足或處理緩慢的情況。
- OCR 與 RAG 的兼容性:
- 掃描版 PDF 必須先經過 OCR 處理才能放入 RAG 系統,否則無法檢索。
- 圖片若過於模糊、傾斜或有反光,會嚴重影響 OCR 準確率。
- 網路與安全性:
- 所有服務建議僅在家庭局網內運行,避免暴露至公網,以防未經授權的 API 調用。
- OpenWebUI 的 API Key 應為自動化工具創建獨立帳號並生成專屬 Key,避免使用管理員 Key。
- 模型選擇與版本:
- 需確認 Ollama 模型庫中實際存在的模型標籤,避免下載不存在的版本。
- Whisper 模型選擇需支援中文,避免使用僅針對英文優化的模型。
逐字稿辨識疑點
- 模型名稱聽寫錯誤:
- 逐字稿多次出現「簽問」、「千萬」、「前文」、「輕文」、「千問」,根據上下文應均指代阿里通義千問系列模型 (Qwen),但依規則標記為聽寫錯誤,不自行更正。
- 逐字稿出現「歐塞AR」、「GLM OCR」,指代 OCR 模型,但前文又提及選擇「簽問的 AR 模型」,名稱混亂,標記為疑點。
- 逐字稿出現「大約模型」,根據上下文指代「語言模型 (LLM)」,標記為疑點。
- 逐字稿出現「總業資料」,根據上下文可能指「總結資料」或「專業資料」,標記為疑點