乐于分享
好东西不私藏

「码途AI」AI学习专题 | 每周一章 – 第四章 10分钟搭建本地大语言模型!用LangChain调用Ollama,轻松上手开发

「码途AI」AI学习专题 | 每周一章 – 第四章 10分钟搭建本地大语言模型!用LangChain调用Ollama,轻松上手开发

      很多人一提到本地大模型,第一反应就是:这东西肯定得高配电脑才能跑。其实没那么绝对。普通电脑也能跑,只是能跑到什么程度、适合跑什么模型、体验到底怎么样,这些要提前想清楚。

       我最近刚好完整跑了一遍。从安装 Ollama,到下载模型,再到用 LangChain 在 Python 里调用本地模型做流式输出,整个过程并不复杂。

       所以这篇文章不只讲安装步骤,也把这次实测过程里的结论一起整理出来。如果你想先把本地模型跑起来,照着做就行;如果你更关心我们平时使用的电脑到底适合什么模型,后面的部分也能直接参考。

一、为什么值得试一次本地大模型?

原因很简单:省钱,也更可控。

和直接调用云端 API 相比,本地部署有几个很实际的好处:

  • 不用反复买 Token
  • 数据不出本机,隐私压力更小
  • 适合做原型验证和功能测试
  • 跑通之后,后面接代码会更灵活

尤其是对产品经理、独立开发者和刚接触 AI 应用的人来说,本地跑通一遍,理解会快很多。你会更清楚模型是怎么运行的,代码是怎么接进去的,性能瓶颈到底在哪里。

二、Ollama 是什么?

可以把 Ollama 理解成一个本地模型运行工具。

它把模型下载、模型管理和本地推理都封装好了,不需要自己从底层一点点搭。对想快速上手的人来说,它最大的优点就是简单。

最常用的命令就这几个:

ollama pull qwen3:4bollama listollama run qwen3:4b

如果你是第一次在本地玩大模型,Ollama 很适合拿来入门。

三、这次测试用的电脑配置

先把测试环境放出来,方便你对照自己的机器判断。

我的电脑配置:

  • 内存:16GB
  • 处理器:13th Gen Intel(R) Core(TM) i5-1345U
  • CPU 核心数:10 核

先说结论:这类 i5-1345U + 16GB 内存 的联想轻薄本,可以跑本地大模型,但更适合轻量级、量化后的小模型。真要说体验,大概就是“能用,但别指望特别流畅”。

如果你的电脑配置和我接近,这篇文章里的结论基本都能参考。

四、这台电脑的瓶颈到底在哪里?

对这台机器来说,瓶颈主要有两个。

1. 内存是第一道门槛

虽然机器是 16GB 内存,但 Windows、浏览器、输入法和各种后台程序本身就会占掉不少。真正跑模型的时候,能稳定分给模型的,通常也就 10GB 左右。

这意味着:

  • 4B 及以下模型更稳妥
  • 7B 模型可以尝试,但得用更激进的量化版本,还要把上下文压小
  • 更大的模型,基本不适合这类轻薄本上使用,也跑不起来。

我刚开始测试时,使用的是deepseek-r1:8b模型,就遇到过很典型的报错:

model requires more system memory (3.3 GiB) than is available (2.7 GiB)

这句话的意思很直接:当前可用内存不够,模型跑不起来,所以后面我换了4B及以下的模型。

要注意,这里看的是“可用内存”,不是“总内存”。就算机器标着 16GB,如果后台程序开得多,一样可能报这个错。

2. CPU 能跑,但速度有上限

i5-1345U 是轻薄本常见的低功耗处理器,日常办公没问题,但不是专门拿来做大模型推理的。再加上没有独显,本地推理基本只能靠 CPU 和内存硬扛。

实际体验就是:

  • 能生成结果,但不会特别快
  • 适合做轻量问答、文档总结、Demo 演示
  • 不适合对实时性要求高的场景

五、这台机器适合跑什么模型?

如果把“能不能跑”和“跑起来舒不舒服”分开看,这台机器大致可以这样选模型:

模型参数量
推荐量化版本
体验判断
适合场景
1B 到 2B
Q4_K_M / Q5_K_M
最轻量,速度更快
快速问答、简单总结、轻量代码补全
3B 到 4B
Q4_K_M
这台机器上最均衡
日常对话、文档摘要、原型验证
7B
Q3_K_M / Q4_K_M
理论能跑,但明显吃资源
适合尝鲜,不适合高频日常使用

如果压缩成一句话,就是:

  • 最适合的是 3B 到 4B 的量化模型
  • 1B 到 2B 更快,但回答质量和稳定性会差一些
  • 7B 不建议当这台机器的日常主力模型

六、第一步:安装 Ollama

Windows 用户直接去官网下载安装就行。

安装完成后,先在 PowerShell 里执行:

ollama --version

能看到版本号,说明安装成功。

然后再执行:

ollama list

如果你是第一次装,列表为空很正常。

七、第二步:下载本地模型

结合这台 16GB 机器的表现,我更建议先从中小模型开始。

比如先拉一个 4B 模型:

ollama pull qwen3:4b

如果你想先验证流程、尽快看到结果,也可以直接拉一个更小的模型:

ollama pull tinyllama:1.1b

下载完成后,用下面这条命令确认本地模型列表:

ollama list

如果你只是想先把流程跑通,可以这么选:

  • 想要相对稳一点:qwen3:4b
  • 想要尽快跑起来:tinyllama:1.1b

还有几个很实用的小建议:

  • 跑模型前,尽量关掉浏览器、Office 之类的后台程序
  • 上下文窗口不要开太大,轻薄本上 1024 以内更合适
  • 优先用已经量化好的模型,不要一开始就追求参数更大
我安装的模型:

八、第三步:安装 LangChain 依赖

如果你只是想在终端里直接和模型对话,到这一步其实已经够了。

但如果你想用 Python 调用本地模型,就还要装 LangChain 相关依赖:

pip install langchain langchain-ollama

我一开始测试时,第一次就碰到了这个错误:

ModuleNotFoundError: No module named 'langchain_ollama'

本质上没别的原因,就是依赖没装好。把 langchain-ollama 装上之后,代码就能继续跑。

九、第四步:写一个最小可用测试脚本

这里给一个尽量简单、直接能跑的例子。

它做了三件事:

  • 用 SystemMessage 约束模型角色
  • 用流式输出实时打印内容
  • 记录总响应时间,方便对比不同模型的速度
import timefrom langchain_core.messages import HumanMessage, SystemMessagefrom langchain_ollama import ChatOllamamessages = [    SystemMessage("你是码途AI问答助手,专注于技术问题解答。请用简洁、专业的中文回答用户的问题。"),    HumanMessage("请用简洁的语言介绍一下你是谁,以及你能提供哪些帮助。")]ollama_llm = ChatOllama(model="tinyllama:1.1b", num_ctx=256)start_time = time.time()for chunk in ollama_llm.stream(messages):    print(chunk.content, end="", flush=True)end_time = time.time()print(f"\n响应时间: {end_time - start_time:.2f} 秒")

运行命令:

python .\test-ollama.py

使用qwen3:4b 模型,截取其中一次问答如下,耗时 66.55秒

十、为什么后来我改用了小模型?

原因很实际:大一点的模型在这台机器上耗时长。

我前面试过更大的模型,结果很直接,要么内存不够,要么速度太慢。为了先把整条链路跑通,我后面切换成了更小的模型,比如:

  • tinyllama:1.1b
  • num_ctx=256

这么做的好处很明显:

  • 更容易成功运行
  • 内存压力更小
  • 响应速度更快
  • 更适合做演示和学习

使用tinyllama:1.1b 模型,截取其中一次问答如下,耗时 5.47秒

十一、用了小模型之后,我碰到哪些问题?

很多教程都会告诉你,小模型更省资源、速度更快。这句话没错,但只说了一半。

另一半是:小模型更容易答偏,稳定性也差一些。

我实际测试下来,主要碰到了下面几个问题。

1. 回答会跑偏

明明已经在系统消息里写清楚角色了,用户问题也很明确,但有些回答还是会偏题,甚至看起来有点奇怪。

这说明小模型在理解角色和约束这件事上,本来就没那么稳。

2. 有时中文,有时英文

同一段代码,多跑几次,输出语言不一定稳定。有时候是中文,有时候会突然冒出一段英文。

原因通常也不复杂:

  • 小模型约束能力弱
  • 训练语料本身就是多语言混合
  • 提示词不够强时,语言更容易漂移

3. 容易重复、啰嗦

小模型很容易把一句话能说清的事情,拉成一大段。看起来字很多,但真正有用的信息不多。

常见表现有:

  • 同一个意思反复说
  • 内容空泛
  • 句子看着完整,但重点不够明确

4. 风格不稳定

有时候像客服,有时候像英文助手,有时候又像在写宣传文案。

如果只是自己测试,这还不算大问题;但如果真拿去做产品原型,这种漂移感会很明显。

5. 速度快了,但没快到“秒回”

换成小模型之后,响应时间确实降下来了。我测试里大概见过这些结果:

  • 12.43 秒
  • 11.01 秒
  • 7.96 秒
  • 5.17 秒

说明小模型确实有提速效果,但也别期待它在这类轻薄本上像云端服务一样“秒回”。

影响本地响应速度的,不只是模型大小,还有这些因素:

  • 当前系统资源占用
  • CPU 负载
  • 上下文长度
  • 问题本身的复杂度
  • 输出内容的长短

十二、小模型适合什么场景?

我的结论是:小模型很适合拿来跑流程,但不适合直接承担高质量输出任务。

适合它的场景有:

  • 本地体验大模型
  • 验证 LangChain 调用链路
  • 快速做 Demo
  • 做原型和功能验证
  • 学习提示词怎么写

如果你想要的是更自然、更稳定、更像正式助手的回答,那小模型通常只能当过渡方案。

十三、怎么尽量减少小模型“答得怪”的问题?

如果你现在只能先用小模型,那至少可以先做这几件事。

1. 系统消息尽量写具体

不要只写“你是一个 AI 助手”,这种约束太弱。

像下面这种会更有效:

SystemMessage("你是码途AI问答助手,专注于技术问题解答。请用简洁、专业的中文回答用户的问题。")

这里一次性把角色、领域、语言和语气都说清楚了。

2. 用户问题尽量明确

不要只问“介绍一下自己”。

改成“请用简洁的语言介绍一下你是谁,以及你能提供哪些帮助”,模型通常会更容易答在点上。

3. 上下文别开太大

如果只是本地测试,没必要一开始就把上下文窗口拉很高。

比如:

ChatOllama(model="tinyllama:1.1b", num_ctx=256)

这样更省内存,也更适合轻量测试。

4. 对小模型的预期要放对

小模型最重要的价值,不是一次性给你特别高质量的回答,而是帮你先把这条链路跑通:

  • 模型部署
  • 代码调用
  • 提示词设计
  • 流式输出
  • 基础问答验证

流程跑通了,后面再换更强的模型,才更有意义。

十四、什么时候该换更大的模型?

当你已经把这些都跑顺了:

  • Ollama 安装好了
  • 模型能正常下载和运行
  • LangChain 能顺利调用
  • 流式输出没有问题
  • 提示词结构也基本稳定了

那下一步就该考虑换更强一点的模型,去提升回答质量。

如果机器资源允许,可以优先试 4B 左右的模型,在速度和质量之间找一个平衡点。

如果资源不够,那就只能接受这个现实:本地体验本来就是在做取舍。

  • 要速度,就选更小模型
  • 要质量,就选更大模型
  • 想两边都兼顾,就得上更好的硬件

十五、最后做个总结

把这次实测压缩成几个结论,其实很清楚:

  • Ollama 很适合做本地入门,安装和使用门槛都不高
  • LangChain 接本地模型并不复杂,适合做快速实验
  • 16GB 内存的轻薄本可以跑中小模型,但不适合追更大的参数量
  • 这类机器上,3B 到 4B 的量化模型通常最均衡
  • 小模型能明显降低门槛,但回答质量更容易波动
  • 如果只是学习和验证流程,小模型完全够用
  • 如果要做更正式的产品体验,最终还是得看模型质量和硬件能力

本地大模型真正有意思的地方,不只是把它跑起来,而是你在这个过程中,会很快知道什么方案适合自己,什么地方值得继续投入。

如果你也在尝试本地大模型,欢迎关注码途AI。后面我会继续分享更多 LangChain 实战、本地模型调优和 AI 应用落地的内容。