高频问答加语义缓存不走模型

📅 2026/6/23 1:27:21
高频问答加语义缓存不走模型
先甩个数我给客服智能体加了层语义缓存之后模型调用量降了大概一半月底账单直接砍掉小一半。做法不复杂但有几个坑值得说。问题一堆人在问同一件事翻客服日志我发现一个现象——80% 的提问其实就集中在那十几个问题上怎么退款营业时间怎么改地址发票怎么开……同一个意思用户说法五花八门怎么退款我想退货钱怎么退退款流程是啥买错了能退吗这四句话意思一模一样但每一句都老老实实打了一次模型。同一个答案模型算了无数遍钱就这么烧掉的。为什么普通缓存不管用你可能想那做个缓存不就行了。但传统缓存是精确匹配——key 一个字不一样就算 miss。上面那四句话字面全不同精确缓存命中率几乎是零等于没缓存。要的是语义缓存只要意思一样不管字面怎么变都能命中。语义缓存怎么做核心思路拿向量相似度来判断是不是同一个问题。1. 缓存里存的是 (问题向量 → 答案)第一次有人问怎么退款正常走模型出答案然后把这个问题的 embedding 向量和答案一起存进缓存。2. 新问题来了先算向量再比相似度下次来个我想退货钱怎么退先把它转成向量去缓存里找最相似的那条。如果相似度超过阈值比如 0.9判定为同一个问题直接返回缓存的答案根本不打模型。新问题 → 向量化 → 在缓存里找最近邻 相似度 ≥ 0.92 → 命中返回缓存答案不走模型 相似度 0.92 → miss走模型结果再存进缓存阈值这个数是命门阈值定高定低是这套东西成败的关键我反复调过。定太低比如 0.8会误命中。我吃过亏——怎么退款和怎么退会员相似度有 0.85阈值设 0.8 的时候用户问退会员给返回了退款的答案答非所问比不缓存还糟。定太高比如 0.97基本只有原句重复才命中命中率上不去省不了几个钱。我最后定在 0.92是拿一批真实问题对试出来的折中。这个数没有标准答案强烈建议拿自己的真实问题对去测别抄我的。在零代码平台上的实操我搭客服智能体用的是个拖拽配流程的平台。语义缓存这层是这么接的在调模型那个节点前面加一个查缓存的分支——用户问题先过一个向量检索节点去我建的FAQ缓存知识库里找最相似的相似度够高 → 直接走返回缓存答案分支绕开模型节点不够高 → 才进模型节点出完答案顺手写回缓存好处是向量化和检索平台都包了我不用自己搭向量库。等于是把FAQ知识库 相似度判断复用成了缓存层。收益和代价收益模型调用量降了约一半响应也快了——命中缓存的请求几十毫秒就返回不用等模型那两三秒。用户体感这机器人答得真快。代价得诚实说两个缓存会过期。退款政策改了缓存里还是旧答案就会出错。我现在是政策类答案设较短的过期时间强制定期回源,但偶尔还是有用户拿到过期答案的零星投诉,这块没做到完美。冷门问题一点没省。语义缓存只对高频问题有效长尾问题该走模型还走模型省的全是头部那批高频。所以它是省大头不是全省。小结高频 FAQ 占了大部分流量却在重复烧钱语义缓存用向量相似度命中同义问题、绕过模型。阈值是命门拿真实数据调注意缓存过期和冷门问题省不到这两个代价。缓存背后真正要走模型的那部分我调的是讯飞星辰 MaaS现成 API 按量付加上缓存这层等于现成模型还少调一半成本压得更狠。