在这里插入图片描述

引言

随着大模型技术的快速发展,越来越多的企业开始思考如何将这项技术真正落地应用。相比于依赖云端 API 服务,私有化部署正在成为企业的必行趋势。

为什么企业需要私有化部署大模型?

私有化部署大模型具有以下显著优势:

  • 数据安全与隐私保护: 企业的敏感数据无需上传到第三方服务器,完全在本地环境中处理,从根本上消除了数据泄露的风险。这对于金融、医疗、法律等对数据安全要求极高的行业尤为重要。
  • 成本可控: 虽然初期需要一定的硬件投入,但长期来看,私有化部署可以避免持续的 API 调用费用。特别是对于高频调用场景,成本优势会更加明显。
  • 服务稳定性: 不依赖外部网络和第三方服务的可用性,避免因网络波动或服务商故障导致的业务中断。企业可以完全掌控服务的可用性和响应速度。
  • 定制化能力: 企业可以根据自身业务需求对模型进行微调和优化,打造专属的行业解决方案,而不受云服务提供商的限制。
  • 合规性要求: 某些行业和地区的法规要求数据必须存储在本地或特定区域,私有化部署可以轻松满足这些合规要求。

而实现本地私有化部署,之于我们私人而言,最简单的方式莫过于使用 Ollama。而关于企业级部署,我们将在单独的一个专题系列博文中阐述。本博文将详细介绍如何通过 Ollama 部署本地大模型,并如何在 LangChain 中进行调用。


Ollama 前序工作

在这里插入图片描述

什么是 Ollama

Ollama 是 GitHub 上的一个明星开源项目,其定位是一个本地运行大模型的集成框架。Ollama 主要具有以下特点:

  • 架构支持广泛: 主要针对主流的 Llama 架构开源大模型设计,完美支持 Qwen、DeepSeek、Llama、Mistral 等热门模型。
  • 一键式部署: 实现模型下载、启动和本地运行的全自动化流程,完全脱离复杂配置。
  • 跨平台兼容: 支持 macOS、Linux、Windows 三大主流操作系统。

虽然 Ollama 为本地大模型部署提供了极大便利,我们也需客观认识它的一些局限性。其最主要的局限性在于企业级应用中需要的批处理性能方面:

  • 功能相对简化:相比于 vLLM 等专业推理框架,Ollama 在批量推理、动态批处理、多 GPU 并行等高级特性上支持有限。对于需要极致性能优化、高负载的企业级生产环境,必须考虑其他方案。

其余限制,如封装度较高带来的调试信息有限量化格式限制,功能简化不支持的模型微调不便等限制。不过,万里长征看脚下,我们先从 ollama 开启。


Ollama 的下载与安装

访问 Ollama 官网,下载对应操作系统的安装包,双击安装即可。

在这里插入图片描述

按照默认安装顺序完成安装,并在 CMD/终端 中输入如下命令验证安装(博主开发环境为 MBP,后续截图将按 Mac 操作系统展开):

ollama --version

在这里插入图片描述

Ollama 常用命令

掌握以下几个核心命令,就能轻松驾驭 Ollama:

查看已安装的模型

ollama list

这个命令会列出所有已下载到本地的模型,包括模型名称、大小和最后修改时间。博主在几个月前下载了 Qwen3 系列模型:

在这里插入图片描述

运行模型

首次运行会自动下载模型,之后会直接启动交互式对话界面,以 qwen2.5-7b 模型为例。

ollama run qwen2.5:7b

对于其他模型,用户可以在官方查找指定模型名称,并按照命令下载。

在这里插入图片描述

下载新模型

拉取模型(仅下载不运行),以 qwen2.5-7b 模型为例:

ollama pull qwen2.5:7b

在这里插入图片描述

删除模型

ollama rm qwen2.5:7b

查看运行中的模型

ollama ps

停止模型服务

ollama stop qwen2.5:7b

在 LangChain 中调用本地大模型

在开启本部分内容学习前,建议读者先行了解本系列博文前序内容。

环境准备

首先安装必要的 Python 包(默认已安装、掌握 langchain 前序知识):

pip install langchain-ollama

基础调用示例

下面是一个最简单的调用示例:

from langchain_ollama import ChatOllama

# 初始化模型
llm = ChatOllama(
	model="qwen2.5:30b"
)

# 直接调用
response = llm.invoke("什么是量子计算?请用简单的语言解释。")
print(response.content)

流式输出

对于需要实时反馈的场景,可以使用流式输出:

from langchain_ollama import ChatOllama

llm = ChatOllama(
	model="qwen2.5:30b"
)

# 流式输出
for chunk in llm.stream("写一首关于春天的诗"):
    print(chunk.content, end="", flush=True)

结合提示词模板

在实际应用中,我们通常需要使用提示词模板来规范模型的输入输出:

from langchain_ollama import ChatOllama
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

# 定义提示词模板
template = """你是一个专业的技术顾问。请根据以下问题提供详细的解答:

问题: {question}

请确保回答:
1. 准确专业
2. 结构清晰
3. 包含实际案例

回答:"""

prompt = PromptTemplate(
	template=template,
	input_variables=["question"]
)

# 创建链
llm = ChatOllama(
	model="qwen2.5:30b"
)

chain = LLMChain(llm=llm, prompt=prompt)

# 执行
result = chain.run(question="什么是微服务架构?")
print(result)

构建对话系统

对于需要保持上下文的对话场景:

from langchain_ollama import ChatOllama
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

llm = ChatOllama(model="qwen2.5:30b", temperature=0.7)

# 添加记忆功能
memory = ConversationBufferMemory()

# 创建对话链
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)

# 多轮对话
print(conversation.predict(input="我想学习 Python,应该从哪里开始?"))
print(conversation.predict(input="那数据类型部分有哪些重点?"))
print(conversation.predict(input="能给我举个字典的例子吗?"))

总结

通过 Ollama ,配合 LangChain 强大的开发框架,个人可以快速构建自己的大模型应用系统。从数据安全、成本控制到服务稳定性,私有化部署的优势显而易见。随着硬件成本的持续下降和开源模型的不断进步,这一趋势将会越来越明显。

现在就开始你的大模型私有化部署之旅吧!从安装 Ollama,到下载第一个模型,再到用 LangChain 构建你的应用 —— 这一切比你想象的要简单得多。而关于企业级部署与应用,敬请关注我的另一个系列博文 —— 大模型企业级部署。


2025.10.07 北京·西直门

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐