AI搜索上线后,成本是这样被打下来的:一次生产环境实测
AI搜索 如何降低成本|生产环境实测
过去一年,越来越多企业把“AI搜索”从概念验证推进到生产环境:客服知识库、企业内部文档检索、销售资料问答、投研报告分析、研发规范查询、工单辅助处理……这些场景看起来都很适合用大模型加持搜索,但真正上线后,团队很快会遇到一个现实问题:
AI搜索效果能不能稳定?响应能不能快?更关键的是:成本能不能降下来?
很多项目在 Demo 阶段成本并不明显,因为访问量小、文档量少、调用频率低。但一旦进入生产环境,成本会以非常直观的方式暴露出来:Embedding 成本、向量库成本、重排模型成本、大模型推理成本、缓存成本、日志与监控成本、人工标注与评测成本,都会成为长期支出。
本文结合一个典型生产环境中的 AI 搜索系统改造实践,系统拆解成本来源,并分享一套可落地的降本方案。重点不是“为了省钱牺牲效果”,而是在保证搜索质量和用户体验的前提下,把不必要的计算浪费砍掉。
一、AI搜索的成本到底花在哪里?
一个常见的 AI 搜索系统,大致包含以下链路:
- 用户输入问题;
- 对问题进行改写、意图识别或 Query 扩展;
- 使用 Embedding 模型将问题向量化;
- 从向量数据库中召回相关文档;
- 结合关键词搜索、规则召回进行混合检索;
- 使用重排模型对候选结果排序;
- 将 Top K 文档拼接进 Prompt;
- 调用大模型生成最终回答;
- 返回答案,并附带引用来源;
- 记录日志,用于后续评测和优化。
这套流程看起来很合理,但每一步都可能带来成本。
1. Embedding 成本
Embedding 是 AI 搜索的基础。无论是文档入库,还是用户提问,都需要把文本转换成向量。
成本主要来自两个部分:
- 离线文档向量化成本:文档越多、切片越细,成本越高;
- 在线 Query 向量化成本:用户每问一次,基本都要调用一次 Embedding。
如果系统采用多路召回,例如对原始问题、改写问题、扩展问题分别做向量召回,那么一次请求可能产生多次 Embedding 调用。
2. 向量数据库成本
向量库成本不仅是存储,还包括查询计算、索引维护、扩容和高可用。
当文档切片过细时,向量数量会迅速膨胀。比如 10 万篇文档,如果每篇切成 20 个 chunk,就是 200 万条向量;如果每条向量维度较高,存储和查询压力都会明显提升。
3. 重排模型成本
很多系统上线后会发现,单纯向量召回的效果不够稳定,于是引入 Rerank 模型。Rerank 对相关性提升很明显,但代价也不小。
假设每次从向量库召回 50 条候选,再送入重排模型进行打分,那么每次搜索都要处理 50 对 Query-Document。如果访问量增长,Rerank 会成为非常明显的成本中心。
4. 大模型生成成本
这是最容易被看到的成本,也是最容易失控的部分。
大模型调用成本与输入输出 Token 数高度相关。AI搜索为了提升回答准确性,往往会把多个文档片段塞进 Prompt。Top K 越大、chunk 越长,输入 Token 越多;如果回答风格要求“详细解释”,输出 Token 也会增多。
很多系统为了“稳”,默认把 8 到 10 个文档片段全部拼进去,结果是:模型并没有用完这些上下文,但成本已经实实在在产生了。
5. 评测与人工运营成本
AI搜索不是一次上线就结束的系统。生产环境中需要持续评测:
- 用户问题是否被正确理解;
- 召回文档是否准确;
- 回答是否引用了正确资料;
- 是否存在幻觉;
- 是否需要新增知识;
- 是否有热点问题可以缓存。
这些工作如果完全依赖人工,会产生持续运营成本。
二、生产环境基线:未优化前的成本结构
以下是一组脱敏后的生产环境数据,用于说明典型 AI 搜索系统的成本结构。
业务场景是企业内部知识库问答,包含产品手册、操作规范、售后文档、培训资料和历史工单。系统日均请求量约 8,000 次,工作日高峰可达 12,000 次。
优化前架构
- 文档总量:约 12 万篇;
- 文档切片数量:约 185 万个 chunk;
- Embedding 模型:通用向量模型;
- 向量维度:1536;
- 检索方式:纯向量召回;
- 召回数量:Top 80;
- Rerank 输入:Top 80 全量重排;
- 最终进入大模型上下文:Top 8;
- 平均 Prompt 输入:约 7,500 tokens;
- 平均输出:约 850 tokens;
- 缓存策略:仅缓存完全相同问题;
- 平均响应时间:5.8 秒;
- P95 响应时间:11.6 秒。
成本占比
| 成本项 | 优化前占比 | 主要问题 |
|---|---|---|
| 大模型生成 | 58% | 上下文过长,Top K 偏大 |
| Rerank | 21% | 候选数量过多,全部重排 |
| 向量数据库 | 11% | chunk 数量大,查询压力高 |
| Embedding | 6% | 多次重复 Query 向量化 |
| 日志与监控 | 2% | 原始日志存储较多 |
| 其他 | 2% | 网络、服务冗余等 |
从数据可以看出,大模型生成成本和 Rerank 成本占了接近 80%。因此,降本的优先级不能只盯着向量库或 Embedding,而应该从整体链路看。
三、降本思路:不是少用模型,而是少做无效计算
很多团队一提到降本,第一反应是:
- 换便宜模型;
- 减少上下文;
- 降低召回数量;
- 缩短回答长度。
这些方法当然有效,但如果粗暴执行,搜索效果很容易下降。真正可持续的降本,核心是四个字:
精准计算。
也就是说,把计算资源花在真正需要的请求上,而不是每个请求都走最重的链路。
我们将 AI 搜索请求分成四类:
-
简单事实查询:例如“XX系统登录地址是什么?”
这类问题不需要复杂推理,也不需要长上下文。 -
明确文档定位查询:例如“售后退货流程第几步需要审批?”
这类问题重点是检索准确,不一定需要大模型长篇生成。 -
综合总结类查询:例如“比较A方案和B方案适用场景”。
这类问题需要多个文档支撑,适合使用较强模型。 -
低价值或不可回答查询:例如闲聊、无权限问题、知识库不存在内容。
这类请求不应该进入昂贵链路。
如果所有问题都走“向量召回 Top80 + Rerank Top80 + 大模型长上下文生成”,成本一定高,而且并不必要。
四、实测降本方案一:文档切片优化,减少向量膨胀
文档切片是很多 AI 搜索系统的隐性成本源头。
优化前,我们采用固定长度切片,每个 chunk 约 500 字,重叠 100 字。这种方式实现简单,但带来几个问题:
- 标题、表格、步骤说明被切断;
- 同一段内容重复出现在多个 chunk;
- 重叠部分造成向量数量增加;
- 检索结果中经常出现语义不完整片段。
改造方法
我们改用“结构化切片 + 语义边界切片”:
- 优先按标题层级切分;
- 保留文档路径,例如“产品手册 > 账号管理 > 权限配置”;
- 表格单独处理,转成可检索的文本描述;
- 对过长段落再进行二次切分;
- 减少无意义重叠;
- 对模板页、页眉页脚、免责声明进行清洗;
- 对重复内容进行 SimHash 去重。
改造效果
| 指标 | 优化前 | 优化后 |
|---|---|---|
| chunk 数量 | 185 万 | 116 万 |
| 平均 chunk 长度 | 500 字 | 720 字 |
| 重复内容比例 | 18.4% | 5.7% |
| 向量库查询耗时 | 420ms | 280ms |
| 存储成本 | 100% | 约 67% |
切片优化并不是简单减少 chunk,而是提高每个 chunk 的信息密度。经过人工抽样评测,召回准确率没有下降,反而略有提升,因为检索结果更完整了。
五、实测降本方案二:混合检索替代纯向量召回
纯向量召回适合语义相近的问题,但对于包含产品型号、错误码、版本号、字段名、接口名的问题,关键词检索往往更可靠。
例如:
“E3027 报错怎么处理?”
如果纯向量召回,模型可能会召回语义相似的“系统报错处理流程”,但关键词搜索可以直接命中包含 E3027 的文档。
改造方法
我们引入混合检索:
- BM25 关键词召回 Top 30;
- 向量召回 Top 40;
- 规则召回 Top 10,例如错误码、产品型号、接口名;
- 合并去重后进入候选池;
- 根据 Query 类型动态调整各路权重。
对于包含明显关键词的问题,提高 BM25 权重;对于自然语言描述型问题,提高向量召回权重。
改造效果
| 指标 | 纯向量召回 | 混合检索 |
|---|---|---|
| 首位命中率 | 61.2% | 73.8% |
| Top5 命中率 | 78.5% | 86.9% |
| 平均召回耗时 | 420ms | 360ms |
| 后续 Rerank 压力 | 高 | 中 |
混合检索带来的价值不仅是效果提升,更重要的是减少了后续重排和生成的压力。因为候选质量变高,系统不需要盲目召回大量向量结果。
六、实测降本方案三:动态 Rerank,而不是全量 Rerank
优化前,每次请求都会把 Top 80 候选全部送入 Rerank。这是非常典型的浪费。
事实上,有些查询在检索阶段已经很明确。例如关键词完全匹配错误码、文档标题高度相关、用户问题与某个 FAQ 高度一致,此时没有必要重排 80 条。
改造方法
我们设计了动态 Rerank 策略:
- 如果关键词强匹配且候选分数明显领先,只 Rerank Top 10;
- 如果向量召回结果分数集中,说明不确定性高,Rerank Top 50;
- 如果 Query 被识别为 FAQ 类问题,优先匹配 FAQ 库,不走重排;
- 如果候选结果质量低,直接返回“未找到可靠资料”,避免强行生成;
- 对历史高频 Query 的 Rerank 结果进行缓存。
改造效果
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 平均 Rerank 数量 | 80 | 27 |
| Rerank 成本 | 100% | 约 38% |
| Rerank 平均耗时 | 950ms | 340ms |
| Top5 相关性 | 基线 | 基本持平 |
这一步对成本影响非常明显。很多系统的 Rerank 成本高,不是因为模型太贵,而是因为候选数量设置过于保守。
七、实测降本方案四:上下文压缩,减少大模型输入 Token
AI搜索中最贵的部分通常是大模型输入输出。要降低成本,必须控制 Prompt 长度。
但“少塞文档”并不等于“降低质量”。关键是只把真正有用的信息送给模型。
改造前问题
优化前,我们默认取 Rerank 后 Top 8 文档,每个 chunk 原样拼接。这会带来几个问题:
- 多个 chunk 内容重复;
- 有些 chunk 只部分相关;
- 文档中包含大量无关说明;
- Prompt 中引用格式占用较多 Token;
- 用户问题简单时也使用长上下文。
改造方法
我们采用四种压缩策略:
1. 动态 Top K
根据问题复杂度选择上下文数量:
- FAQ 类:Top 1-2;
- 单文档定位类:Top 2-3;
- 多文档综合类:Top 5-6;
- 高风险问题:宁可少答,也不塞无关文档。
2. Chunk 内句子级筛选
不是整个 chunk 都送入模型,而是先抽取与 Query 最相关的句子或段落。
3. 去重与合并
如果多个 chunk 来自同一文档相邻位置,就合并为一个上下文块,避免重复标题和元信息。
4. 引用信息简化
保留必要来源,例如文档标题、章节、链接,不再重复长路径。
改造效果
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 平均输入 Token | 7,500 | 3,200 |
| 平均输出 Token | 850 | 520 |
| 大模型生成成本 | 100% | 约 43% |
| 平均生成耗时 | 3.7s | 1.9s |
| 答案可用率 | 82.4% | 84.1% |
这里有一个关键点:输入 Token 降低后,答案可用率并没有下降,反而略有提升。原因是模型看到的信息更干净,干扰更少。
八、实测降本方案五:模型分层,不同问题用不同模型
不是所有问题都需要最强大模型。
生产环境中,我们将模型调用分成三层:
第一层:轻量模型
用于:
- Query 分类;
- 意图识别;
- 是否需要检索;
- 问题安全判断;
- 简单 FAQ 改写。
这类任务不需要复杂推理,可以使用小模型或本地模型完成。
第二层:中等模型
用于:
- 常规知识问答;
- 简单总结;
- 单文档答案生成;
- 标准客服回复。
这是系统中的主力模型,追求性价比。
第三层:强模型
用于:
- 多文档综合分析;
- 高价值客户问题;
- 需要复杂推理的问题;
- 低置信度情况下的兜底回答。
强模型只服务少量复杂请求,而不是全量流量。
分层策略效果
| 请求类型 | 优化前模型 | 优化后模型策略 |
|---|---|---|
| FAQ 问题 | 强模型 | 缓存或轻量模型 |
| 普通知识问答 | 强模型 | 中等模型 |
| 复杂总结 | 强模型 | 强模型 |
| 无资料问题 | 强模型 | 直接拒答或提示补充 |
| 闲聊问题 | 强模型 | 不进入检索链路 |
优化后,强模型调用量下降约 64%,整体回答质量保持稳定。对于企业知识库场景,用户大多数问题并不需要复杂创造性生成,而是需要准确、可靠、可引用。
九、实测降本方案六:缓存不是简单缓存问题,而是缓存链路结果
很多团队只做“问题完全一致缓存”,但实际命中率很低。因为用户表达稍有不同,缓存就失效。
例如:
- “怎么重置密码?”
- “密码忘了怎么办?”
- “账号密码如何找回?”
- “登录密码重置流程是什么?”
这些问题语义相近,如果只做字符串匹配,就无法命中同一个缓存。
改造方法
我们做了三层缓存:
1. Query 归一化缓存
对用户问题进行标准化,例如去除语气词、统一术语、识别同义表达。
2. 语义缓存
将 Query 向量化后,与历史问题向量比较。如果相似度高,并且答案仍在有效期内,直接返回缓存答案。
3. 中间结果缓存
不仅缓存最终答案,还缓存:
- Query 改写结果;
- Embedding 结果;
- 召回结果;
- Rerank 排序结果;
- Prompt 构造结果。
这样即使最终答案不能直接复用,也可以减少部分链路成本。
缓存效果
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 完全匹配缓存命中率 | 3.8% | 3.8% |
| 语义缓存命中率 | 无 | 18.6% |
| 中间结果复用率 | 无 | 24.3% |
| 平均端到端成本 | 100% | 约 81% |
缓存对高频内部知识库非常有效,尤其是制度流程、操作手册、错误码处理等问题。需要注意的是,缓存必须考虑文档版本和权限,否则容易返回过期或越权答案。
十、实测降本方案七:先判断“能不能答”,再决定“怎么答”
AI搜索常见浪费之一,是对本来无法回答的问题也走完整链路。
例如:
- 用户问知识库中不存在的问题;
- 用户没有权限查看相关文档;
- 问题过于模糊;
- 用户在闲聊;
- 用户要求生成与知识库无关的内容。
优化前,系统会努力检索、重排、拼 Prompt,然后让大模型生成一个看似合理但不可靠的回答。这不仅浪费成本,还增加幻觉风险。
改造方法
我们加入了前置判断:
- 是否为知识库相关问题;
- 是否包含足够信息;
- 是否命中用户权限范围;
- 检索结果置信度是否达标;
- 是否需要追问用户补充信息。
如果置信度不足,系统不再强行回答,而是返回:
“当前知识库中没有找到可靠依据,建议补充产品名称、版本号或具体错误信息。”
改造效果
- 无效请求减少约 12%;
- 幻觉投诉下降约 31%;
- 大模型无效生成成本明显下降;
- 用户对“无法回答”的接受度反而提升。
在生产环境中,“不知道”比“编一个答案”更有价值。
十一、整体优化结果:成本、速度、质量三项对比
经过上述改造,系统运行两周后,我们对同等业务流量进行了对比。
核心指标对比
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 日均请求量 | 8,000 | 8,000 |
| 平均响应时间 | 5.8s | 2.9s |
| P95 响应时间 | 11.6s | 6.2s |
| 平均输入 Token | 7,500 | 3,200 |
| 平均输出 Token | 850 | 520 |
| 平均 Rerank 数量 | 80 | 27 |
| 强模型调用占比 | 100% | 36% |
| 缓存命中率 | 3.8% | 22.4% |
| 单次请求综合成本 | 100% | 约 39% |
最终,整体成本下降约 61%,响应速度提升约 50%。更重要的是,搜索质量没有明显下降,部分指标还有提升。
质量评测结果
我们使用 1,200 条真实用户问题进行人工评测,评测维度包括:
- 召回是否命中正确文档;
- 回答是否正确;
- 是否引用可靠来源;
- 是否存在幻觉;
- 表达是否清晰;
- 是否解决用户问题。
| 质量指标 | 优化前 | 优化后 |
|---|---|---|
| 答案可用率 | 82.4% | 84.1% |
| 引用准确率 | 86.7% | 89.3% |
| 幻觉率 | 5.9% | 3.8% |
| 用户追问率 | 21.5% | 18.2% |
这说明降本并不必然导致质量下降。恰当的链路优化,反而会让模型更聚焦、更稳定。
十二、AI搜索降本的优先级建议
如果你的团队也在做 AI 搜索降本,可以按照以下顺序推进。
第一优先级:控制大模型 Token
这是最直接、最有效的降本点。
建议:
- 动态 Top K;
- 压缩上下文;
- 删除无效元信息;
- 控制回答长度;
- 简单问题不用长 Prompt;
- 输出格式尽量简洁。
第二优先级:减少 Rerank 数量
Rerank 不要默认全量处理。
建议:
- 根据召回置信度动态决定候选数量;
- 高频问题缓存 Rerank 结果;
- FAQ 命中后跳过 Rerank;
- 对强关键词问题减少候选规模。
第三优先级:优化文档切片
切片决定了召回质量和向量规模。
建议:
- 不要盲目固定长度切片;
- 保留标题和层级;
- 清洗重复内容;
- 对表格做结构化处理;
- 控制 chunk 数量;
- 定期分析低命中文档。
第四优先级:建立模型路由
不同请求使用不同模型。
建议:
- 小模型做分类;
- 中等模型处理主流问答;
- 强模型处理复杂任务;
- 无法回答时不要强行生成;
- 高价值用户或关键场景可使用更强模型。
第五优先级:做语义缓存
缓存不只是缓存最终答案。
建议:
- 建立语义相似问题缓存;
- 缓存 Embedding;
- 缓存召回与重排结果;
- 绑定文档版本;
- 严格处理权限变化。
十三、容易踩的坑
1. 只看成本,不看质量
如果降本后用户找不到答案,最终会产生更高的人工客服成本或业务损失。AI搜索降本必须配合评测体系,不能只看调用账单。
2. 只调模型,不改数据
很多搜索问题不是模型问题,而是文档问题。文档重复、过期、结构混乱、标题缺失,会直接导致检索不准。
3. Prompt 越长越安心
长 Prompt 不等于好答案。上下文过多会增加干扰,模型可能引用错误片段。真正有效的是“高相关、低噪声”的上下文。
4. 缓存忽略权限
企业知识库必须重视权限。如果缓存答案没有绑定用户权限、部门、文档版本,就可能产生严重的信息泄露风险。
5. 没有离线评测集
没有评测集,就无法判断优化是变好还是变坏。建议从真实搜索日志中抽样,构建覆盖高频、长尾、复杂、多轮、无答案等类型的问题集。
十四、结论:AI搜索降本的本质是系统工程
AI搜索的成本不是某一个模型决定的,而是由整个链路共同决定的。真正有效的降本,不是简单换便宜模型,也不是粗暴减少召回数量,而是围绕“请求是否值得计算、应该计算多少、用什么模型计算、计算结果能否复用”进行系统优化。
从生产环境实测结果看,以下策略最有效:
- 优化文档切片,减少无效向量;
- 使用混合检索,提高候选质量;
- 动态 Rerank,避免全量重排;
- 压缩上下文,降低输入 Token;
- 模型分层路由,让强模型只处理复杂问题;
- 语义缓存与中间结果缓存,提高复用率;
- 前置置信度判断,避免无效生成。
最终目标不是“让 AI 搜索变得最便宜”,而是让它在生产环境中具备可持续性:成本可控、效果稳定、响应足够快、风险可管理。
对于企业来说,AI搜索真正进入生产阶段后,拼的不再是 Demo 有多惊艳,而是系统能否长期稳定运行。谁能把成本、质量和效率三者平衡好,谁才能真正把 AI 搜索做成业务基础设施。