【人工智能】《从零搭建AI问答助手项目(二):模型选择》

引言

在第一篇里,我们梳理了 AI 问答助手的整体架构与核心流程,也明确了项目的关键目标:回答准确、不瞎编、可控性强。而整个项目里,最影响最终效果、成本和部署方式的,就是模型选型 ------ 到底用云模型,还是本地模型?

这一篇就从实际使用场景出发,把云模型和本地模型的差异、适用情况、优缺点讲清楚,方便大家在后续实战开发中直接做决策。

为什么

为什么模型选择这么关键呢?

对于一个问答助手 来说,模型就是它的"大脑" 。同一套RAG流程、同样的文本切分方式,换一个模型,回答的准确性、流畅度、甚至会不会出现幻觉,都会天差地别

而且模型还直接决定了:

  • 项目要不要花钱
  • 数据能不能外传
  • 部署难度高不高
  • 运行速度稳不稳定

所以在动手写代码之前,先选对模型方向,可以少走非常多的弯路。

是什么

云模型(Cloud-based AI Model)

定义

NIST 对"云计算"的经典定义

Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources...

工程定义(业界通用)

指部署在云计算基础设施上的人工智能模型,用户通过网络接口(如API)远程调用其推理或训练能力,而无需直接管理模型运行环境或底层硬件资源。

更"厂商化"的定义(以 OpenAI 为例)

OpenAI、Microsoft Azure 等平台,本质上提供的是:Model-as-a-Service(MaaS,模型即服务)。这其实是云模型的另一种"准官方叫法"。

本质是什么

云模型 = 模型运行在远程服务器(云端),通过网络调用。

OpenAI(云模型) = 调用别人训练好的"大脑"(云服务)

为什么会诞生

因为------训练大模型太贵了!

需要海量数据! 需要GPU集群!需要研究团队!

所以出现了------ "模型即服务 "(Model as a Service),只需要很少的代码就能用顶级AI能力

python 复制代码
client.chat.completions.create(...)

常见的云模型平台

  • OpenAI
  • Google(Gemini)
  • Anthropic(Claude
  • Microsoft(Azure OpenAI)

本地模型(On-device / On-premise Model)

定义

来自企业IT/云计算对"On-Premises"的定义(NIST & 企业架构)

IT systems that are installed and run on computers on the premises of the person or organization using the software, rather than at a remote facility.

工程定义

指部署并运行在用户本地设备或私有基础设施上的人工智能模型,其推理与(或)训练过程不依赖外部云服务,所有计算资源与数据处理均在本地控制范围内完成。

本质是什么

本地模型 = 模型运行在你自己的电脑/服务器上

本地模型 = 自己在电脑/服务器里养一个"大脑"

为什么会诞生

因为企业发现------"数据不能出公司!",比如:银行、医疗、政府

于是需求变成------必须自己掌控模型

常见本地模型生态

  • Meta(LLaMA)
  • Mistral AI
  • Alibaba(通义千问开源版)
  • 工具:Ollama、LM Studio

有什么区别

核心对比

维度 OpenAI(云模型) 本地模型
部署 不需要 需要自己部署
成本 按调用收费 前期硬件成本高
性能 非常强 一般(看硬件)
延迟 网络决定 本地更快
数据安全 传到外部 完全可控
可定制 很弱 很强
上手难度 很低 较高

云模型(Cloud-based AI Model)

优点

极强的能力(最重要)

几乎不用调优,推理能力强、语言理解好、 幻觉相对少

零部署成本

不需要GPU、模型下载、推理优化

快速开发

可以在一天内做出一个能用的AI应用,这点对于个人学习使用非常友好。

缺点

成本不可控

调用多了会贵,token计费,并发高时成本爆炸!。你没法控制用户输入的问题和频次,进而也无法可控制使用的token费用。

数据安全问题

数据会发送到外部服务器,存在数据泄露的风险。

可控性差

不能修改模型、微调细节(有限),简单来说就是不能定制。

本地模型(On-device / On-premise Model)

优点

数据完全私有(企业最看重)

所有数据不出机器,没有数据泄露的风险。

成本长期更低

没有API费用,适合高频调用。适合长期使用降低成本。

可高度定制

可以微调(fine-tune)、控制推理方式、加入私有逻辑,简单来说就是可以"私人订制"。

缺点

部署复杂(最大门槛)

需要理解:模型格式(GGUF / safetensors)、推理框架(llama.cpp / vLLM)、GPU / CPU优化

性能不如云模型

尤其是小模型(7B / 13B)、推理能力弱

硬件要求高

基本门槛:

  • 16GB内存(最低)
  • 有GPU更好(如 RTX 3060+)

怎么选

从"工程决策"的角度,以下决策公式:

如果满足这些条件,则选云模型(如OpenAI)

  • 是新手
  • 想快速做项目
  • 不涉及敏感数据
  • 并发不高

90%个人项目都选它

如果满足这些条件,则选本地模型:

  • 数据敏感(公司内部)
  • 需要离线运行
  • 调用量巨大
  • 有GPU资源

彩蛋------如何切换

虽然开头说的是云模型和本地模型选哪个,但其实这两个并不是选了一个就不能换另一个的,如果设计的合理,两者是可以切换的。废话不多说,下面讲讲怎么合理设计才能方便后续互相切换。

1、本质区别

首先要搞清楚使用云模型和使用本地模型的本质区别,真正变化的只有一层------ LLM调用方式不同

OpenAI(云模型)

python 复制代码
response = openai.chat(...)

本地模型

python 复制代码
response = local_model.generate(...)

核心区别:

OpenAI 本地模型
调用方式 API 本地函数
数据位置 云端 本地
推理方式 已封装 你自己控制

但输入输出是一样的:

python 复制代码
输入:prompt
输出:text

2、抽象层设计

什么是抽象层设计,就是给LLM模型调用加一层"抽象"。(这个咱们学过Java的同学应该非常熟悉,学过面向对象思想的应该也熟悉,就是给这俩模型整个父类)

(1)定义统一的接口

python 复制代码
# core/llm.py
class LLM:
    def generate(self, prompt: str) -> str:
        raise NotImplementedError

(2)实现 OpenAI版本

python 复制代码
class OpenAIModel(LLM):
    def generate(self, prompt: str) -> str:
        return openai.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "user", "content": prompt}]
        ).choices[0].message.content

(3)实现本地模型版本

python 复制代码
class LocalModel(LLM):
    def __init__(self):
        self.model = load_model()

    def generate(self, prompt: str) -> str:
        return self.model.generate(prompt)

(4)在业务中使用"接口",不是具体实现

python 复制代码
# core/rag.py
def ask(question, llm: LLM):
    docs = search(question)
    prompt = build_prompt(question, docs)
    return llm.generate(prompt)

3、切换方式(实际操作)

用 OpenAI

python 复制代码
llm = OpenAIModel()
answer = ask("Java是什么", llm)

换成本地模型

python 复制代码
llm = LocalModel()
answer = ask("Java是什么", llm)

4、进阶版:配置驱动(更专业)

config.yaml

yaml 复制代码
llm: openai

代码

python 复制代码
def get_llm():
    if config.llm == "openai":
        return OpenAIModel()
    else:
        return LocalModel()

注意

换模型 ≠ 换个API这么简单,还要调整:

1、Prompt

本地模型通常理解能力弱、需要更明确指令

2、RAG策略

本地模型需要更精准检索、更短上下文

3、参数调优

比如:temperature、top_p

冷知识

AI项目的瓶颈 通常不在模型 ,而在 数据质量、RAG设计、Prompt设计

相关推荐
观远数据2 小时前
跨部门BI推广权限治理指南:如何避免数据泄露与权责混乱
大数据·人工智能·数据分析
KaneLogger2 小时前
自建 Skills 管理工具
人工智能·设计
人工智能AI技术2 小时前
监督学习、无监督学习、强化学习基础对比
人工智能
奔跑的卡卡2 小时前
Web开发与AI融合-第一篇:Web开发与AI融合的时代序幕
前端·人工智能
阿_旭2 小时前
基于YOLO26深度学习的【辣椒成熟度检测与计数系统】【python源码+Pyqt5界面+数据集+训练代码】
人工智能·python·深度学习·辣椒成熟度检测
思茂信息2 小时前
CST交叉cable的串扰(crosstalk)仿真
服务器·开发语言·人工智能·php·cst
高洁012 小时前
大模型在天文科研中的应用:天体数据分析
人工智能·深度学习·数据挖掘·transformer·知识图谱
IT_陈寒2 小时前
Redis批量删除的大坑,差点让我加班到天亮
前端·人工智能·后端
AI搅拌机2 小时前
LoRA训练实战41:用QwenImageEdit2511训练“灵魂画手”风格LoRA,保姆级全流程教程,一学就会!
人工智能·ai作画