Skip to content

从一条需求到一条内容

做内容生成系统以后,我越来越觉得,最麻烦的地方其实不是"让模型写一段内容"。

如果只是让大模型根据一个主题写脚本、写文案,这件事现在已经不稀奇了。真正难的是另一件事:用户给一段需求,再上传一堆视频、图片、文档和零散说明,系统最后要交付的不是一段回答,而是一条能继续剪辑、排版、渲染甚至直接交付的内容产物。

这套系统底层也用了 RAG,但它不是传统意义上的知识库问答。检索只是入口,它负责把和任务相关的材料找出来;后面还要做任务规划、内容生成、素材匹配、格式整理和工程后处理。换句话说,这里要解决的不是"答得对不对",而是"最后能不能交付"。

下面就按当前系统的实际链路,把这套面向内容生成的 RAG + Agent 架构拆开讲一下。

这套系统到底在做什么

先把定位说清楚:它是一个面向内容生成交付的 RAG + Agent 系统

传统 RAG 更像是"问答":用户提出问题,系统从知识库里捞相关片段,拼到 Prompt 里,再让模型回答。它的主要指标通常是检索准不准、答案对不对。

内容生成系统面对的任务会复杂很多。比如用户说"帮我做一条介绍储能产品出海的短视频",同时传了几个视频片段和产品文档进来,系统不能只回一段泛泛的营销文案。它至少要生成短视频脚本、分镜规划、素材使用建议,甚至进一步产出可执行的剪辑方案。

这就意味着它的输入和输出都比问答复杂得多:

  • 输入不只是文本问题,还有视频、图片、文档、纯文本素材
  • 输出不是一段文字,而是面向业务交付的内容产物

因此,系统链路不能停在"检索 + 回答"。它需要先判断用户到底要生成什么,再从多个来源召回上下文,然后让模型完成规划和生成,最后由工程代码把结果加工成稳定的交付物。

压缩成一条链路,大概是这样:

用户输入需求和素材 → 系统识别任务意图 → 多路召回上下文 → 重排组装 → 大模型规划生成 → 工程后处理 → 交付内容。

整体链路长什么样

展开以后,完整流程长这样:

如果按职责分层,我会把它拆成四层:

层级作用代表能力
代码编排层任务识别、流程控制、上下文组装、后处理业务服务、Agent 调度、工具链
检索链路层查询改写、召回、合并、重排Qwen 系列、Embedding、Reranker
大模型生成层Agent 规划、内容生成Gemini Pro 级
工具与素材层向量化、多模态素材理解、联网搜索Gemini Flash 级、Qwen Embedding、Bing / Serper

这四层里,最费时间的反而不是"调模型",而是检索链路和工程编排。模型能力本身是公开的,大家都能调用;真正影响效果的,是前面能不能把材料整理成模型可用的上下文,后面能不能把模型输出变成可控的产物。

下面按链路顺序展开。

检索链路:为什么不是一把搜

很多 RAG demo 里的检索链路都很直接:"用户输入 → 向量检索 → 取 topK"。这在问答场景里可以跑起来,但放到内容生成场景里,召回质量会很不稳定。

用户原句不适合直接检索

用户输入通常是任务型描述,不是检索型描述。

比如用户说"帮我做一条介绍储能产品出海的短视频脚本",这句话本身既没有行业维度,也没有卖点维度,更没有结构维度。直接拿它去做向量检索,结果通常会比较散:可能搜到一些"短视频怎么做"的泛泛内容,却搜不到"储能出海的海外用户痛点"这类真正能支撑内容的材料。

所以链路的第一步是 Multi-Query 查询改写:用一个中小尺寸的生成模型,把用户原始需求改写成多组检索 Query,从不同角度扩大召回范围。

上面那句话会被改写成类似这样的几条:

text
储能产品出海市场趋势
海外储能用户痛点
储能产品短视频脚本结构
新能源品牌出海营销文案
储能产品应用场景案例

这样一次检索可以同时覆盖行业背景、用户痛点、内容结构、表达风格和应用案例。内容生成需要的不是单一证据,而是一组能支撑创作的材料包。

这一步我用的是 Qwen 系列的中小尺寸模型,因为它只做改写、不做复杂推理,便宜、快、够用。

上下文分散在不同来源

能撑起一次内容生成的上下文,通常不在一个库里。

我们做了 三路并行召回

  • 私有知识库向量检索:查企业内部知识、产品资料、方法论。这是最核心的一路,用的是 Qwen 系列 Embedding 建的向量索引。
  • 用户素材库检索:查用户这次上传的视频、图片、文档和文本。这一路比较特殊,下面单独讲。
  • 联网搜索:补充实时信息和公开资料,比如最新的行业数据、竞品动态,用 Bing 或 Serper API。

这三路并行跑,最后再合并。私有库保证内容贴合业务,联网搜索补上知识库覆盖不到的实时信息,用户素材库则提供本次生成必须使用的"原材料"。少了任何一路,结果都会变得单薄。

多模态素材需要先结构化

这是我觉得这套系统和普通文本 RAG 最大的区别。

用户上传的视频和图片没法直接做文本检索。为了让后续链路能召回这些素材,入库前要先做多模态预处理:

  • 视频生成摘要、场景标签、关键帧描述
  • 图片生成标签、主体描述、风格描述
  • 文档抽取标题、段落、摘要和关键词
  • 文本直接分块

预处理完之后,再用 Embedding 写进向量库,之后才能在线检索。

这一步用的是 Gemini Flash 级视觉语言模型,吞吐高、成本低,适合做打标和摘要。它和后面负责生成的 Gemini Pro 级同属一个家族,API 统一,工程上也省了不少适配成本。

所以这里的检索链路不是简单取 topK,而是先改写查询,再做多路召回,同时还要把多模态素材提前变成可检索的文本表示。

召回之后:为什么要 Rerank

三路召回解决了"广度"的问题,也会带来新的噪声:不同来源的结果质量不一样,可信度不一样,同一个语义还可能被重复召回。

如果把这些结果直接塞给大模型,问题会很明显:

  • 私有知识库的精准结论,和联网搜索的泛泛文章混在一起,模型分不清轻重
  • 重复信息浪费 Token
  • 无关资料稀释了模型的注意力

所以召回和组装之间需要插一个 Rerank 重排

Rerank 做的事情,不是生成任何内容,而是回答一个问题:这一堆候选片段里,哪些最值得放进最终上下文。

它和向量检索的分工不同:向量检索是"粗召回",追求快和全;Rerank 是"精排",会拿 Query 和每个候选片段做更细的相关性判断,把真正高相关的片段排到前面。

这一步我用的是 Qwen 系列的 Reranker。专门的 reranker 比用生成模型临时打分更便宜、更稳定,也更少出现自由发挥。

Rerank 之后还有一步很容易被低估:上下文组装。这一步在代码层完成,目标是把一堆检索片段整理成模型真正能理解、能使用的 Prompt 上下文。

组装时我会注意几点:

  • 去重,避免重复信息浪费 Token
  • 分区,把内部知识、用户素材、联网资料分开摆,让模型知道哪块是什么
  • 标注来源,方便模型判断可信度——比如内部知识库的内容和网上搜来的内容,可信度是不一样的
  • 控长,不能超过上下文窗口,要在限制内保留最关键的证据

模型最终看到的不是原始数据库,而是代码层整理完的 Prompt。上下文组装做得粗糙,后面的生成再强也容易跑偏。

生成与交付:模型只负责草稿

上下文组装好之后,才进入大模型生成阶段。

这一步分两个阶段。

Agent 规划阶段,负责把"生成一条短视频"这种粗任务,拆成可执行的结构:

  • 选题规划:这条内容到底讲什么角度
  • 脚本结构设计:开头、主体、结尾怎么组织
  • 内容拆分:分几个段落、几个镜头
  • 分镜规划:每个镜头讲什么、用什么素材
  • 输出形态决策:是短视频、播客、图文还是文章

内容生成阶段,负责把规划落到具体文字:

  • 正文和文案
  • 短视频脚本
  • 分镜描述
  • 播客口播稿
  • 图文内容

这两步我用的是 Gemini Pro 级——旗舰模型,复杂规划、长上下文理解、多模态生成都靠它。

但在这套系统里,大模型的输出不会被直接当成最终产物。它更像是一份高质量草稿。

模型生成的脚本、分镜、文案,不会直接交付给用户。它会再经过一层工程后处理:

  • 短视频编排:把分镜、素材、字幕组合成剪辑方案甚至成片
  • 图文排版:套模板、调格式
  • 播客剪辑:把口播稿切成可用的段落
  • 文章格式化:统一结构、清理冗余
  • 工具链渲染:最终输出成用户能用的文件

这一层是整套架构里最工程化的部分。大模型负责生成核心内容,业务代码负责把内容变成稳定、可控、可交付的产物。没有这层后处理,模型生成得再好,也只是一段 markdown,离用户真正要的东西还差一段距离。

模型分工:为什么不一把梭

从能力上看,旗舰模型当然可以承担更多环节。那为什么还要在链路里放这么多不同模型,而不是一个模型从头干到尾?

核心原因是生产系统要同时考虑质量、成本、速度和稳定性。不同环节的任务类型不一样,适合的模型也不一样。

下面这张表是当前的模型分工:

模型家族主要职责所在阶段
Qwen 系列(中小尺寸)Multi-Query 查询改写检索前
Qwen 系列 Embedding知识库 / 素材库向量化与检索向量检索
Qwen 系列 Reranker召回结果重排Rerank
Gemini Flash 级多模态素材预处理(视频 / 图片打标摘要)素材理解
Gemini Pro 级Agent 规划与最终内容生成生成
Bing / Serper联网搜索补充外部信息外部检索

这套分工背后的取舍比较直接:

  • Embedding 必须用专门的向量模型。生成模型不是为检索设计的,拿它做向量化,召回质量会掉一截,而且贵。
  • Rerank 用生成模型做,又贵又慢。Reranker 是为排序优化的,专门干这个又快又稳。
  • 多模态素材理解,适合交给视觉语言模型。吞吐高、成本低,没必要为了打个标签动用旗舰模型。
  • 真正复杂的规划和最终生成,才需要上旗舰模型。把贵的算力花在刀刃上。

整体可以概括为:

Gemini 家族负责多模态理解与生成,Qwen 系列负责检索增强,代码层负责流程编排和最终交付。

这样拆下来,成本、稳定性和可控性都会比把所有事压在一个模型上更好。旗舰模型主要用在最需要推理和生成质量的地方,前面那些可以批量、可以并发、可以用便宜模型解决的环节,就尽量交给对口的轻量模型。

这套架构真正的难点

如果只看架构图,这条链路好像只是把几个模块串起来。但实际做下来,难点基本都落在工程细节上。

1. 多模态素材结构化

视频、图片不能直接做文本检索,必须先生成标签、摘要、关键帧描述和场景信息。预处理的质量直接决定后面检索能不能召回正确的素材。

2. 多路召回结果融合

私有知识、用户素材、联网搜索,质量和可信度完全不同。怎么合并、怎么去重、怎么标注来源、怎么排序,每一步都会影响最终上下文。

3. 上下文控制

不能把所有召回结果都塞给模型。要在 Token 限制内,保留最关键的信息,还要分区和标注来源,让模型能分清哪块是内部知识、哪块是网上搜来的。

4. Agent 工作流稳定性

不同输出类型的流程完全不同。短视频、播客、图文、文章,从规划到后处理的链路都不一样,每一条都要单独打磨。这块的复杂度随着支持的产物类型线性增长。

5. 生成结果工程化交付

模型生成的是内容草稿,还要经过排版、剪辑、格式化、渲染,才能变成用户能用的产物。这一层的工程量,往往比"调通大模型"本身大得多。

这些问题不太可能靠"换个更强的模型"一次性解决,更多还是要在链路、数据结构、提示词组织和后处理规则里一点点打磨。

结语

这套系统做下来,我对 AI 内容生成的看法变得更工程化了一点。

大模型当然是核心,但它只负责链路中间那段:理解上下文、完成规划、生成内容。前面要把素材、知识和实时信息整理成可用上下文,后面要把生成结果变成可交付的短视频、播客、图文或文章。真正决定系统能不能稳定工作的,往往是这些模型之外的部分。

所以我现在更愿意把它看成一套内容生产流水线:检索负责备料,上下文组装负责把材料摆到模型面前,Agent 负责规划和生成,工程后处理负责把草稿做成产物。模型会继续变强,但把这条流水线理顺、把每个交接点做稳,才是这类系统更长期的价值。