把模型部署在本机,可以减少向远端服务发送材料,但首先要确认调用的是本地模型。Ollama 也支持云模型;服务地址是 localhost,不能单独证明每次推理都在本机完成。
本文按 ChatCrystal 提交 7642768 的 Ollama 适配路径说明如何验收一条笔记。不使用未经测量的硬件速度、模型排名或“零成本”承诺:本地运行仍消耗下载带宽、存储、内存和电力。
安装并确认本地服务
按照 Ollama 官方入门文档 选择对应系统的安装方式,并选择本地模型。先检查:
ollama --version
ollama list
在没有服务运行的终端环境中,可以启动 ollama serve。如果提示端口被占用,先确认占用者与实际 API 响应,不要直接将任意占用视为 Ollama 正常运行。
ChatCrystal 0.6.1 的 npm 入口还要求 Node.js 24 或更高版本。这是应用的运行要求,不是 Ollama 的安装要求;安装与桌面界面的区别见 入门指南。
为两类任务准备模型
以下名称是应用固定版本默认配置中的示例,不是质量排名:
ollama pull qwen2.5:7b
ollama pull nomic-embed-text
ollama list
第一项用于生成,第二项用于向量。实际下载大小和运行资源取决于模型版本、量化、上下文与并发。模型文件能放进磁盘,不代表推理所需内存足够。先完成短输入测试,再尝试真实摘要长度;资源不足时选择适合当前机器的模型,并重新验证任务能力。
独立测试生成与向量接口
官方 OpenAI 兼容说明 描述了兼容接口及其支持范围。用与 ChatCrystal 适配器一致的路径测试生成:
curl --fail-with-body http://localhost:11434/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"qwen2.5:7b","messages":[{"role":"user","content":"用一句话解释笔记索引。"}],"stream":false}'
另行测试向量:
curl --fail-with-body http://localhost:11434/v1/embeddings \
-H 'Content-Type: application/json' \
-d '{"model":"nomic-embed-text","input":"笔记索引测试"}'
检查 HTTP 状态与返回结构:生成路径应有助手文本,向量路径应有 data 内的数值向量。不要用生成请求成功推断向量也可用;兼容接口存在也不表示某个模型支持所有特性。以上命令会执行本地推理,本文未据此报告实际性能。
接入 ChatCrystal
在默认本机连接上设置:
crystal config set llm.provider ollama
crystal config set llm.baseURL http://localhost:11434
crystal config set llm.model qwen2.5:7b
crystal config set embedding.provider ollama
crystal config set embedding.baseURL http://localhost:11434
crystal config set embedding.model nomic-embed-text
crystal config get
crystal config test
应用适配器 会在 Ollama 地址后追加 /v1,这里填写服务根地址。若已有向量,部分配置变更需要确认并重新建立索引;按 模型配置与重建步骤 处理,不能将配置保存成功当作重建完成。
config test 分别报告两类连接结果。短测试能通过,仍可能在长摘要或结构化输出阶段失败;保留具体错误、输入长度和模型信息,以便定位。
验收一条真实笔记
导入已知会话,选择非演示且包含可复用经验的记录,生成笔记并核对正文,再读取笔记 JSON 的 embedding_status。经验门槛可能正常过滤某些会话;摘要成功后向量也可能单独失败。
状态为 done 后,用应找到该笔记的查询和没有相关答案的查询检查检索。过程见 找回调试方案。随后再扩大输入与并发,记录加载时间、响应时间、失败率和资源峰值,避免把冷启动与稳定推理混为一谈。
核对离线与数据边界
本地所需模型已经下载、调用未切换到云模型且依赖服务可用时,可以进一步测试断网后的完整流程。只验证一句本地聊天,不足以证明导入、摘要、关系生成和查询都不需要网络。
同时检查 LLM 与 Embedding 两套实际配置。一个本地后端与一个远端后端混用时,材料仍可能沿远端路径离开机器;向量索引和应用数据库也仍需妥善管理,详见 本地优先的数据边界。