AI网关调用结果缓存与高频查询语义去重降本落地

日期:2026-08-23

一、项目背景

这个网关项目接的是客服问答场景,我们拉了上线前的日志一看,同一个退货政策一天被问几千次,问法略有不同但答案一模一样。初版网关只做了请求级限流,每次查询都打到后端大模型,token 成本压不下来,而且高峰时段后端排队,延迟跟着抖。客户算过,光是这类重复问答,每月烧掉的 token 费用能买半台机器,更别说后端被无效流量占着,真有复杂问题反而排不上。

底子是 AI 网关的路由和计量层,我们要在网关侧加一层结果缓存,而不是只在请求侧做文章,因为请求侧缓存命中不了相似问法,等于没做。

二、落地场景

网关对相似查询的结果做语义缓存:请求进来先算语义指纹,指纹命中且未过期,直接返回缓存的结果,不再调后端大模型。高频问法因为语义相近,命中率很高。缓存带 TTL,到期回源取新结果;某些政策类内容更新后主动失效,保证不答旧版。命中率持续偏低时,网关自动回退到实时推理,不让缓存拖慢长尾查询,缓存是加速器不是拦截器。

三、关键技术挑战与解决思路

结果语义相似判定是核心。不能简单按问题字符串做 key,因为「怎么退换货」和「退货流程是什么」语义一样但字面不同。我们用查询的 embedding 做近邻检索,相似度超过阈值就视为同一查询,命中缓存结果。阈值卡太松会答非所问,太紧又命中不了,我们按业务抽样调到一个平衡点,不同业务线的阈值可以不一样。

缓存命中与一致性要处理。政策类内容会变,所以 TTL 不能太长,且提供主动失效接口,运营改了政策一键清对应缓存。我们没做「永久缓存」,因为低成本换来的是答错题风险,不划算,尤其是合规类问答答错代价极高。

低命中回退保证长尾体验。某些低频复杂问法永远命中不了,网关要能识别并直接透传实时推理,不能为了命中率硬塞缓存,否则复杂问题被错配成简单答案更糟。

案例片段(已脱敏): 结果语义缓存(示意):q_vec = embed("退货流程怎么走") hit = vector_search(cache_index, q_vec, topk=1) if hit and hit.similarity > 0.92 and not expired(hit):    return hit.result        # 命中,不再调大模型 else:    result = call_llm(query)  # 回源    cache_index.add(q_vec, result, ttl=3600)上线一周,退货政策类问法命中率 87%,这部分查询后端大模型调用量直接归零。一次运营改了退货时效,主动失效接口清掉对应缓存,没出现答旧版。

四、效果数据

缓存命中率稳定在 80% 到 88%,主要集中在政策类、流程类高频问法,这部分占客服总查询量的大头。后端大模型 token 成本整体下降约 41%,高峰时段不再因为重复查询排队,平均响应延迟从约 1.2 秒降到 0.4 秒,用户体验和系统成本双赢。回源率约 12% 到 20%,主要是长尾复杂问法,这部分体验不受影响。运营改政策的主动失效接口每天调用几十次,保证缓存不答旧版,合规风险可控。

五、可复用经验总结

网关层做结果缓存比请求缓存更省,因为命中后连后端大模型都不用调,这是降本最大的杠杆,尤其对高度重复的客服问答。语义相似度阈值要按业务抽样调,别拍个 0.95 就完事,太紧命中不了等于没做,太松又会答非所问。TTL 别贪长,政策类内容会变,宁可多回源几次也别答错旧版,我们用过一次长 TTL 被运营骂过,答出去的政策和页面不一致,客诉直接升级。长尾查询要有回退通道,缓存是加速器不是拦截器,硬塞缓存只会把复杂问题答歪,最后还得人工擦屁股。

结语

结果缓存上线后,客户把省下来的 token 预算挪去接了更多长尾场景,反而整体用量涨了,但单位成本降了,这账算得过来。有个我们后来调的,是缓存命中率看板要对业务线分开,最初只有一个总命中率,运营看不出哪类政策该调 TTL,拆开之后优化更有抓手。还有一点,语义去重的向量库本身也要维护,embedding 模型升级后旧指纹会偏移,我们遇到过一次升级后命中率掉一截,回灌了一遍才恢复。如果再走一步,我会把冷热查询分开存,热查询长 TTL、冷查询不缓存,进一步压存储和回源压力。

回头看,结果缓存把成本压下来之后,客户反而敢把更多长尾问题接进网关,因为边际成本几乎为零,整体用量涨了但账单没涨多少,这和我们最初省钱的目标殊途同归。我们也踩过一个坑,是语义去重把少数问法像但答案该不同的问题也命中了缓存,比如退款多久到账和退款多久原路返回,字面接近但答案时效不同,被归成一类。后来在相似度判定的基础上加了关键实体比对,才把这类误命中隔开。缓存这东西,命中率是面子,命中得对是里子,里子漏了面子越大越丢人。

把这套经验收个尾,网关层降本的空间其实比模型层更大,因为网关离业务近、复用度高,一个缓存策略能让成千上万次重复查询免调大模型。我们后来把这类降本手段做成网关的内置能力,客户开箱即用,不用每个项目重新造。离业务越近的优化,杠杆越长。