工作清單

Mac mini 变身家庭 AI 服务器:从零搭建完整本地 AI 工作流

逐字稿文字預覽

Hello 大家好我是周日金
AI这两年离咱们普通用户越来越近
现在甚至不需要单独买一台服务器
我们就可以直接把手头闲置在Mac
变成一台属于自己的本地AI服务器
这期视频我会从零开始
带大家把Olama、OpenWeb UI、REG、OCR、Whisper.cpp和N8N一步步串起来
这套方案的重点就是
模型和大部分的数据都运行在自己本地的Mac上
也不要求特别高的配置
如果大家对这类玩法感兴趣
后面还可以继续带大家折腾本地图片和视频生成
本地AI编程
以及把AI介入Home Assistant
通过自然语言控制家里的智能设备
视频正式开始前
先求一波一进三连加关注支持一下
这样以后有新的教程更新
也能第一时间受到推送
非常感谢
接下来我们就从我的这台Mac mini来开始
在开始下载模型之前
我们需要先在Mac上安装OLAMA
你可以把它理解为
让普通用户可以在本地运行AI大模型的运行环境
直接前往OLAMA的官网下载对应的安装包
然后拖动到MacOS用程式文件夹就可以了
平时使用ChatGBT Cloud这类AI服务时
模型都是运行在云端服务器上
而OLAMA要做的事情
就是把像Deepseek签问LAMA这类开源模型
下载安装到你的Mac上
让他们直接利用本机的CPU
和GPU运行
安装后Olama并打开之后
下一步就是下载模型
不过这里需要注意啊
本DAI和ChatGPT这类云端的模型
最大的区别
就是模型大小会直接影响运行体验
所以不能盲目追求越大的模型就越好
我这里使用的是一台M4入门款的Mac mini
采用16GB的同一列存
加256GB的固态硬盘
确认Olama的服务在正常运行后
我们在MacOS的中段App中
输入这三条命令
它们分别负责不同的功能
第一个是大约模型
也就是本地AI的大脑
负责日常聊天
内容生成
总业资料等任务
其中4B代表40亿参数
Q4KM代表经过4B特量化
可以在降低模型这样的同时
保持不错的运行效果
是目前比较适合普通Mac的选择
第二个是向量模型
主要用于知识库检索
如果你以后想让AI读取自己的PDF
文档 视频稿件
然后根据这些资料回答问题
就需要通过embedding模型
先帮AI找到相关内容
第三个是欧塞AR文字试园模型
负责处理图片
扫描版PDF等内容
把图片里的文字提许出来
再交给语言模型进行分析
这里之所以选择签问的AR模型
是因为签问是目前比较成熟的
开源大模型之一
对中文理解和中文生成比较友好
其次是它提供的模型规格丰富
从4B到更大的参数版本
可以适配不同配置的Mac
还有一个是
它在OLAMA里的支持比较完善
安装和电用也都比较简单
当然除了签问
DeepSeq、Lama等模型也都可以运行
大家可以根据自己的需求进行选择
至于不同的Mac应该选择多大的模型
主要看新变性能和统一内存的大小
8GB内存的Mac建议先从4B级别模型开始
16GB内存运行4B会相对轻松
也可以在实际内存压力云雪情况下尝试9B
而24GB、32GB以及更高内存的Mac
则可以继续尝试更大的规格
但具体体验还会受到上下文长度和后台任务的影响
这里需要注意啊
模型标签不能随便改数字
如果继续使用千万3.5
目前OLAMA还提供9B 27B 35B等更大规格
具体名称一定以OLAMA模型库实际存在的标签为准
那咱们还是先把本地AI服务器跑起来
后续再根据实际需求升级模型
接下来我们在Microsoft的中段APP中
输入以下命令OLAMA LIST
查看是否已经全部下载完成
如果前面下载的模型都正常列出来
就可以来简单试一下模型能不能在本地正常运行
输入制传命令
olama run
千万3.5
4b-q4km
然后随便发一句话
比如你好
如果能正常给出回复就没问题了
随后输入制传命令结束对话
Bye
之后我们就可以停止运行
以释放资源
输入制传命令
olama stop
千万3.5
4b-q4km
然后再输入制传命令
olama ps
查看这个AR大模型是否仍在运行
此时应该唯空
那么就说明我们的大模型已经没有在运行了
接下来咱们就要开始准备部署
家庭局网AN对话见面了
前面我们已经通过Olama把AI模型运行在Mac上
但是目前还需要通过中端的进行操作
对于日常使用来说不太方便
所以接下来我们就要给他搭建一个
类似ChatGB的网页界面
这里使用OpenWebUI
也就是让Olama负责运行AI模型
OpenWebUI负责提供交互界面
部署完成后
家里的手机平板电脑都可以通过
浏览器放完这台Mac mini
直接使用自己的本地AI
考虑到中国大陆用户的网络环境
这里直接通过Python安装OpenWebUI
同时Olama继续只监听本机地址
不会直接报道网络中
本教程固定使用OpenWebUI 0.11.0版本
不使用latest或滚动更新版本
避免版本变化导致操作流程不一炸
首先准备Python环境
如果你的Mac已经安装Homebrew
则可以输入brew install python at 3.11
如果没有安装Homebrew
也可以直接前往Python官方网站
下载安装Python 3.11对应的MacOS安装包
后面如果会继续折腾这类工具
建议提前装好Homebrew
管理和升级会方便不少
接下来创建OpenWeb UI独立运行环境
避免影响系统里的其他python项目
后续相关代码我不再一一进行解释
如果有看不懂
可以查看代码上方的文本注释
然后通过轻滑镜像安装OpenWebUI
安装完成后
第一次启动将以只允许本机访问
先完成账号和安全设置
等命令跑起来以后
不要关闭这个中端窗口
因为OpenWeb UI的服务就运行在这里
然后617打开127.0.0.1
网好3000
第一次进入需要充电账号
第一个账号就会自动成为管理员
进入管理后台后
前往设置身份验证
把newsign apps关闭
也就是不允许新用户自由注册
同时暂时不要安装来源不明的第三方Tools
Functions或Pipelines
接着就可以在流量器打开127.0.0.1
冒号11434
-API-Version
确认欧拉玛本地API正常响应
回到OpenWeb UI
在检查之前下载的前文3.5
4B-Q4KM是否已经出现在母型列表当中
确认没有问题后
在中端App中
按Ctrl加C停止OpenWeb UI
接下来开放家庭局域网
实际在系统设置网络中查看Mac mini的局域网IP
实际操作需要替完成你自己的IP
重新启动OpenWeb UI
现在Mac mini本机可以继续访问127.0.0.1
网号3000
并使用刚才创建的管理员账号进行登录
通过家庭网络里的手机
电脑则可以通过Mac mini的IP地址加段稿号3000来访问
同样使用刚才的账号来登录
这时候可以随便问您问题
看看局域网访问和模型交用是否正常
如果下设备都无法打开
依次可以清查几个地方
最后提醒一下
这里搭建的家庭局域网AI服务器
不会把服务暴露到公网
因此不需要进行路由器短口转发
也不要直接把OpenWeb AI开放到互联网环境
而这样配置后保持终端App不关闭
AI模式运行在自己的Mac上
数据只在家庭网络里进行流转
同时手机平板和电脑都可以共享这台本地AI服务器
前面OpenWeb UI已经可以这张访问了
接下来我们再给整个家庭AI服务器
建立一个统一的API接口
这样以后不管是N8N手机会议指令
还是其他支持OpenAI API的程序
都统一连接OpenWeb UI
不需要直接访问底层的奥拉玛
那这样的好处是
模型、账号和权限都可以在OpenWeb UI这一层统一管理
后面更换模型时
也不用重新修改每一个应用
时间咱们回到OpenWeb UI
点击左下角头像依次进入设置
身份验证找到API密钥并打开
如果界面提供API密钥端点限制
也一并开启
然后填写这个
这样生成的key就只允许访问模型列表和聊天接口
接下来进入账号API密钥
点击右侧的显示创建新的API密钥
生成密钥通常会以SK开头
这个密钥相当于访问我们家庭i服务器的密码
不要直接公开或者分享出去
如果后面准备长期让N8N这类的自动化工具使用
建议专门创建一个普通的本地账号
再用这个账号生成API密钥
不要长期使用管理员账号的密钥
因为密钥会计权创建这个账号的权限
而且一个账号通常只保留一个API密钥
接着我们来测试接口是否正常
打开一个新的终端APP窗口
把下面的命令中的SK换成刚才生成的密钥
如果结构正常
终端会访问当前OpenWeb UI可以调用的模型列表
这里可以顺便记一下返回结果里模型队的真实ID
因为后面其他地方调用AI时就需要填写这个名称
接下来再来测试聊天接口
同样的记得把SK开头的这串换成刚才生成的密钥
而model后面需要填写刚才模型列表里面实际反馈的ID
如果你下载的是其他签问或者其他模型
就替完成对应的模型
如果最后反馈Json里能够看到API正常
就说明这一套接口已经可以正常使用了
签问3.5在开启思考时
反馈内容里可能还会出现reasoning content这一类字段
这是正常现象
到这里我们就相当于给整个家庭AI服务器建立一个统一的入口
最底层人是Olama负责运行模型
上面的OpenWeb UI统一管理模型和API
在网上则可以接N8N手机快递指令或者其他应用
后面不管增加多少个客户端都尽量连接OpenWeb UI
而不是让每台设备直接访问欧拉玛
整个架构会更容易管理
前面我们已经把本地AI和聊天的API都搭好了
接下来就再补上一个非常熟能功能
Cell文档知识库
也就是RAG
RAG可以列成先从你的资料里找内容
再交给AI声称回答
这样以后不管是自己的PDF
说明书工作文档还是视频稿
都可以放进知识库
让AI尽量根据这些资料来回答
而不是只靠模型本身的记忆
首先进入OpenWeb UI试试里的文档页面
进入模型引擎选择OLAMA
API密钥可以留空
地址填写127.0.0.1
冒号11434
进入模型出入
我们在视频一开始就下载好的
轻文3-embadding0.6b
而这里顺便解释一下
这个模型不负责聊天
它的工作是把文档找完成
便于检索的向量数据
只要你提问以后
系统才能快速找到和问题最相关的资料
其他参数可以先按照这一套来设置
大部分是我认的
这些参数主要是在检索效果和上下文本
占用之间做一个比较稳妥的平衡
比如快大小可以列成
每次把文档切成多大片段
快重叠则是在相邻片段之间
保留的部分重复内容
避免一句话刚好被重点切断
TuboK代表每次提问
最多取回多少个相关片段
这里先设置为3
并不是越大越好
因为塞进太多资料
反而会占模型有限的上下文空间
接下来我们创建一个
非常简单的测试文件
方便确认RA器是否真的正常工作
用任意文本编定器
新建一个Text文本
如果你用的是
MicroOS自带的文本编辑App
记得在菜单里选择制作成文本
比如里面写上这些内容
然后保存为家庭AI测试资料.txt
回到OpenWebUI
找到左侧边来的工作空间
再点击顶部的知识库
最后点击右上角的创建
名称填写家庭AI测试库
目标可以简单写真
用于测试本地RIG文档检索和应用功能
知识库创建完之后
再点击右上角的加号
选择上传文件
把刚才的txt文件上传进去
后面也可以上传带有文字层的PDF
Docx或Markdown文档
上乘完之后
在新兑化的聊天输入框里
通过警号手动附加这个支持库
而我这里为了教程演示方便
先手动选择
因为小参数模型主动判断
什么时候动用支持库
有时候不够稳定
然后我们可以问一个问题
只依据支持库回答
项目代号和设备维护时间
氛围是什么
请给出引用
正常情况下
耐心等待一会儿
他应该回答项目代号是清零
设备维护时间是每月第一
周六上午十点
而且回答旁边能够看到对应的资料引用
那么这套最基础的REG知识库就算大奖成功了
不过这样配置下来
你可能会发现还有一个地方容易踩坑
如果你的PDF是扫描件
本身没有可以复制的文字层
就不要拿它来测试REG了
因为知识库首先需要能够读取里面的文字
才能进行后续的处理
所以这种文件就需要先经过OCR
把图片里的文字设备成TXC或者Markdown
再上传到知识库来进行处理
接下来我们就继续把本地OCR的功能
也接近来
前面我们已经让AI能够读取次的文档
接下来再补上图片理解和OCR
也就是让这台本地AI不只能读文字
还可以看图片
那这里先区分两个概念
普通图片理解更适合看一张图里有什么
界面再显示什么
再顺便识别其中的文字
OCR则更专注于把图片里的文字
表格或者图表内容尽可能提取出来
先在OpenWeb UI里选择我们前面使用的
千万305 4B-KL4KM
如果你的Mac配置更高
也可以用9B的版本
上传一张同时包含物体和文字图片
然后输入
先描述画面内容
再逐项提取可见文字
不确定的部分标注为不确定
不需要自信补圈
这里可以分别拿产品包装
软件界面截图
中文表格
或者已经做好隐私透明的发票
和数据照片来测试一下
这样可以比较直观的判断出
模型到底是理解了图片内容
还是只是把里面的文字给识别出来
如果你出现了类似我这样的提示
就前往OpenWeb UI的设置
模型
找到刚才你前面使用的模型
编辑界面
找到高级参数下的NUMCTX
Olama
针对我16GB的Mac mini
将数字更改为8192
然后重复上的操作就可以了
如果我们的目标不是理解图片
而是尽可能把图片里的文字给提取出来
就可以使用我们前面已经下载好的GLM OCR
OCR模型运行前
如果较大的千万模型还占着同一印存
先可以把它停掉
接下来我们准备好需要识别图片
放到一个统一的文件夹中
比如我这个目录像
对于我们Mac仿达中的用户文件夹
AI test
这里手动新建一个test的文件夹就可以了
对于需要识别不同的内容图片
比如普通收据表格图表
都可以使用不同的命令
注意命令结尾的文件名
需要换成你自己图片的文件名
第一次测试时
建议每次只处理一张图片
先确认整套工作流能够稳定运行
如果遇到扫描PDF
也不用一开始就折腾完整的PDF解析工具
最简单办法就是
先用Microx自带的预览打开PDF
把其中一页导成PN器
再交给GLM OCR进行处理
等确认单页OCR没问题后
再考虑批量处理整份文档
识别出来的内容还可以继续利用
保存成TXT或者Markdown
再上传到我们上一节创建

來源:transcript.txt

本次執行流程與問題處理

  1. 下達指令

    指令:videonote https://youtu.be/nNQr-kDiMXs?si=Fb6fkiOy1qwoeLAh --language zh

    來源:https://youtu.be/nNQr-kDiMXs?si=Fb6fkiOy1qwoeLAh

    辨識語言:zh | 參數:--language zh

  2. 預期流程

    依指令產生的處理順序:

    1. 下載與語音辨識
    2. 來源選擇與品質檢查
    3. 文字校正與句子單元
    4. 筆記與發布
    5. 公開網頁發布
  3. 1. 下載與語音辨識

    工具:videonote-transcribe-url(主辨識管線:下載、Whisper 辨識與選稿)

    處理:下載音訊、以 Whisper 辨識並選出最佳逐字稿

    產出:yt_dlp_meta.json(影片元資料)、audio_16k_mono.wav(16kHz 單聲道音訊)、transcript.whisper.json(Whisper 辨識結果)、transcript.json(正式逐字稿)、transcript_selection_report.json(來源選擇報告)

    耗時:691.4 秒

    關係:依序執行

    結果:完成

  4. 2. 全文快速校讀

    工具:videonote_rapid_transcript_review.py

    處理:先速讀完整逐字稿,再修正高可信突兀詞句並列出待確認項目

    產出:rapid_transcript_review_report.json(產出檔案)

    耗時:54.2 秒

    關係:依序執行

    結果:完成

  5. 3. 建立句子單元

    工具:videonote-build-sentence-units

    處理:將逐字稿切成帶時間軸的句子單元

    產出:sentence_units.json(句子單元)

    耗時:0.2 秒

    關係:依序執行

    結果:完成

  6. 4. 句子密度平衡

    工具:videonote_balance_sentence_units.py

    處理:平衡句子長度與密度

    產出:sentence_units.json(句子單元)

    耗時:0.3 秒

    關係:依序執行

    結果:完成

  7. 5. 時間軸稽核

    工具:videonote_timeline_audit.py

    處理:檢查時間軸與音訊對齊

    產出:timeline_audit_report.json(時間軸稽核)

    耗時:0.3 秒

    關係:依序執行

    結果:完成

  8. 6. 品質檢查

    工具:videonote_controlled_quality.py(檢查時間軸與品質)

    處理:檢查語言、時間軸與可讀性品質

    產出:controlled_quality_report.json(品質報告)、language_sanity_report.json(語言檢查)

    耗時:0.4 秒

    關係:依序執行

    結果:完成

  9. 7. 播放時間軸回填

    工具:videonote_rebase_display_timeline.py

    處理:將網頁播放時間軸回填為校正字幕時間

    產出:display_timeline_rebase_report.json(時間軸回填報告)

    耗時:0.4 秒

    關係:依序執行

    結果:完成

  10. 8. 逐字稿交叉檢查

    工具:videonote_cross_check_transcript.py

    處理:交叉檢查逐字稿與來源字幕

    產出:transcript_crosscheck_report.json(交叉檢查)

    耗時:0.4 秒

    關係:依序執行

    結果:完成

  11. 9. 來源句整理

    工具:videonote_prepare_source_entries.py

    處理:整理來源句子供時間軸與頁面使用

    產出:sentence_units.json(句子單元)

    耗時:0.4 秒

    關係:依序執行

    結果:完成

  12. 10. 生成筆記摘要

    工具:videonote-generate-note(生成筆記摘要)

    處理:生成筆記摘要與重點

    產出:note.md(筆記 Markdown)、note.html(筆記 HTML)

    耗時:183.6 秒

    關係:依序執行

    結果:完成

  13. 11. 建立筆記頁面

    工具:videonote-render-html(產生筆記 HTML)

    處理:產生可閱讀的筆記 HTML 頁面

    產出:note.html(筆記 HTML)

    耗時:0.7 秒

    關係:依序執行

    結果:完成

  14. 12. 發布公開頁面

    工具:videonote-publish(發布公開頁面)

    處理:發布到公開網站與每日列表

    產出:公開筆記網址、result.json(管線結果)

    耗時:0.8 秒

    關係:依序執行

    結果:完成

手動來源字幕

自動來源字幕

Whisper 字幕

Qwen 字幕

Parakeet 字幕

MOSS 字幕

聲學時間證據(PyAnnote / WhisperX)

校正前後逐字稿

目前待解決問題與初步改善方向

進一步精進字幕與筆記
使用 Workbench 上傳校正字幕、中文參考稿或回饋 SRT,重新產生雙語與學習單元。
開啟 Workbench