本手册旨在指导用户在 macOS 上搭建一套完全私有化、零成本、高安全性的 AI 知识库系统。该系统整合了 ChromaDB(本地向量数据库)+ Ollama(本地大模型)+ Open WebUI(图形化交互)。
🔗 资源下载地址汇总
在开始之前,请根据您的系统环境下载并安装以下必要组件:
| 组件 | 说明 | 官方下载链接 |
|---|---|---|
| Python | 基础运行环境 (推荐 3.10+) | python.org/downloads |
| Ollama | 本地 AI 推理引擎 | ollama.com/download |
| Docker | 容器化部署 Open WebUI | docker.com/products/do… |
| Homebrew | macOS 软件包管理器 (可选) | brew.sh |
🌟 为什么选择本地 AI 知识库?
拥有了一个**“具备语义理解能力的私人图书馆”**。它与传统的文件夹搜索(靠关键词匹配)有着本质的区别。
1. 语义搜索:懂你的“意思”,而不是“字面量”
这是向量数据库最强大的地方。
- 传统搜索:如果你搜“运动”,它只能找到包含“运动”这两个字的文件。
- ChromaDB 搜索:如果你搜“锻炼身体的方法”,它能帮你找到包含“跑步”、“游泳”或“健身房指南”的文档,因为它理解这些词在语义上是相关的。
2. 打造私人 AI 知识助手 (RAG)
这是目前最火的应用方向。你可以将 ChromaDB 作为一个“外挂大脑”:
- 操作方式:当你向 AI(如 GPT-4 或本地的 Ollama/Llama3)提问时,先让 ChromaDB 在你的本地文档里找到相关的知识段落,然后把这些段落喂给 AI。
- 效果:AI 就能基于你自己的私有数据(比如你的会议记录、学习笔记、公司内部文档)来回答问题,且不会泄露隐私,也不会产生“幻觉”。
3. 智能去重与关联发现
- 内容去重:当你存入一段新知识时,可以先让数据库查一下是否有极其相似的内容,避免知识碎片化。
- 发现联系:你可以通过一段话找到另一段虽然措辞不同但逻辑相关的笔记,帮助你串联知识点,产生新的灵感。
4. 场景举例
| 场景 | 具体用途 |
|---|---|
| 学习笔记 | 搜“深度学习的数学基础”,自动关联出你过去一年存的所有相关数学公式和原理。 |
| 代码片段 | 搜“如何实现用户登录”,它能从你存的成百上千个代码片段中找到最接近的逻辑实现。 |
| 法律/医学文档 | 在海量的专业术语中,通过描述症状或案例背景,快速定位到相关的条文或病例。 |
| 个人日记 | 搜“去年夏天最开心的事”,它能跨越日期帮你找回那些充满情绪色彩的瞬间。 |
5. 为什么选本地?
- 隐私安全:你的数据永远留在你自己的硬盘上,不会上传到任何云端。
- 零成本:不需要支付云端数据库的高昂费用。
- 离线可用:没有网络也能进行深度的知识检索。
🛠️ 第一阶段:环境检查与数据库安装
- 检查 Python 环境,打开的**本地终端(Terminal 或 PowerShell)**中输入以下命令并按回车:
python --version
- 如上面的命令没反应,是因为在 macOS 上,对应的安装工具通常叫
pip3。修改为以下命令
python3 --version
结果说明:
- 如果显示
Python 3.x.x:说明你已经安装好了,我们可以继续下一步。 - 如果显示“未找到命令”或“command not found” :说明你的电脑还没有安装 Python,或者没有配置环境变量。
- 安装 ChromaDB 向量数据库
python3 -m pip install chromadb pysqlite3-binary
操作指引:
- 复制上面的命令并在你的终端中运行。
- 安装过程中可能会出现很多进度条,请耐心等待它完成。
- 安装中,可能会遇到了一点兼容性问题,是因为 macOS 自带的 SQLite 版本通常已经足够新,可以尝试另一种安装方式。先安装核心数据库
python3 -m pip install chromadb
- 验证安装
python3 -c "import chromadb; print('ChromaDB 准备就绪!')"
- 如果运行后输出了“ChromaDB 已经准备就绪!”,那么恭喜你,最难的一步已经跨过去了!
注:没有出现红色的 ERROR,就说明安装已经成功了。 Warning(黄色文字)通常只是提醒你 pip 版本较旧,或者是某些文件安装路径的建议,并不会影响程序的正常运行。
- 如果报错,(提示 SQLite 版本过低),我们再尝试安装替代补丁:
python3 -m pip install pysqlite3
太棒了!现在本地环境已经完全具备了运行向量数据库的能力。接下来的目标是:在你电脑上创建一个专门的文件夹,并把管理代码放进去。
📂 第二阶段:脚本创建本地知识库
- 终端创建工作文件夹,建议将所有知识库相关文件统一存放。
mkdir -p ~/Documents/MyKnowledgeBase
cd ~/Documents/MyKnowledgeBase
- 创建核心管理脚本 kb.py
该脚本负责将文本转化为“向量”并存入数据库。直接复制以下整段代码并粘贴到终端回车,即可生成脚本。
cat <<EOF > kb.py
import chromadb
import os
import sys
# 初始化数据库
client = chromadb.PersistentClient(path="./data")
collection = client.get_or_create_collection(name="my_docs")
def add_info(text):
doc_id = str(hash(text))
collection.add(documents=[text], ids=[doc_id])
print(f"✅ 已存入: {text}")
def search_info(query):
results = collection.query(query_texts=[query], n_results=2)
print(f"\n🔍 搜索结果:")
for doc in results['documents'][0]:
print(f" - {doc}")
if __name__ == "__main__":
if len(sys.argv) > 2:
if sys.argv[1] == "add": add_info(sys.argv[2])
elif sys.argv[1] == "query": search_info(sys.argv[2])
EOF
3.测试基础功能
存入一条知识
python3 kb.py add "Manus 是一个超级好用的 AI 助手。"
搜索相关内容
python3 kb.py query "Manus 是谁开发的?"
后续进阶:将现有文档(如 .txt, .md, .pdf, .docx)导入 ChromaDB 是构建知识库最实用的功能。为了实现这个功能,需要对之前的脚本进行升级,增加一个“读取文件”的模块等。后续可搜索升级增强本地kb.py脚本,已实现导入文件,处理PDF等。
🤖 第三阶段:本地 AI 引擎 (Ollama) 联动
如果你追求极致隐私,不希望任何数据联网,可以在本地运行 Ollama。你已经有了 Python 环境和 ChromaDB,继续按一下步骤
- 安装 Ollama:去 ollama.com 下载并安装。
- 下载模型:打开终端,输入:
ollama run llama3
下载完成后,可以直接在终端和它聊天,按 Ctrl+D 退出。
- 连接代码:安装 Python 连接库:
python3 -m pip install ollama
- 创建 RAG 对话脚本 ai_kb.py。该脚本实现了 RAG 流程,让 AI 根据你的本地知识回答问题。
cat <<EOF > ai_kb.py
import chromadb
import ollama
db_client = chromadb.PersistentClient(path="./data")
collection = db_client.get_collection(name="my_docs")
def ask_my_kb(question):
results = collection.query(query_texts=[question], n_results=3)
context = "\n".join(results['documents'][0])
prompt = f"你是一个基于本地知识库的助手。请根据以下参考内容回答问题。\n\n参考内容:\n{context}\n\n问题:{question}"
response = ollama.chat(model='qwen2.5:7b', messages=[
{'role': 'user', 'content': prompt},
])
print(f"\nAI 回答:\n{response['message']['content']}")
if __name__ == "__main__":
import sys
if len(sys.argv) > 1:
ask_my_kb(sys.argv[1])
EOF
模型选择建议表
| 您的需求 | 推荐模型 | 命令 |
|---|---|---|
| 日常中文知识库(首选) | Qwen 2.5 7B | ollama run qwen2.5:7b |
| 写代码、搞技术 | DeepSeek-Coder | ollama run deepseek-coder-v2 |
| 追求极致速度(低配电脑) | Llama 3.2 3B | ollama run llama3.2:3b |
| 追求最强逻辑(高配 32G+ 内存) | Qwen 2.5 14B/32B | ollama run qwen2.5:14b |
如何切换模型?
只需要在终端运行一次 ollama run 模型名,Ollama 就会自动下载。下载完成后,修改你 ai_kb.py 脚本里的这一行即可:
Python
response = ollama.chat(model='新模型名', messages=[...])
🖥️ 第四阶段:图形化界面 (Open WebUI) 部署
如果你安装了 Open WebUI,它自带了非常强大的 RAG(检索增强生成)功能,完全不需要写代码:
-
操作步骤:
- 打开 Open WebUI 界面。
- 点击左侧的 “Workspace”(工作区) -> “Documents”(文档) 。
- 直接将你的文件(PDF, Word, TXT)拖进去。
- 链接方式:在聊天框输入
#号,后面跟着你的文档名称,AI 就会自动检索该文档内容来回答你。
-
底层原理:它其实在后台也运行着一个类似 ChromaDB 的向量数据库,只是它帮你把“上传、切片、存储”全部图形化了
完美的图形化体验
- 安装 Open WebUI(可以通过 Docker 一键安装)。
- 它会接管你的 Ollama 模型,并提供一个极其精美的界面。
- 你可以直接在它的界面上管理成千上万个文档,而不需要再通过命令行
python3 kb.py add这么辛苦地操作。
安装Open WebUI
第一步:安装 Docker (如果还没安装)
- 访问 Docker 官网 下载并安装 Docker Desktop for Mac。
- 安装完成后启动 Docker Desktop,确保你在菜单栏能看到“小鲸鱼”图标,并且状态显示为
Running。
第二步:一键运行 Open WebUI
打开你的终端(Terminal),直接复制并粘贴以下命令。这条命令会自动下载并运行 Open WebUI,同时将其连接到你已经安装好的 Ollama 上:
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
第三步:访问界面
- 等待命令运行完成(第一次下载镜像可能需要几分钟)。
- 打开浏览器,访问:
http://localhost:3000 - 注册账号:第一次登录需要创建一个管理员账号 。由于是全本地运行,你可以随便设置账号密码,它只存在你自己的电脑上。
第四步:在界面中链接知识库
进入界面后,你就不再需要写代码来维护知识库了:
- 选择模型:在上方选择你之前下载的
qwen2.5:7b。 - 上传文档:点击左下角的 "Workspace" -> "Documents" ,直接把你的文件拖进去。
- 开始对话:回到聊天界面,输入
#符号,选择你刚才上传的文档,AI 就会开始基于这些文档回答你的问题。
常见问题处理:
- 如果访问不了 3000 端口:请确保 Docker 已经启动。
- 如果找不到模型:在 Open WebUI 的设置里,确认连接地址是否为
http://host.docker.internal:11434。Ollama 的默认端口 11434
- 配置连接地址
如果 Open WebUI 找不到模型,在设置的 Connections 中将 Ollama API 地址改为:host.docker.internal:11434
📈 第五阶段:日常维护与进阶
- 模型更新:使用终端
ollama pull qwen2.5:7b
- 数据备份:定期拷贝 ~/Documents/MyKnowledgeBase/data 文件夹到安全位置。
- 升级pip工具:
python3 -m pip install --upgrade pip
- 文档导入:在 Open WebUI 中使用 # 符号快速引用已上传的 PDF 或代码文件。