ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

GenAI技术栈四层地图:模型选型、松耦合与语义数据层

GenAI技术栈四层地图:模型选型、松耦合与语义数据层

简介:这份Gartner《生成式人工智能技术创新指南》PDF面向企业技术领导者、AI架构师与产品战略人员,帮助读者理解GenAI如何渗透技术栈与垂直行业,并梳理从基础设施、开发工具到应用层的供应商格局。全文围绕关键发现与行动建议展开,涵盖GenAI从试点走向生产、传统DSML/CRM/ERP平台集成、基础模型与大型语言模型生态、AI代理推动的第二波创新,以及降低技术债、构建语义数据层和负责任AI等议题,并附新兴市场象限供供应商探索。资源包共1个PDF文件,大小约1.28MB,结构紧凑,便于检索与引用。已有57人学习下载。读者可从中获得Gartner对市场阶段、投资热点与架构策略的判断,以及面向多智能体系统和仿真市场的趋势提示,适合用于技术规划、方案论证与供应商调研时的参考。

1. 一份 35 页的 GenAI 技术栈地图:为什么它把「模型选型」排在第三位

生成式人工智能(GenAI)这两年几乎被讲成了模型军备竞赛,参数、榜单、上下文长度轮番刷屏,但翻完这份《生成式人工智能技术创新指南》之后,最直接的感受是:这份指南先带来一张结构图,用它说明 GenAI 本身不是一个市场,它渗透进整个技术栈和大多数垂直行业。全文 35 页、约 38 分钟阅读量,核心论点就一句话——GenAI 不是货架上的一个商品品类,而是长在别人货架上的一层能力。这个定位直接决定了它的写法:先给一张从基础设施、模型、AI 工程工具到应用的四层栈地图,再讲每层的买家是谁、竞争点在哪、钱花在哪、技术债从哪冒出来。它适合三类人:正在给 GenAI 项目做架构决策的技术负责人、要给供应商打分做采购的工程团队、以及被「到底要不要自建」卡住的开发者。它不是教程,是一张你对着划线、然后把自家系统往上贴的底图。

2. 拆开四层技术栈:基础设施、模型、工程工具、应用各在卖什么

把 GenAI 厂商按层切开,是整份指南里最实用的动作。原因很朴素:同一层里的供应商是可以互相替换的,跨层的供应商则几乎没法比价。你可能拿一家云厂商的报价去和一家做垂直应用的公司做对比,比出来的结论毫无意义,因为前者卖的是算力和编排能力,后者卖的是任务完成率。分层之后,选型、预算、组织归属这三件事才有一个共同的坐标系。

2.1 四层栈的边界与判定标准

基础设施层包含两类玩家:一类是 AI 芯片厂商,吃的是训练和推理负载对高带宽、加速计算的需求;另一类是 IaaS 和 PaaS 提供方,卖的是弹性算力、存储、网络,外加分布式计算、集群管理、显存管理、存储与网络调优、可观测性这一整套编排能力。指南里有个判断值得记住:目前算力、网络、存储硬件的大部分需求集中在云服务商手里,个别技术厂商会自建架构去训自研模型,但在企业数据中心真正放量之前,云侧仍会承接绝大多数企业级 GenAI 的基础设施消费。这句话的实际含义是——除非你的规模已经大到能摊平自建成本,否则基础设施层对你的正确姿势是「买」,而不是「建」。

模型提供层卖的是对基础模型的访问权,包括闭源商用模型、开源模型、多模态模型,也包括 GAN、进化算法、仿真这类非 LLM 的生成式算法。开发者可以把它嵌进应用,也可以拿它当基座做微调。指南里点出的三个趋势很关键:部分场景的模型尺寸在缩小;用于精调和微调的数据量与人工投入在变精简;领域专用模型(带深度横向或纵向术语与上下文)和轻量模型(支撑云端与边缘的低成本、小体积推理)正在出现。这三条合起来意味着,模型层的选型空间在变宽,同时也意味着「一次选定、长期绑定」的风险在变大。

AI 工程工具层覆盖的是全模型生命周期管理,专门为开发、精炼、部署生成式模型和其他 GenAI 产物而调整,还包括整体流程编排。这一层最容易被低估,因为它不产出模型也不产出应用,但它是把前两层的能力接到第四层的唯一通道。

GenAI 应用层用 GenAI 能力做用户体验和任务增强,加速并辅助用户达成目标。嵌进体验之后,GenAI 能为生成和编辑文本、代码、图像及其他多模态输出这类单一任务提供更丰富的上下文。而作为一项新兴能力,过程感知的 GenAI 代理可以被用户提示去加速串联多个任务的工作流——这是第二波变化的入口,后面单独讲。

判断自家系统落在哪一层,我一般会让团队回答三个问题:

  1. 你交付的最终产物是什么——算力与平台能力、模型权重或 API、开发工具链,还是终端用户能感知到的任务结果?
  2. 你的客户是谁——其他技术厂商和服务商,还是内部业务部门?
  3. 你的核心 KPI 是什么——推理成本与利用率、模型质量、开发者效率,还是任务完成率与人工节省工时?

三个问题答完,层基本就定了。常见误判是把「内部平台团队给业务部门做的 AI 中台」当成应用层,实际上它交付的是工程工具能力,KPI 应该是接入效率与复用率,而不是业务指标。

层核心交付物典型买家自建门槛常见误判
基础设施算力、存储、网络、编排与可观测技术厂商、服务商、自建模型的企业极高,需规模摊薄以为买几张卡就叫有基础设施
模型提供模型访问权、微调基座应用开发商、企业内部团队高,需数据与训练经验把微调当成一次性的模型采购
AI 工程工具生命周期管理、流程编排平台团队、算法团队中,但维护成本持续当成一次性建设,忽略长期运维
GenAI 应用任务结果、用户体验增强业务部门、最终用户低到中,取决于集成深度把开账号等同于落地

2.2 第一波与第二波:内容生产和代理编排不是同一件事

指南把市场演进分成两波,这个划分对架构决策的影响比任何一张象限图都大。第一波厂商集中在内容和体验的快速生产上,靠企业信息与知识库做辅助;第二波是 AI 代理技术,把 LLM 接到软件工程和 AI 工具上,去解锁涉及动态流程与工作流的二阶效应。原文的措辞是「颠覆市场」并「创造第二波创新」,还明确说 GenAI 赋能的代理技术会把架构策略推向多智能体系统与仿真方向。

翻译成工程语言:第一波的典型形态是请求-响应,输入提示,输出内容,无状态,失败重试就好。第二波的形态是有状态编排,模型要调用工具、读写外部系统、在多步之间保留中间结果、失败要能回滚、每一步都要可观测。这两套东西对基础设施的要求完全不同——前者拼的是生成质量和延迟,后者拼的是工具契约的稳定性、状态存储和评估体系。

要不要上代理,我给团队的判断标准是三条同时满足才做:流程存在明确的中间状态;每个环节都能被封装成可调用、可校验的工具;失败可以回滚或人工接管。三条缺一条,先老老实实做第一波的内容增强,别为了架构好看硬上多智能体。我见过不止一个项目在流程本身还没有稳定中间态的时候上代理,最后调度的不是模型而是人的耐心。

2.3 战略假设怎么读:开源直用和 AI 使用量放大

指南给了两条战略假设:到 2027 年,直接使用开源 AI(而非通过其他厂商间接使用)的公司数量将增长十倍;到 2027 年,GenAI 会带动其他非 GenAI 类 AI 技术的使用量增长 400%。这两个数字不该被当成预测去背诵,而应该被当成架构约束去读。

第一条的含义是:未来两三年内,你的系统很可能需要同时面对闭源商用模型和自托管开源模型,而且切换频率会比过去任何一次技术选型都高。如果你的业务代码里到处是某一家 SDK 的调用约定,那这个十倍增长对你就是十倍的技术债。第二条的含义是:GenAI 不是替代掉传统 AI,而是把分类、推荐、预测、优化这些老技术的使用频次拉起来——因为 GenAI 降低了人机交互门槛,更多人会用,用起来之后发现背后还需要判别式模型兜底。所以架构上要预留「生成 + 判别」混合编排的位置,别把 GenAI 做成一个孤岛。

这两条假设落地到一个具体动作上,就是在项目立项时就把「模型可替换」写进非功能需求,而不是等出了事故再补。

3. 松耦合与语义数据层:两条最贵的建议怎么落成代码和索引

整份指南的建议部分,分量最重的两句是:设计解决方案时与生成模型保持松耦合,以便灵活选择与组合模型;用企业知识资产(内容、数据、规则与启发式、语料、数字孪生模型、知识图谱)去提示并锚定 GenAI 模型的行为;如果还没有为业务建好语义数据层,现在就开始。这两句话听起来像正确的废话,但真落到代码和索引上,会牵出一堆具体决定。

3.1 「和模型松耦合」到底松在哪几个切面

先看反面。松耦合做砸的项目,代码长这样:业务 service 里直接 new 一个厂商客户端,prompt 字符串拼接在前端或 controller 里,模型返回的 JSON 直接入库,重试和限流各写各的,计费没有归口,某天换模型发现要改二十个文件。这就是指南反复警告的 GenAI 技术债——试点阶段没人管,进了生产就是黑匣子。

松耦合至少要覆盖四个切面。接口切面:所有模型调用走统一请求/响应结构,业务代码不认识任何厂商的字段名。提示切面:模板集中管理、带版本号、可回滚,prompt 变更走和代码一样的评审流程。检索切面:知识源可替换,换向量库或换切分策略不影响上层。治理切面:每个模型的数据留存、内容溯源、地域部署属性要能被查询,因为不同模型的合规属性不一样,采购和法务迟早会来问。

这里有一个容易被忽略的细节:松耦合不等于抽象一层万能接口然后所有模型都塞进去。不同模型的能力差异是真实存在的,强行抹平会导致上层拿不到关键能力。我的做法是统一「最小公共契约」(文本、用量、结束原因、错误码),厂商特有的能力放在响应体的扩展字段里,谁需要谁读,不许业务代码依赖扩展字段做核心逻辑。

3.2 语义数据层:先清点资产,再谈检索

指南把语义数据层单独拎出来说「现在就开始」,是因为它是所有 grounding 的地基。没有它,RAG 的效果就成了玄学,同一份文档换个切分策略答案就变,调 prompt 调到怀疑人生。常见做法是四步走。

第一步,清点知识资产并分类。内容类(手册、FAQ、工单、会议纪要)、结构化数据(指标、主数据)、规则与启发式(审批规则、风控阈值、行业惯例)、语料(标注样本、历史问答对)、模型类资产(数字孪生、知识图谱)。这五类的落地形态完全不同,别混在一个向量库里。

第二步,按业务实体分域,不按部门分域。部门会重组,实体不会。订单、客户、设备、合同这类实体是稳定的切分边界,也决定了权限边界。

第三步,把规则单独存。规则是确定性的,塞进 prompt 里让模型去「理解」是最常见的翻车方式——它今天遵守明天不遵守,你还查不出原因。规则应该走代码或规则引擎,模型只在规则允许的空间里做生成。

第四步,建评测集。50 到 200 条真实问题,双人标注,每次改切分、改模型、改 prompt 都跑一遍。没有评测集的 RAG 调优,全靠感觉。

资产类型落地形态喂给模型的用途常见坑
内容文档分块索引 + 元数据检索后拼接上下文不做权限过滤,越权召回
结构化数据视图或指标 API转成自然语言事实直接让模型算数
规则与启发式代码或规则引擎约束生成空间写进 prompt 当「请注意」
语料问答对微调集或 few-shot 池对齐表达风格未去重导致过拟合
知识图谱图查询接口多跳关系补全图与文本索引不同步

3.3 一个能直接抄的模型适配层骨架

下面这段是适配层的最小可用骨架,重点是统一契约、注册表和降级链,不涉及任何具体厂商 SDK。

import time from abc import ABC, abstractmethod from dataclasses import dataclass, field @dataclass class GenRequest: prompt: str system: str = "" temperature: float = 0.2 # 抽取/结构化任务压低,创作类再调高 max_tokens: int = 1024 timeout_s: float = 20.0 # 必须小于上游 HTTP 超时,留出降级时间 trace_id: str = "" @dataclass class GenResponse: text: str provider: str model: str latency_ms: int = 0 tokens_in: int = 0 tokens_out: int = 0 finish_reason: str = "stop" meta: dict = field(default_factory=dict) # 厂商特有能力的扩展位 class ModelAdapter(ABC): name: str @abstractmethod def generate(self, req: GenRequest) -> GenResponse: ... @abstractmethod def health(self) -> bool: ... # 主动探测,不靠异常兜底 class Registry: def __init__(self): self._adapters = {} def register(self, adapter: ModelAdapter): self._adapters[adapter.name] = adapter return adapter def get(self, name: str) -> ModelAdapter: if name not in self._adapters: raise KeyError(f"adapter not registered: {name}") return self._adapters[name] def call_with_fallback(registry: Registry, chain: list, req: GenRequest) -> GenResponse: """chain 顺序即优先级:按能力、成本、合规属性排,不要按厂商名气排""" last_err = None for name in chain: adapter = registry.get(name) if not adapter.health(): continue t0 = time.time() try: resp = adapter.generate(req) resp.latency_ms = int((time.time() - t0) * 1000) return resp except Exception as e: # 超时、限流、内容拦截都走降级 last_err = e continue raise RuntimeError(f"all providers failed, last={last_err}")

几个参数值得单独说。temperature在抽取、分类、字段填充这类任务上我一般压到 0.1 到 0.3,输出稳定性比「创造性」重要得多;只有文案、创意类场景才往上放。max_tokens要和timeout_s一起调,长输出配短超时必然频繁触发降级,看起来像模型不稳定,其实是配置问题。chain的顺序是业务决策不是技术决策——成本敏感的业务把便宜的放前面,合规敏感的把数据留存条款干净的放前面。health()一定要做成主动探测加缓存,别用 try/except 当健康检查,否则每次降级都要先付一次超时代价。

meta这个扩展位是有意留的。厂商特有的多模态返回、工具调用记录、安全拦截原因都塞这里,业务代码要读就显式读,读不到就按默认逻辑走。这样上层不会被某一家绑死,下层也不会因为抹平差异而丢掉能力。

4. 新兴市场象限的正确读法:把供应商图变成一张可打分的采购表

指南配套给了新兴市场象限,并建议定期把自己的供应商清单和架构建设方式跟象限里的格局做比对,用来跟踪供应商能力的快速演进。象限图很好用,但它是被误读最多的一页。

4.1 象限的三个读法和两个误读

三个正确读法:第一,把它当成市场存在度与能力的二维投影,位置反映的是相对关系,不是绝对分数,两个相邻点的差距可能在误差范围内。第二,把它当成粒度很粗的市场级视图,它评价的是厂商整体,不是你家要用的那个具体模块。第三,把它当成时间切片,研究发布有周期,图上的位置天然滞后于厂商上周刚发的版本。

两个高频误读:把象限位置直接当选型结论,右上角就下单;以及只看象限不看自己。前者的后果是买回来发现集成成本吃掉全部收益,后者的后果是买了一堆各自很强、拼在一起不工作的东西。

4.2 评估维度、权重和证据来源

正确姿势是自己做一张打分表,象限图只用来保证候选池没漏人。下面这套维度是我在几个项目里磨出来的,权重按项目性质改。

维度建议权重具体看什么证据从哪来
能力覆盖30%你的 Top5 用例能不能直接跑通自建 PoC,不看 demo
集成成本20%接口稳定性、鉴权方式、错误码语义沙箱实测 + 文档完整度
数据与 IP 条款15%训练数据来源、输入是否留存、输出归属合同条款 + 安全问卷
可观测与运维10%用量、延迟、拦截原因能否导出管理后台实操
成本模型15%计费粒度、超量规则、降级是否另计费报价单 + 三个月用量测算
路线图匹配10%未来两个季度是否覆盖你的扩展方向沟通记录 + 版本日志

PoC 的设计要点是:用你自己的 30 到 50 条真实样本,闭卷跑,不让厂商调 prompt。厂商现场调完的效果不可复现,那不是产品能力,那是工程师能力。

4.3 用脚本把打分算成结论并做敏感性分析

评分表最大的问题是权重一拍脑袋就定了,改一个权重排名就翻。所以我习惯把打分和敏感性分析一起跑。

WEIGHTS = { "capability": 0.30, "integration": 0.20, "legal": 0.15, "ops": 0.10, "cost": 0.15, "roadmap": 0.10, } # 各家在 1-5 分区间打分,来自 PoC 与合同评审的实测结论 SCORES = { "vendor_a": {"capability": 4.5, "integration": 3.0, "legal": 4.0, "ops": 3.5, "cost": 3.0, "roadmap": 4.0}, "vendor_b": {"capability": 3.8, "integration": 4.5, "legal": 4.5, "ops": 4.0, "cost": 4.2, "roadmap": 3.5}, "vendor_c": {"capability": 4.8, "integration": 2.2, "legal": 2.8, "ops": 2.5, "cost": 2.6, "roadmap": 4.5}, } def weighted(scores: dict, weights: dict) -> dict: return {v: round(sum(scores[v][k] * weights[k] for k in weights), 3) for v in scores} base = weighted(SCORES, WEIGHTS) print("baseline:", sorted(base.items(), key=lambda x: -x[1])) # 敏感性:能力权重上下浮动 10 个百分点,看排名是否翻转 for delta in (-0.10, 0.10): w = dict(WEIGHTS) w["capability"] = round(w["capability"] + delta, 2) w["integration"] = round(w["integration"] - delta, 2) # 权重和保持为 1 print(f"capability{delta:+.0%}:", sorted(weighted(SCORES, w).items(), key=lambda x: -x[1]))

这段代码的价值不在算分,而在暴露脆弱性。如果能力权重挪 10 个点排名就翻转,说明这几家在你的场景里其实没有显著优劣,这时候决策依据应该换成合同条款、迁移成本或者已有技术栈的复用度,而不是继续在分数上抠小数点。反过来,如果排名怎么调都不动,那结论就比较硬,可以直接进采购流程。

4.4 从单点选型走到系统视角

指南里有一句提醒最容易被跳过:要充分评估供应商方案,但也要设想 AI 系统与架构的更大图景;市场上的厂商爆发式增长,难点不只在于按用例价值选应用,还在于设想它们怎么被耦合成更大的 AI 系统和企业架构。

落到操作上,就是在采购评审里加一页「组合视图」:这批候选方案之间靠什么接口通信,共享哪一层身份与权限,日志和用量怎么汇总,哪个位置未来会被替换。我见过一个反面案例:三个部门各自选了三家做智能问答,接口风格、权限模型、计费口径全不一样,半年后想做统一入口,发现要重写两遍半。这不是选型问题,是没人画那张组合图。

5. 避坑:五个把这份指南读歪的典型姿势

这份材料是研究性质的工作稿,原文自己也标注了会频繁更新、不代表最终定论。它给的是判断框架,不是操作手册。框架被读成教条,就会出现下面这些情况。

5.1 选型阶段的三个坑

坑一:把 GenAI 当成一个独立市场去立项。现象很典型——成立一个独立的 GenAI 部门,独立预算,独立考核,跟原有的数据平台、应用平台互不往来。原因在于误读了「GenAI 不是市场」这句话,把它理解成「GenAI 是个新市场所以要从零搭」。实际上指南的意思是它渗透进现有技术栈:基础设施层还是那些算力和编排,工程工具层还是生命周期管理,只是模型层和应用层多了新东西。解决方式是按层拆预算:基础设施和工程工具的投入归平台团队,模型访问和微调的投入归算法团队,应用落地归业务线,三本账分开算,但共用一个架构评审。否则第一年很热闹,第二年开始互相甩锅。

坑二:把生产力工具的普及当成 GenAI 战略。现象是全员开通 AI 助手账号,季度汇报写「已覆盖 80% 员工」,但没有任何一个业务流程被改变。指南把这类工具归在应用层的第一波,它确实有价值——快速生产内容和体验——但它不产生结构性收益。原因在于把「使用率」当成了「落地率」。解决方式是给每个工具配一个流程指标:写代码的看合并前返工率,写文档的看评审轮次,做客服的看一次解决率。指标不动,就说明工具只是被打开了,没有被用上。

坑三:把象限位置直接当选型结论。现象是评审会上有人说「这家在右上角,就它了」,没人问过集成成本。原因在于把粗粒度的市场视图当成了细粒度的产品评测。解决方式前面已经给了:自建打分表 + 闭卷 PoC + 敏感性分析。补充一条血泪经验——PoC 一定要用自己的数据,而且要用那些「已知正确答案」的样本,否则你分不清是模型不行还是问题本身没有答案。

5.2 落地与治理阶段的两个坑

坑四:语义数据层拖到二期再做。现象是第一期用 prompt 硬凑,效果时好时坏,业务方说「再调调」,调到第三个月大家都开始怀疑模型。原因在于把语义层当成了检索增强的附属品,实际上是它的地基。指南把企业知识资产列为 prompt 和 grounding 的来源,并明确建议「如果还没建,现在就开始」,这句话的分量比它看起来重得多。解决方式是:一期就把资产清点和分域做完,哪怕只覆盖一个业务实体;评测集同步建起来,20 条也比没有强。二期再扩域、再换向量库、再上图谱,地基不动。

坑五:治理留到上线前最后一公里。现象是上线评审前一天才发现训练数据来源说不清,输入会不会被留存没人确认,输出带偏见没有兜底方案。原因在于把治理当成收尾工作,而指南明确说买家应该预期治理系统的最后一公里是定制开发,并且要把采购和法务拉进供应商评审。解决方式见下一章,核心是把治理项做成门禁,而不是做成文档。

6. 治理的最后一公里:把 IP 溯源和输出风险做成上线门禁

指南在建议里把伦理与负责任的 AI 实践放在很靠前的位置:保护一方知识产权、清楚第三方 IP 的使用情况、管理模型输出的偏见与有害内容;随着相关立法在未来几年逐步落地,还要核查方案的内容训练来源,以评估自身承担的风险敞口。

这段话最容易被执行成一份《AI 伦理管理办法》然后锁进抽屉。我的做法是把它拆成四道门禁,挂到发布流水线上,不通过就不许上。

门禁项检查方式不通过怎么办
训练数据来源供应商安全问卷 + 合同附件,逐项确认可商用范围换模型或限定使用场景
输入数据留存在适配层记录请求元数据,核对留存开关是否可关关闭留存或改为本地推理
输出内容风险评测集抽检 + 线上拦截原因统计加规则兜底或人工复核队列
一方 IP 保护检查 prompt 与知识库是否含受限内容脱敏后入索引,禁止原文外发

四道门禁里,第二道最容易被漏。很多团队以为「我们不用它训练就没问题」,但请求日志本身可能包含敏感信息,而日志的保存策略往往和业务数据库不是一套。在适配层统一记录请求元数据、把留存开关做成可配置项,比在每个业务里各写一遍靠谱得多。第三道门禁的关键是拦截原因要可统计——如果只能看到「被拦截了」而看不到「为什么被拦截」,那这套风控就是个黑匣子,出了问题连复盘都做不了。

我自己的习惯是:任何 GenAI 功能上线前,先跑一遍这四道门禁的检查清单,哪怕只有一个人签字;上线后每个月抽一次拦截原因做人工复核,看有没有系统性误拦。这套流程第一次走很烦,走到第三次就成了肌肉记忆。从那以后我每次做新功能评审,都会强制走一遍这张表,不给「先上再补」留口子——事后补治理,等于给自己买后悔药,而且通常买不到。

希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进