[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fTLUFE5dmvPpz_9xafeT0utSmmFA2urXPA8YTyGROVm8":3},{"item":4,"related":43},{"id":5,"type":6,"title":7,"slug":8,"summary":9,"body":10,"coverUrl":11,"productScreenshots":12,"productLinks":13,"authorName":14,"authorUrl":15,"authorSubject":16,"category":17,"tags":22,"sourceLabel":35,"sourceName":35,"sourceUrl":35,"status":36,"seoTitle":35,"seoDescription":35,"canonicalUrl":35,"isFeatured":37,"sno":38,"sortOrder":39,"publishedAt":40,"updatedAt":41,"createdAt":42},"42095117-b51b-4851-8d7b-dcc3ab24d835","article","语义缓存：把 LLM 账单砍半的隐藏利器","semantic-cache-llm-cost","同一个问题一百人问，就要调一百次模型？语义缓存按「意思相近」命中直接返回，省下大量调用。本文讲清它与精确缓存的区别、做法、阈值与时效等取舍，并给出向量命中最小示例。","同一个问题，一百个用户来问，你就要调一百次模型、花一百份钱？语义缓存说：相似的问题，答案也相似，命中就直接返回，别再烧模型。它是把 LLM 账单砍半的隐藏利器，却常被忽略。\n\n## 背景：为什么缓存不简单\n\n普通缓存靠「精确匹配 key」，对 LLM 几乎没用——用户问法千变万化，同一意思「北京天气」「帝都今天啥天」，字面完全不同，精确 key 永远不命中。语义缓存按「意思相近」命中，才真正起作用。\n\n## 它怎么做\n\n把用户问题做 embedding，存进向量库；新问题来时，先检索语义最相近的历史问题，若相似度超过阈值，直接返回缓存答案（或微调后返回）。只有未命中才调模型，并把新问题加答案写入缓存。\n\n```mermaid\nflowchart TD\n    A[用户问题] --> B[embedding 向量化]\n    B --> C[向量库检索相似问题]\n    C --> D{相似度大于阈值?}\n    D -->|是| E[直接返回缓存答案]\n    D -->|否| F[调模型生成]\n    F --> G[写入缓存]\n```\n\n## 一个最小可运行的例子\n\n用向量检索判断是否语义命中：\n\n```python\nquery_vec = embed(user_question)\nhit = vector_db.search(query_vec, top_k=1)\nif hit and hit[\"score\"] > 0.92:        # 语义相似度超过阈值即命中\n    return hit[\"answer\"]               # 直接返回缓存，不再调模型\nanswer = model(user_question)\nvector_db.add(embed(user_question), {\"answer\": answer})\nreturn answer\n```\n\n## 取舍与边界\n\n- **阈值难调**：太松会把不同问题当相同，答非所问；太紧缓存形同虚设，要靠线上数据反推。\n- **时效性问题不适合缓存**：实时数据（股价、天气、库存）会过期，要么不缓存，要么配很短 TTL。\n- **答案可能过时**：知识更新后缓存要失效（TTL 或主动淘汰），否则模型「学会」了新东西，缓存还在喂旧答案。\n- **隐私**：缓存里存了用户问题，注意脱敏与合规，别把敏感query 落库。\n\n## Tips\n\n- 高频重复问答的产品（客服、助手），第一件事就上语义缓存。\n- 阈值从 0.9 起调，结合「答错率」指标逐步校准。\n- 实时类问题设短 TTL 或干脆不缓存，避免返回过期答案。\n- 缓存条目要能按知识更新批量失效。\n- 缓存命中率本身是个重要监控指标，盯住它看省钱效果。","https:\u002F\u002Foxqtewbrpuiouqqjrvdv.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fpublic-media\u002F2026-07-20\u002F7270a4f1-1e11-45bb-9bb2-90f4ae772ec8.jpg",[],[],"Foundit AI","https:\u002F\u002Ffoundit.cn","f39339b1-aaa6-4e86-b0c2-a6e6a21113b5",{"id":18,"name":19,"slug":20,"description":21},"6179d3b6-dc34-4483-9ded-3cd9f1b37a47","科普","abbreviation","介绍各领域新兴概念",[23,27,31],{"id":24,"name":25,"slug":26},"88d2bc27-0e0f-468a-b907-2991cb97b87b","人工智能","ai",{"id":28,"name":29,"slug":30},"7c76bfc2-f80f-4ee0-a95d-27bd8708b434","技术","slug",{"id":32,"name":33,"slug":34},"4c2bbea6-eab7-40a8-8447-1de478ff7749","分析","analyse",null,"published",false,80,0,"2026-07-15T00:00:00.000Z","2026-07-20T11:33:01.039Z","2026-07-20T10:23:29.397Z",[44,54,63],{"id":45,"type":6,"title":46,"slug":47,"summary":48,"coverUrl":49,"authorName":50,"sno":51,"publishedAt":52,"createdAt":53},"f00e5274-8e0b-40fe-af3b-b6a8d0183b9c","一张贴纸就能骗过视觉 AI？对抗样本不是魔法","adversarial-examples-fool-visual-ai","人眼仍能认出的物体，经过精心设计的微小扰动或标记后，机器却可能改变判断。这类输入称为对抗样本。本文解释攻击者如何利用模型的决策边界，现实攻击为何比实验更难，以及为什么目前不存在一劳永逸的防御。","\u002Fuploads\u002F2026-09-08\u002F151f887b-c5f1-4647-b369-cdda8a1e1b4f.jpg","Foundit",50,"2026-09-03T00:00:00.000Z","2026-08-14T03:06:09.765Z",{"id":55,"type":6,"title":56,"slug":57,"summary":58,"coverUrl":59,"authorName":50,"sno":60,"publishedAt":61,"createdAt":62},"305492d4-c146-456a-b341-31140ab9cafd","天气预报不再一格一格算空气，AI 是怎么预测风暴的？","how-ai-weather-forecasting-works","传统数值预报依据物理方程推进大气状态，AI 天气模型则从历史观测与再分析数据中学习状态如何演变。本文以 GraphCast 为例，解释图神经网络如何快速预测全球天气、它与传统方法如何协作，以及极端天气仍有哪些难点。","\u002Fuploads\u002F2026-08-16\u002Fa8b5ddad-d6db-4d12-a159-87a6c5309082.jpg",60,"2026-08-16T00:00:00.000Z","2026-08-14T03:06:12.102Z",{"id":64,"type":6,"title":65,"slug":66,"summary":67,"coverUrl":68,"authorName":50,"sno":60,"publishedAt":69,"createdAt":70},"7f962194-e0c6-4072-9b50-c70054beb0e5","同一个问题问三遍，AI 为什么会给出三个答案？","why-ai-gives-different-answers-sampling","大模型每次回答都在从候选词中继续选择，而不是从数据库里取出一段固定文字。温度、Top-p 和随机采样共同决定回答更稳定还是更有变化。本文用抽签与岔路的比喻，解释 AI 的随机性从哪里来，以及什么时候应该追求一致。","\u002Fuploads\u002F2026-08-14\u002Fb322d338-b5c0-48c7-addf-fbd91421e316.jpg","2026-08-14T00:00:00.000Z","2026-08-14T03:06:07.351Z"]