一步步换掉 OpenAI 嵌入模型,用 Ollama 跑通本地向量搜索
手把手教你更换嵌入模型、重算向量、重建索引,零基础也能跑通本地向量搜索。
准备环境:装好 Ollama 和数据库
在开始之前,你需要先安装两个工具:
- Ollama:一个让你在本地电脑上运行 AI 模型的工具,免费、无需联网。去 ollama.com 下载安装。
- Supabase(或其他支持向量的数据库):用来存向量数据。你可以用 Supabase 的免费套餐,或者用 PostgreSQL + pgvector 插件。
装好 Ollama 后,在终端运行 ollama pull nomic-embed-text 下载嵌入模型。嵌入模型的作用是把文字变成一串数字(向量),方便计算机做相似度比较。
安装步骤:改数据库、换模型、重算向量
- 改数据库列:原来用的是 OpenAI 的嵌入,维度是 1536。现在要改成 768 维。在 Supabase 里执行 SQL:
ALTER TABLE your_table ADD COLUMN embedding_new vector(768);注意,旧列不要马上删,留着做备份。 - 清空旧数据:把旧向量清掉,避免新老数据混在一起。可以新建一个表,或者把旧数据移到另一个表。
- 重算向量:写一个脚本,遍历所有笔记(比如 1605 条笔记,切分成 5383 个块),对每个块调用 Ollama 的
nomic-embed-text模型,生成 768 维的向量,存入新列。 - 重建索引:为了让搜索更快,需要为新的向量列创建 HNSW 索引。在 Supabase 里执行:
CREATE INDEX ON your_table USING hnsw (embedding_new vector_cosine_ops); - 改查询代码:搜索时,查询也要用同样的模型生成 768 维向量,然后去新列里找相似结果。
常见坑提醒:一定要保证“入库用的模型”和“搜索时用的模型”是同一个,否则向量空间不一致,搜出来的结果不准。
验证是否成功:跑几个已知查询
改完后,用几个你知道答案的问题来测试。比如:
- 查询“AgentGuard”,期望返回对应的笔记,相似度在 0.69 左右。
- 查询“Raspberry Pi researcher”,期望返回部署说明,相似度 0.67。
如果每个查询都能把最相关的文档排第一,说明迁移成功。如果结果不对,检查维度是否一致,或者索引是否建好。
下一步可以做什么
你现在已经跑通了本地向量搜索,接下来可以:
- 把搜索集成到你的聊天机器人里,让它能根据笔记回答问题。
- 换其他嵌入模型(比如 BGE 或 E5),但记住每次换模型都要重新算向量。
- 用 RAG(检索增强生成)技术,让 AI 回答更准确。
内容来源
DEV Ollama
发布时间
2026-07-15 01:47