从零开始用 Ollama 本地跑大模型、Embedding 与 Rerank

在这里插入图片描述

在做大模型应用,尤其是企业知识库、内部问答、代码库检索、客服助手这类 RAG 项目时,很多团队都会优先考虑一个现实问题:数据能不能不出内网。

如果你把所有内容都发到云端模型,再让云端返回答案,开发速度当然快,但也意味着你要面对数据合规、隐私、安全审计、专线网络、成本波动等一系列问题。也正因为这样,“本地运行模型”在很多项目里并不是可选项,而是前提。

这时候,Ollama 往往是一个非常适合入门的选择。它把“下载模型、在本机运行模型、通过命令行或 API 调用模型”这几件事做得足够简单。对小白来说,你不需要先把 vLLMllama.cppTransformers、CUDA 参数全部研究一遍,先把模型跑起来,再理解整个 RAG 流程,会轻松很多。

这篇文章就从初学者视角出发,系统讲清楚下面几件事:

  • Ollama 是什么,为什么很多本地 AI 项目会先选它。
  • 如何安装并运行 Ollama
  • 什么是 LLMEmbeddingRerank,它们分别在 RAG 里干什么。
  • 如何下载 qwen3qwen3-embeddingnomic-embed-textdengcao/Qwen3-Reranker-0.6B:Q8_0 这些模型。
  • 它们分别该在什么时候用。
  • 新手最容易踩的坑有哪些。

如果你之前只知道“RAG 就是把文档喂给模型”,那这篇文章就是为你写的。

一、先别急着下载模型,先把三个角色分清楚

很多新手一上来会把所有模型都统称为“大模型”,但在真正的 RAG 项目里,至少有三类模型经常同时出现,而且它们干的不是一回事。

类型 负责什么 输入输出 在 RAG 里的位置 典型模型
LLM 阅读上下文、生成答案、总结、改写 输入文本,输出自然语言 最后负责“回答” qwen3
Embedding 把文本转成向量,便于相似度检索 输入文本,输出向量数组 检索阶段 qwen3-embeddingnomic-embed-text
Rerank 对召回结果重新排序,挑出更相关的内容 输入“问题 + 候选文档”,输出相关性分数 检索后的精排阶段 dengcao/Qwen3-Reranker-0.6B:Q8_0

你可以把它们理解成三个岗位:

  • LLM 是写答案的人。
  • Embedding 是图书馆检索员,负责先把可能相关的资料找出来。
  • Rerank 是复核员,负责把“看起来都差不多相关”的结果重新排个序,把最可能有用的文档放前面。

如果你做的是最简单的本地聊天助手,只需要 LLM

如果你做的是文档问答、知识库搜索、代码检索,通常至少需要 LLM + Embedding

如果你发现“已经检索到了,但最相关的那几条经常排不在前面”,这时候再考虑加 Rerank

二、为什么做本地 AI 项目时,很多人会先选 Ollama

Ollama 的核心价值,不是它让模型变强了,而是它把本地模型运行这件事做得足够顺手。

对初学者来说,它有几个非常现实的优点:

  • 安装简单,Windows、macOS、Linux 都支持。
  • 下载模型直接一条命令,ollama pull 模型名 就可以。
  • 第一次运行模型时会自动下载,不需要自己找权重文件、配参数、写启动脚本。
  • 默认就提供本地 API,地址通常是 http://localhost:11434
  • 对接应用方便,CLI、HTTP API、Python、JavaScript 都能接。

如果你只是想先把本地大模型和 RAG 流程跑通,Ollama 的学习曲线通常要比很多底层推理框架更平缓。

当然,它也不是万能的。本文后面会专门讲到,Rerank 这一块,当前在 Ollama 生态里还存在支持边界,你不能想当然地把“模型能下载”理解成“功能已经能完整投入生产”。

三、先装好 Ollama

1. Windows 安装方式

如果你是 Windows 用户,最简单的方式就是去官方页面下载 OllamaSetup.exe 安装包。根据官方文档,Windows 版本安装后会在后台运行,且 ollama 命令可以直接在 cmdPowerShell 等终端里使用;本地 API 默认暴露在 http://localhost:11434

官方还说明了几个非常实用的细节:

  • Windows 10 22H2 或更新版本可用。
  • 安装程序默认装在当前用户目录下,不要求管理员权限。
  • 如果模型不想放在系统盘,可以设置用户环境变量 OLLAMA_MODELS 修改模型存储目录。

如果你的 C 盘比较小,这一步建议尽早做,不然后面下载几个模型,很容易把系统盘塞满。

2. Linux 安装方式

Linux 下官方安装命令如下:

curl -fsSL https://ollama.com/install.sh | sh

手动启动服务:

ollama serve

如果你希望开机自动启动,官方文档也给出了 systemd 配置方式。

3. 安装后先做两个最基本的确认

确认 ollama 命令是否可用:

ollama -v

如果你在 Windows 上已经正常安装,通常不需要再手工执行 ollama serve,因为它会在后台运行。Linux 手工安装场景下,则更常见需要自己启动服务。

四、一定要先学会的 6 条基础命令

开始下载模型之前,先记住这几条命令:

ollama pull qwen3
ollama run qwen3
ollama ls
ollama ps
ollama stop qwen3
ollama rm qwen3

它们分别表示:

  • ollama pull:下载模型到本地。
  • ollama run:运行模型;如果本地没有,会先下载。
  • ollama ls:查看本地已下载模型。
  • ollama ps:查看当前正在内存中运行的模型。
  • ollama stop:停止正在运行的模型。
  • ollama rm:删除本地模型。

如果你是新手,我建议把“下载”和“运行”这两个动作分开,先 pull,再 run。这样你更容易知道自己现在到底卡在“下载阶段”还是“推理阶段”。

五、第一步:先把 LLM 跑起来,推荐从 qwen3 开始

Ollama 官方模型库里,qwen3 是一个很适合本地部署的中文/多语言大模型系列。官方库页面显示,qwen3 覆盖了 0.6b1.7b4b8b14b32b30b235b 等不同体量。

对小白来说,选择思路可以先这么理解:

  • 机器资源一般,只想先体验完整流程:先试 qwen3:0.6b-fp16 或更小标签。
  • 想要中文问答效果更稳一些:优先从 qwen3:4b 开始。
  • 机器配置较强,希望生成质量更好:可以试 qwen3:8b 或更高。

最基础的下载方式:

ollama pull qwen3:4b

运行方式:

ollama run qwen3:4b

进入交互界面后,你可以直接问:

请用通俗的话解释一下什么是 RAG。

如果模型能正常回复,说明你的本地大语言模型已经跑起来了。

用 API 调一次,感受一下它其实就是本地服务

Windows 下用 PowerShell:

$body = @{
  model = "qwen3:4b"
  messages = @(
    @{
      role = "user"
      content = "请用三句话解释 Embedding 模型是干什么的"
    }
  )
  stream = $false
} | ConvertTo-Json -Depth 6

Invoke-RestMethod `
  -Uri "http://localhost:11434/api/chat" `
  -Method Post `
  -ContentType "application/json" `
  -Body $body

看到返回 JSON,就说明 Ollama 不只是一个聊天终端,本质上还是一个本地模型服务。

这对后续做 RAG 非常关键,因为你真正的业务程序,通常不是人工敲命令,而是通过本地 API 去调模型。

六、Embedding 模型是什么,为什么 RAG 基本离不开它

如果说 LLM 负责“回答”,那 Embedding 负责“找资料”。

在 RAG 里,常见流程大概是这样:

  1. 先把知识库文档切分成很多小段。
  2. Embedding 模型把每段文本变成向量。
  3. 把这些向量存进向量数据库。
  4. 用户提问时,再把问题也转成向量。
  5. 用相似度搜索找出最相关的若干段文本。
  6. 再把这些文本连同问题一起交给 LLM 生成答案。

也就是说,Embedding 模型不是用来聊天的,它的职责是把“文本相似度”这件事变成可计算的数字空间问题。

一个非常重要的误区

很多新手第一次看到 Embedding 模型,也会想用 ollama run 模型名 来问问题。这个方向就错了。

Embedding 模型的结果不是自然语言答案,而是向量。你真正关心的是:

  • 两段文字是不是语义接近。
  • 一个问题和哪些知识片段最相似。
  • 哪段代码、哪篇文档、哪个 FAQ 最可能匹配当前查询。

七、如何下载 Embedding 模型

1. 下载 qwen3-embedding

Ollama 官方模型库中,qwen3-embedding 是官方推荐的嵌入模型之一。根据官方库页面和 Qwen 官方博客,这个系列覆盖 0.6B4B8B 三个尺寸,支持 100+ 语言,并面向文本检索、代码检索、分类、聚类、双语挖掘等任务。

0.6B 为例,当前常见标签可以直接使用:

ollama pull qwen3-embedding:0.6b-q8_0
ollama pull qwen3-embedding:0.6b-fp16

如果你在网上看到有人写 qwen3-embedding:0.6b,要注意一个细节:具体可用的 tag 以你下载当天的模型库页面为准,不同量化版本通常会体现在标签后缀里,比如 q8_0fp16

2. 下载 nomic-embed-text

如果你想先上手一个体积更小、更“开箱即用”的嵌入模型,nomic-embed-text 也是很常见的入门选择。

下载命令:

ollama pull nomic-embed-text

官方模型页明确说明,它是一个“只能用于生成 embedding”的模型,不能拿来正常聊天。

八、Embedding 什么时候用 qwen3-embedding,什么时候用 nomic-embed-text

这是很多初学者最关心的问题之一。

更适合优先试 qwen3-embedding 的场景

  • 你的知识库以中文为主,或者中英混合比较多。
  • 你需要多语言检索。
  • 你需要代码检索、技术文档检索。
  • 你希望后续和 Qwen3 系列形成更统一的技术栈。

更适合先试 nomic-embed-text 的场景

  • 你只是想快速把向量检索流程跑通。
  • 你的机器资源比较一般,想先用更轻量的模型验证方案。
  • 你更在意“先能用起来”,而不是一开始就追求最强中文检索效果。

如果你是第一次做本地 RAG,我建议你用下面这套组合先上手:

  • 生成模型:qwen3:4b
  • 嵌入模型:qwen3-embedding:0.6b-q8_0

这套组合的思路很简单:回答和检索都走 Qwen3 系列,认知成本更低,中文场景通常也更顺手。

九、如何真正调用 Embedding 模型

根据 Ollama 当前官方文档,推荐的接口是:

POST /api/embed

最简单的调用示例:

curl http://localhost:11434/api/embed -d '{
  "model": "qwen3-embedding:0.6b-q8_0",
  "input": "RAG 的核心是检索增强生成。"
}'

如果是 Windows PowerShell:

$body = @{
  model = "qwen3-embedding:0.6b-q8_0"
  input = "RAG 的核心是先检索,再生成。"
} | ConvertTo-Json

Invoke-RestMethod `
  -Uri "http://localhost:11434/api/embed" `
  -Method Post `
  -ContentType "application/json" `
  -Body $body

返回内容里最关键的是 embeddings 字段,它会是一个数字数组,也就是向量。

再提醒一次:新旧接口不要混淆

你在一些旧教程或部分模型页里,可能还会看到:

  • /api/embeddings
  • prompt

而当前官方文档主推的是:

  • /api/embed
  • input

如果你照着老教程写,结果接口报错,不一定是模型有问题,很可能只是你用了旧写法。

十、Rerank 模型又是什么,为什么很多 RAG 系统会在后面再加一层

当你已经有了 Embedding 检索,为什么还需要 Rerank

因为“粗召回”不等于“最终顺序最优”。

举个最常见的例子:

  • 你先用向量检索从知识库里找出 Top 20 个可能相关的片段。
  • 20 个片段里,很多都“有点像”,但真正最相关的也许只排在第 7 或第 9

这时候,Rerank 模型就派上用场了。它会把“用户问题 + 候选文档片段”当成成对输入,然后对每一对打相关性分数,再重新排序。

所以,Embedding 更像“先撒网捞一批”,Rerank 更像“再做一次精排”。

Qwen 官方博客对这件事解释得很清楚:Embedding 模型处理的是单段文本语义表示,而 Reranking 模型处理的是“文本对”,输出的是相关性分数。

十一、如何下载 Rerank 模型

以你提到的模型为例:

ollama pull dengcao/Qwen3-Reranker-0.6B:Q8_0

也可以直接运行:

ollama run dengcao/Qwen3-Reranker-0.6B:Q8_0

但这里有一个必须写清楚的现实问题。

十二、很关键的一点:Rerank 目前在 Ollama 里有“能下载”不等于“能完整用”的边界

这部分非常重要,很多文章都会略过去,但如果不讲清楚,新手最容易在这里浪费时间。

截至本文写作时间,Ollama 官方公开文档重点覆盖的是聊天、生成、embedding 等能力,我没有看到官方公开的专门 rerank API 文档。而你提到的 dengcao/Qwen3-Reranker-0.6B:Q8_0 模型页里,维护者也明确写到:

  • 截止 2025-06-11Ollama 暂不支持重排模型。
  • Ragflow 0.19Dify 等在接入 Ollama 重排模型时会报错或无效。
  • 如果需要真正使用重排模型,更现实的方式是走 API,或者本地用 vLLM 等方式部署。

这意味着什么?

意味着你今天完全可以把这个模型“下载到本地”,但不要立刻得出“那我就能像 embedding 一样直接接一个官方 rerank 接口”的结论。

更直白地说:

  • 下载成功 不代表 Ollama 已经提供成熟的 rerank 调用方式
  • 模型页能看到 run/chat 示例 不代表这就是标准的“重排接口”。
  • 框架里能填模型名 也不代表它一定真的能完成精排。

新手应该怎么理解这件事

如果你现在的目标是“先把本地 RAG 跑起来”,建议这样分阶段:

  1. 先用 LLM + Embedding 跑通完整问答流程。
  2. 观察检索效果是否真的不够好。
  3. 如果确实需要 Rerank,再评估单独部署重排服务,比如 vLLMTransformers 推理服务,或者框架原生支持的 reranker 方案。

这比一开始就把所有能力都压到 Ollama 身上,更稳,也更符合工程实际。

十三、那到底什么时候才需要 Rerank

不是所有项目都需要 Rerank

以下情况,通常说明你可以认真考虑加重排层:

  • 知识库规模变大后,向量检索召回结果“差不多都相关”,但前几名不够准。
  • 用户问题比较短、比较模糊,单靠向量相似度不稳定。
  • 你需要更高质量的 Top 3Top 5 文档,而不是只要“大概找到了”。
  • 你做的是合同检索、制度检索、代码库检索、FAQ 精准匹配这类对排序质量敏感的任务。

以下情况,可以先不加:

  • 只是做演示版或 PoC。
  • 知识库很小。
  • 目前连 chunk 切分、embedding、召回条数这些基础问题都还没调顺。
  • 你的瓶颈其实在 LLM 总结能力,而不是召回排序。

一句话总结:Rerank 是提升上限的,不是所有项目一开始就必须有的。

十四、小白最推荐的三套起步组合

方案一:先把流程跑通

  • LLMqwen3:0.6b-fp16 或更小可用标签
  • Embeddingnomic-embed-text
  • Rerank:先不加

适合人群:

  • 第一次接触本地大模型
  • 机器资源有限
  • 先验证从“导入文档”到“本地问答”整个链路

方案二:中文 RAG 更平衡的组合

  • LLMqwen3:4b
  • Embeddingqwen3-embedding:0.6b-q8_0
  • Rerank:先预留,必要时再独立部署

适合人群:

  • 主要做中文知识库问答
  • 想兼顾效果与门槛
  • 需要代码文档、内部文档、FAQ 检索

方案三:效果优先

  • LLMqwen3:8b 或更高
  • Embeddingqwen3-embedding:4b
  • Rerank:独立部署 Qwen3-Reranker 或其他成熟 reranker

适合人群:

  • 已经进入正式项目阶段
  • 对检索排序质量要求更高
  • 愿意接受更复杂的部署和资源消耗

十五、一个最容易理解的本地 RAG 流程图

你可以把整个流程理解为下面这条链路:

文档导入
  -> 文本切块
  -> Embedding 模型转向量
  -> 向量库存储
  -> 用户提问
  -> 问题转向量
  -> 检索出 TopK 文档
  -> (可选)Rerank 重新排序
  -> 把最相关文档 + 用户问题交给 LLM
  -> 生成最终答案

在这条链路里:

  • Embedding 决定“找得准不准”。
  • Rerank 决定“排得准不准”。
  • LLM 决定“说得好不好”。

只盯着 LLM,通常做不好 RAG;只会下载聊天模型,也不等于你真的搭好了知识库问答系统。

十六、几个特别常见的坑

1. 以为 Embedding 模型可以直接聊天

不可以。它输出的是向量,不是答案。

2. 以为 runpull 完全一样

run 第一次确实也会下载,但排错时更推荐先 pullrun

3. 以为下载了 Rerank 模型,就一定能直接接入所有框架

不一定。当前这正是最容易踩坑的地方。

4. 以为本地运行就一定不吃资源

本地部署只是把成本从“云 API 调用费”变成了“本地算力、显存、磁盘、运维复杂度”。

5. 只关注模型,不关注数据切块

RAG 质量差,很多时候不是模型不够强,而是 chunk 切分过粗、过细、重叠不合理,或者脏数据太多。

6. 忽略模型存储路径

如果你在 Windows 上不提前规划 OLLAMA_MODELS,很可能几次下载之后系统盘就开始报警。

十七、写给小白的落地建议

如果你现在准备开始做一个本地知识库项目,不要上来就追求“最强模型组合”。更实际的做法是:

  1. 先装好 Ollama
  2. 先跑通一个聊天模型,比如 qwen3:4b
  3. 再拉一个 embedding 模型,比如 qwen3-embedding:0.6b-q8_0nomic-embed-text
  4. 先把“文档入库 -> 检索 -> 回答”打通。
  5. 只有当你发现召回顺序明显影响效果时,再评估 Rerank

这是最省时间、也最符合工程逻辑的路线。

十八、结语

对很多需要数据安全、内网部署、离线运行、控制成本的项目来说,Ollama 确实是本地大模型实践里一个非常合适的起点。

你可以把它理解成一扇门:

  • 门的第一层,是本地运行 LLM
  • 门的第二层,是理解 Embedding,把聊天升级成真正的 RAG。
  • 门的第三层,是在效果不够时,再引入 Rerank 做精排。

而真正的关键,不是你能不能一口气下载很多模型,而是你是否知道每种模型为什么存在、该在什么时候用、它在整个链路里扮演什么角色。

如果只记住一句话,我希望你记住这句:

LLM 负责回答,Embedding 负责找,Rerank 负责排。

把这三个角色分清楚,你对本地 RAG 的理解就已经超过很多“只会下载模型”的入门阶段了。

参考资料

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐