llama.cpp、Ollama、LM Studio:本地LLM推理栈三层拆解 先说个结论llama.cpp、Ollama、LM Studio 这三样压根不是“三选一”的关系。llama.cpp 是发动机Ollama 和 LM Studio 是两台不同风格的车。普通人只需要挑一辆顺手懂行的人则会掀开引擎盖看看里面到底怎么转。这篇文章就把这三层拆开讲明白顺带把本地 LLM 推理栈里那些高频坑——下载慢、500 报错、模型突然变傻、显存不够——一次性说透。如果你是想在普通电脑上跑 Qwen、DeepSeek 这类开源模型想给 VS Code、办公助手、个人知识库接一个免费本地模型的开发者或者纯粹好奇 Ollama 背后到底干了什么那这篇应该对你很有用。基础要求不高会敲命令行就行图形界面那部分连命令行都不太会也能跟上。1. 他们仨到底什么关系一座被拆成三层的推理栈1.1 llama.cpp 这台引擎解决的核心问题当年 llama.cpp 项目出来的时候不少老玩家都感慨这东西把本地跑大模型的门槛直接从“需要一卡 A100”拉到了“我手头这台旧电脑也行”。它做的事情本质上只有一件用 C/C 实现 Llama 架构的推理同时做足内存优化让 CPU 也能跑、GPU 显存不够也能拿内存凑数。这就是整套本地推理栈最底层的基石。为了做到这一点llama.cpp 搞了两个核心设计。一个是 GGML 张量库专门为大模型推理设计支持各种量化矩阵运算另一个是后来演化出来的模型格式 GGUF。早期还有个叫 GGML 的格式但扩展性太差2023 年 8 月被 GGUF 取代。GGUF 的好处是模型元信息全塞进文件里加载时不用再猜参数预留了大量存放额外信息的空间后来整个本地模型生态的量化文件都基于这个格式生成。最关键的还是量化。模型权重默认是 16 位浮点数一个 70 亿参数的模型全精度要占 14GB 左右很多人的电脑内存都没这么大。量化把它压成 4 位或 8 位整数体积直接砍到四分之一甚至五分之一。比如你下载模型时经常看到的 Q4_K_M 这个后缀里面的 4 是 4 比特K 是 K-quants 量化方法M 表示这种方案里不同精度混合的中等档位。记住这个概念后面选模型时你能少踩一半的坑。顺带一提llama.cpp 的跨平台能力离谱到连 Android 都有社区编译版本真有人在手机上跑过小型模型虽然速度感人但说明这套引擎的下限确实低。很多移动端本地 AI 应用背后跑的都是它或者它的变体。1.2 Ollama 和 LM Studio 对引擎的封装方式llama.cpp 本身只是一套二进制工具和库你想直接用得自己下模型、自己跑命令行、甚至自己写代码调用。对多数人来说门槛太高于是 Ollama 出现了。Ollama 的定位特别像 Docker 之于容器一句ollama pull qwen3:8b就把模型和依赖拉齐ollama run直接进入交互对话后台还自动起了一个常驻服务提供 REST API。它的推理核心就是 llama.cpp 那一脉但把细节全部封装起来。你在 Ollama 里配好一个模型其他软件就能通过 HTTP 调它完全不用关心 GGUF、量化、KV cache 这些底层概念。LM Studio 则是另一条路它把引擎藏得更深给你一个纯图形界面。下载、点击、选模型、加载、聊天全程鼠标想给其他程序提供接口点一个 Start Server 就能开一个 OpenAI 兼容服务。它同样基于 llama.cpp但做事风格极度 GUI。所以一句话总结llama.cpp 是引擎Ollama 是命令行和 API 的装甲车LM Studio 是带方向盘和空调的轿车。接下来会分模块讲怎么用但在此之前有几个概念必须先弄明白否则后面很多操作你只能复制粘贴不明白自己在干嘛。2. 先弄懂这三个概念后面所有坑都能避2.1 算账一个 7B 模型到底要多少内存经常有人问“我的 8G 内存能不能跑 7B”这种问题不报量化信息根本没法回答。算账方法其实非常简单模型权重大小 ≈ 参数量 × 每参数占用字节数Q4 量化时每个参数平均约 0.5 字节因为 4 比特等于 0.5 字节7B 模型的 Q4 版权重 ≈ 7 × 0.5 ≈ 3.5GBQ8 量化时每参数 1 字节权重 ≈ 7GB加上其他开销奔着 10GB 去了除了权重上下文窗口也要占内存。Transformer 在生成每个 token 时要维护 KV cache长度越长KV cache 越大。粗略记住一个经验2K 上下文大概多占 0.3 到 0.8GB看模型大小和层数32K 的话就是好几 GB。还有运行时临时缓冲区、分词器、系统本身占用。所以 8GB 内存的机器跑 7B Q4 很紧张但可行前提是关掉其他大程序16GB 就比较从容。这个算账方式能帮你做两件事选模型以及提前发现“塞不下”的问题。我有个朋友机器 16GB 内存硬要跑 32B 的混合专家模型结果内存溢出导致 Ollama 直接断连。这就是没算账的典型教训模型文件看着能下不代表运行时占用的资源你给得起。2.2 上下文长度不是越多越好本地跑模型上下文长度是个必须亲手设置的量。设太短你给它塞一段文档加一个问题可能直接截断回答质量崩盘设太长KV cache 吃掉大量内存速度哗哗掉。这里插一个理解 KV cache 的小类比。注意力机制里 Query 就像你在图书馆问“我要找什么”Key 是每本书的标签“我是谁”Value 是书里真正的内容“我能提供什么”。KV cache 缓存的正是 Key 和 Value让之前已经算过的内容不用重复算。了解这个逻辑后你就能明白为什么上下文越长越吃内存也明白为什么有人会把“key、query、value”形象地解释成“我是谁、我在找什么、我能提供什么”。我给一个保守推荐16GB 内存的机器7B 模型开 Q4 量化上下文设到 4096 是稳妥组合想跑 8K内存就得 24GB 往上。32GB 以上再考虑 32K但长上下文对内存带宽压力很大速度会明显下降。处理长文档时更聪明的办法不是无限拉长上下文而是做检索先让一个轻量 embedding 模型把文档切片用户提问时只把相关片段拼进上下文。这就是后面第 6 章要讲的 RAG也是本地知识库能省内存的关键思路。2.3 “OpenAI 兼容接口”到底是个什么魔法你可能注意到Ollama 和 LM Studio 都在宣传“OpenAI 兼容”。这五个字是打通生态的关键。全世界几十上百个 AI 工具默认调用同一个接口向某个 HTTP 地址发送一个 JSON里面带模型名、messages 数组和参数返回模型回复。这个接口就是 OpenAI 定的。本地工具做的事很简单把同一个 HTTP 接口在自己机器上实现出来。于是任何只认 OpenAI 接口的软件——VS Code 插件、办公助手、爬虫脚本、Dify 这类低代码平台——把地址改成http://localhost:11434/v1或http://localhost:1234/v1就能直接调本地模型。这意味着本地推理栈不是一个封闭玩具而是一个可以被所有工具共享的“本地版 GPT 服务”。后面接编程助手、接办公工具、搭知识库全是依赖这一点。记住这两个端口Ollama 默认 11434LM Studio 默认 1234。3. Ollama 从安装到模型导入的完整实操3.1 安装和下载慢的破解思路Ollama 官方提供安装脚本Linux 上最常见的是这条命令curl -fsSL https://ollama.com/install.sh | sh但实际执行过的朋友都知道这行命令在国内网络环境经常卡在下载二进制那一步一卡就是十分钟不动。原因很简单脚本最终要去境外地址拉包这条路不稳定。处理办法有三个层次。最省事的是直接去官方 Release 页面手动下载对应系统的安装包如果 Release 也下载不动就找社区常用的下载加速前缀把 Release 的下载地址拼上去通常能明显提速。另外各大云厂商开源镜像站有时候会同步这类工具搜索“ollama 国内镜像 安装包”一般能找到离线安装包。下载完之后照常安装装好运行ollama --version验证。这里提醒一句别纠结“必须用官方脚本装”只要你拿到的是官方二进制从哪个渠道下载并无差别。安装完成后再配好模型镜像源下一节才是真正解决体验问题的关键。3.2 模型存哪、怎么装到 D 盘很多 Windows 用户打开磁盘会发现 C 盘被.ollama塞满了因为 Ollama 默认把模型存在 C 盘用户目录下。想在 D 盘放模型要在启动 Ollama 前设置环境变量# WindowsPowerShell [Environment]::SetEnvironmentVariable(OLLAMA_MODELS, D:\ollama-models, User) # 然后重启 Ollama托盘图标退出再重新打开设置之后之后ollama pull的模型都会落到D:\ollama-models里。macOS 用户可以用launchctl setenv OLLAMA_MODELS /Volumes/你的磁盘/ollama-models这类方式但同样要注意先设再启动应用。有个隐藏坑如果你已经用默认位置下了一堆模型改完环境变量后原来的模型不会自动迁移。你得自己去.ollama/models把目录搬过去再改变量再重启。不要图省事直接删先搬完确认能ollama list看到再说。3.3 拉模型超慢时的终极方案手动导入 GGUF镜像源的问题聊完还有一个更大的难题ollama pull qwen3:8b依然可能慢得让人崩溃因为模型文件往往也放在境外对象存储上。这时候最可靠的方案不是跟下载速度搏斗而是绕过 pull手动把 GGUF 文件导进来。具体流程分三步在可正常访问的 Hugging Face 镜像站比如 hf-mirror.com找到对应模型的 GGUF 版本下载到本地目录。写一个Modelfile文件内容就一行FROM ./qwen3-8b-q4_k_m.gguf执行ollama create qwen3-8b-local -f ./Modelfile执行完之后Ollama 会读取本地 GGUF生成一个可以直接 run 的模型实例。之后ollama run qwen3-8b-local就能用了。这么做的好处是彻底绕开 pull 下载环节特别适合公司内网、带宽受限或需要离线安装的场景。你甚至可以把它当作“离线安装包”分发流程同事之间拷贝一个 GGUF 和 Modelfile几分钟内复现同一模型。至于 Modelfile 里还能写什么比如系统提示词、采样参数、模板这些是进阶玩法后面讲“不思考”技巧时会用到。3.4 最常见的噩梦ollama run 报 500 internal server error这个问题几乎每周都能看到“ollama run qwen3.5:2b error: 500 internal server error: llama-server process”或者“error: 500 internal server error: error s...”。第一次遇到确实懵因为错误信息里什么细节都没有。但我排了十几次之后发现500 报错绝大多数不是“模型坏了”而是下面几类原因按概率排序。一是模型文件不完整。ollama pull中途断网、磁盘满了、杀毒软件拦了下载都会导致 GGUF 文件损坏。检查方法很简单ollama list看模型大小对不对或者重新ollama pull一次文件坏了重拉通常能修复。二是 Ollama 版本太旧跟新模型格式不兼容。这种情况在 Qwen3 这类新架构模型上爆发概率很高旧版 Ollama 内置的推理内核不认识新的分词器或新量化方案进程启动时直接失败。解法简单粗暴升级 Ollama 到最新版。三是磁盘空间不够或者路径问题。推理进程启动时需要把模型映射进内存、创建临时文件如果临时目录所在磁盘满了进程起不来。Windows 上还要注意模型所在路径别带中文和空格虽然理论上支持但确实遇到过玄学问题。四是端口冲突。Ollama 的 API 默认 11434如果被别的服务占用服务会异常。ollama ps能看一眼服务有没有活着Windows 上用netstat -ano | findstr 11434macOS/Linux 上用lsof -i:11434能确认端口占用。真正的排查顺序是先看日志。Ollama 的日志位置macOS 在~/.ollama/logs/server.logWindows 在%LOCALAPPDATA%\Ollama\server.logLinux 在/var/log/ollama或用 journalctl 查。日志里会有具体异常比如显存不足、模型格式不支持、加载失败。拿到具体报错再去搜比在论坛里反复猜测高效得多。4. LM Studio 图形化路线的安装与接入4.1 初次上手下载、改缓存目录、加载模型LM Studio 的安装比 Ollama 还简单去官网下安装包双击一路下一步。装完第一次启动你会发现它把模型搜索、下载、加载、聊天、API Server 全放在同一个窗口里跟 Ollama 的命令行思路完全是两个世界。有一个设置务必先做改模型缓存目录。LM Studio 默认也会把模型放在用户目录同样是个 C 盘杀手。在主界面左下角设置里找到模型目录改成想放的盘符路径然后重启应用。已经下载的模型记得手动迁移过去。加载模型时可以在搜索框里直接搜模型名点下载。国内网络环境如果搜索和下载卡顿就走上一节说的 GGUF 手动下载路线把 GGUF 文件放进 LM Studio 的模型目录重启后在本地模型列表里刷新就会出现点一下就能加载。加载界面里有几个参数要解释一下GPU Offload 表示把多少层放到显卡上NVIDIA 显卡就拉到最大纯 CPU 推理就填 0Context Length 就是上文说的上下文长度按内存预算填16GB 内存 7B Q4 建议 4096Threads 是线程数CPU 推理时填逻辑核心数的一半到三分之二通常最快别拉满。这些参数和 Ollama 背后的引擎其实是同一套只是变成了滑条。4.2 本地 API Server 的打开方式和端口LM Studio 最实用的是 Developer 面板里的 Local Server。点开之后能看到一个开关打开后它就在http://localhost:1234/v1上提供 OpenAI 兼容接口旁边还能看到当前加载的模型名和一个小测试区。你可能会问这和 Ollama 的服务有什么区别区别主要在管理方式。Ollama 的模型是拉好、按 tag 管理API 直接用LM Studio 则是你“加载”哪个模型Server 就服务哪个模型更像桌面软件的思路。如果你需要同时给多个应用提供不同模型Ollama 更顺手如果只是临时把当前调好参数的模型接出去给某个工具用LM Studio 更快。举几个实际接法办公助理类工具里如果有“自定义模型 API 地址”填http://localhost:1234/v1API Key 随便填非空字符串就行Dify 这类低代码平台通常也有 Ollama 或 OpenAI 兼容来源的选项填上地址就能用VS Code 的 Continue 扩展里新建一个 OpenAI 兼容 providerBase URL 也填这个。整体体验就是把本地模型当成一个跑在 1234 端口上的假 OpenAI。4.3 后台常驻和开机自启的注意事项LM Studio 作为 GUI 应用比较尴尬的一点是你得先打开它、加载模型Server 才在。想让它像 Ollama 一样后台常驻可以把 LM Studio 加入开机启动并加载一个默认模型。但问题是开机加载一个 7B 模型内存直接先吃掉三四 GB对小内存机器不算友好。所以我的建议是搞服务化部署就交给 OllamaLM Studio 只做桌面端调试和短期 API 使用。这也是很多老玩家最终的配置——两套都装各干各的活。Ollama 常驻提供接口LM Studio 偶尔用来做可视化实验、调参、看各种量化格式实际推理效果的对比。5. 模型参数调优如何让 Qwen 系闭嘴思考、跑得更快5.1 Qwen3 的思考模式与“强迫它不思考”近期高频问题里有条特别传神“怎么强制 qwen3.5-9b-q4_k_m 不思考”先说清楚大家说的 qwen3.5 基本就是 Qwen3 系列社区口误或搜索纠正的结果9B 大概率也是指 Qwen3-8B 的某个社区量化版。Qwen3 默认带思考能力模型在回答前会先输出一大段推理内容速度慢、token 消耗大。你明明只问一句“今天是几号”它非要先分析五分钟这种体验确实抓狂。关闭思路是给推理引擎传一个“不思考”的信号。在 Ollama 的新版本中API 请求参数里可以带think: false如果是命令行交互较新的 CLI 版本可能支持--think false之类的参数具体以当前版本的帮助信息为准。如果版本不支持这些参数就通过 Modelfile 改写默认采样参数再用ollama create生成一个新的本地模型实例。顺带说9B 这种小模型思考模式带来的推理增益本身有限。我在本地上实测关掉思考后响应速度快了差不多一倍token 成本省了将近一半两个任务结果差别不大。对小模型来说关闭思考往往是更划算的选择。5.2 采样参数temperature、top_p 和 repeat_penalty除了思考开关本地模型最常调的采样参数就三样temperature、top_p、repeat_penalty。temperature 控制随机性。代码生成和精确问答场景设低一点0.2 到 0.4 之间太高的值会让模型输出不稳定创意写作想多点花样可以放到 0.7 到 1.0。top_p 是另一种随机性控制和 temperature 相互影响一般保持默认别两个同时乱调。repeat_penalty 控制重复惩罚本地小模型没有充分的对齐训练聊天时特别容易车轱辘话循环遇到这种情况把 repeat_penalty 调到 1.1 到 1.2 能稍微治一下。在 Ollama 里可以直接写在 API 请求的 options 字段里在 LM Studio 里则是右侧面板的采样参数滑条。每次改完注意记录参数和你用的量化版本因为这头“模型在 0.6 温度下表现好”的经验换了量化格式后很可能就不适用了。5.3 显存、内存和速度的取舍心法很多人把本地推理速度差归咎于显卡不够好其实一半的锅在内存带宽。CPU 推理时模型权重要从内存搬到 CPU 计算内存带宽有多高吞吐就有多高。所以笔记本上跑 7B Q4内存是双通道 DDR5速度还能看如果是单通道又锁了频率慢到怀疑人生是正常的。优化思路按优先级排一是把能放 GPU 的层全部放 GPULM Studio 里直接拉 GPU Offload 滑条Ollama 则会在合适的时候自动调度二是换更小量化Q8 换 Q4 速度明显提升但质量会有损失三是减小上下文长度KV cache 对速度的影响比想象中大四是关掉思考模式少生成的 token 意味着更少的等待。如果你有 24G 显存但恰好是两张卡别太天真。多卡并行支持虽然存在但驱动程序、显存分配都会带来更多不确定因素单卡能装下的模型体验更稳。这类偏门场景后面整理成速查表。6. 本地 RAG 与编程助手的实战组合6.1 零基础可复制的本地 RAG从切分到检索“Ollama 简易本地 RAG 知识库”这个话题我建议完全没有基础的人也能跟着走一遍。原理用一句话说文档先切块并算好向量存进向量库提问时把问句也变成向量在库里找到最相关的几块再把这几个片段拼到上下文里让大模型回答。整个过程不复杂只是需要跑几个脚本来串。这里给一个最小可跑的 Python 版本。假设你已经用ollama pull nomic-embed-text拉好了 embedding 模型再安装两个依赖库pip install chromadb requests然后建个脚本把本地一个 txt 文档切片、存库、查询、调用 Ollama 生成回答。代码大致如下import requests import chromadb OLLAMA_URL http://localhost:11434/api EMBED_MODEL nomic-embed-text CHAT_MODEL qwen3:8b CHUNK_SIZE 512 OVERLAP 50 def split_text(path): with open(path, encodingutf-8) as f: text f.read() chunks [] start 0 while start len(text): end min(start CHUNK_SIZE, len(text)) chunks.append(text[start:end]) if end len(text): break start end - OVERLAP return chunks def embed(texts): embeds [] for t in texts: r requests.post(f{OLLAMA_URL}/embed, json{model: EMBED_MODEL, input: t}) embeds.append(r.json()[embeddings][0]) return embeds client chromadb.Client() col client.create_collection(my_notes) chunks split_text(notes.txt) ids [str(i) for i in range(len(chunks))] vectors embed(chunks) col.add(idsids, documentschunks, embeddingsvectors) def ask(query): qv embed([query])[0] hits col.query(query_embeddings[qv], n_results3) ctx \n---\n.join(hits[documents][0]) prompt f根据如下资料回答问题如果资料不够就说不知道。\n\n资料\n{ctx}\n\n问题{query} r requests.post(f{OLLAMA_URL}/chat, json{ model: CHAT_MODEL, messages: [{role: user, content: prompt}], stream: False, options: {temperature: 0.2}, }) return r.json()[message][content] print(ask(这份文档里提到的核心结论是什么))这段代码刻意做得很简化不搞文件结构迭代目的就是让你尽快跑通链路。跑通了再考虑生产化换成熟的向量库加上文档解析器处理 PDF 和 Word再考虑 GraphRAG 这类知识图谱玩法。社区里常见的 LLM Wiki、本体定义这类结构化资料本质上也还是一堆 Markdown 或 JSON 文本丢进这个“切分-存储-检索”流程就能直接利用。6.2 用本地模型搭编程助手编程助手是本地模型最热门的落地场景。我的做法是用 VS Code 的 Continue 插件装好后进入配置页面选 OpenAI 兼容 providerBase URL 填http://localhost:11434/v1Ollama或http://localhost:1234/v1LM StudioAPI Key 随便填Model 填你拉的模型名比如qwen2.5-coder:7b。Continue 能分两路配置Tab 自动补全和对话。自动补全对延迟极其敏感用 3B 到 4B 的小模型比较合适聊天、重构这类任务用 7B 或更大的模型质量和理解力更好。这两路可以分别指定模型这也是本地推理栈弹性的体现。不少高级玩家会直接跑 llama.cpp 自带的 server 模式来做补全原理一模一样只是少了包管理门槛略高。实测下来本地编程助手对常见框架的补全质量相当可以但别指望它替代云端的旗舰模型。它真正的价值是代码不离开机器、免订阅费、可以随时换模型对比效果。注意别把上下文塞太满7B 模型处理超长文件时注意力容易涣散。6.3 选模型的参考思路榜单、量化、实测三角提到选模型很多人第一反应是查公开榜单比如 Open LLM Leaderboard。榜单是有参考价值的但坑在于它测的是大算力环境下的性能和你在 16GB 内存、Q4 量化后的表现不一定一致。一个 70B 的榜单冠军在你机器上根本没法跑反而一个排名中等的 8B 模型经过良好量化后体验更实际。我自己的选型流程是先在榜单和目标社区口碑里圈出几个候选系列比如指令跟随强的 Qwen 系、代码强的 DeepSeek 系、通用均衡的 Llama 和 Mistral 系然后去模型发布页确认有没有靠谱的 GGUF 量化版本优先选 Q4_K_M最后在本机实测一次真实任务——给它一段代码或文档用同样的 prompt 改了 temperature 对比输出。这一步不可跳过实际体验往往和榜单排名不一致。另外注意模型体积和“聪明程度”不是线性关系。本地场景宁可放弃一味追大选一个量化得当、生态完善的 7B 到 14B 模型比强行塞一个 32B 但上下文只能开 2K 的模型舒服得多。7. 高频问题排查速查表7.1 按现象定位的速查表现象大概率原因处理办法安装脚本或 Release 下载超时境外 CDN 不稳定用国内下载加速前缀或镜像站或直接下安装包ollama pull 拉模型龟速模型文件在境外存储用镜像站下载 GGUF 再手动导入run 报 500 internal server error文件损坏、版本过旧、磁盘满、端口冲突看 server.log 定位重 pull升级 Ollama所有层都在 CPU 上跑GPU 后端没生效或 offload 层数设成 0检查驱动LM Studio 拉满滑条生成速度极慢内存带宽低、上下文太长、没开 GPU减少 ctx换小量化关思考模式上下文被截断或回答跑偏ctx 设太小输入超限调大上下文或改用 RAG 减少喂入内容启动即内存溢出模型权重加 KV cache 超出内存换更小量化减少 ctx关其他程序API 连接被拒服务没启动、端口被占、host 配置错误先启动服务确认 11434 或 1234 端口聊天车轱辘话重复repeat_penalty 默认太低调到 1.1 到 1.2适当提高 temperature中文输出很差模型英文语料占比太高换 Qwen 系等中文能力强的模型加中文示例 prompt显存占用异常大全部层放 GPU 且 ctx 过大分部分层给 CPU减少显存压力Mac 发热严重Metal 后端全部 offload 到 GPU部分层留 CPU或在 LM Studio 里限流7.2 日志是排障的第一现场表格只是速查更重要的排障习惯是遇到问题先去翻日志。Ollama 的日志在 macOS 是~/.ollama/logs/server.logWindows 是%LOCALAPPDATA%\Ollama\server.logLM Studio 的问题一般看应用内 Logs 面板和模型加载时的错误弹窗。日志里的具体异常往往一句话就说清真正原因比在论坛里反复猜测高效得多。我自己处理过一次比较诡异的 500 报错折腾半天重装了 Ollama 都没用最后看日志才发现是磁盘临时目录满了模型映射进内存失败。这种问题如果只盯着“错误提示”本身可能永远找不到答案。8. 一点个人经验这个推理栈拆到最后其实遵循一个朴素的道理把复杂的东西按层拆开每一层选一个合适的工具而不是让一个工具解决所有问题。我自己现在的固定配置是三件套齐备Ollama 常驻后台做模型管理和 API 服务模型库用 Qwen 系和代码模型混着遇到快速验证、比较不同量化版本的实际效果时打开 LM Studio 做可视化对比真正想了解某个参数为什么生效就去翻 llama.cpp 的官方示例和 GGUF 格式文档。三件工具各有分工并不冲突。至于 ONNX Runtime那是 Windows 生产环境另一条路线和这套生态不互通自己玩还是 llama.cpp 系更顺。另外一个很实际的建议先跑通最小链路再谈优化。很多人一上来就想搭完 RAG 又要接 Agent结果模型都还没稳定跑起来。我的做法永远是把最小可用闭环放在第一位先ollama run通一个模型再在代码里调通一次 API最后才逐步叠加向量库、插件、工作流。每一步都留好验证方式出问题时知道是哪一层出了事。本地推理这条路的乐趣恰恰在于它没有标准答案。你机器配置不同、任务类型不同、网络环境不同最优解可能完全不同。希望这篇拆解能让你少走点弯路把时间花在真正有意思的模型实验上。