A Three-Layer Caching Architecture for Low-Latency LLM Web Search on Commodity CPU Hardware
Ayushman Bhattacharya, Nihal Gazi
cs.DC, cs.PF
2026-08-12
pollinations.ai用会话窗口、语义查询缓存和URL embedding去重,在8核32GB单机上跑LLM搜索,报告89.3% Redis键空间命中;作者声明这不是查询级命中。
商业AI搜索按次计费很贵。OpenAI网页搜索大约每次0.03–0.10美元,Gemini Pro grounding约0.035美元,Perplexity Sonar Pro约0.018美元。pollinations.ai自己做了开源问答引擎OreoLook(原名lixSearch):本地用无头浏览器搜网页,合成交给远程LLM,本地栈跑在普通CPU上。
用量上来后,三个问题同时出现。多轮会话记不住上下文;同一问题换种说法会整条流水线重跑;热门URL被反复算embedding。LangChain的会话记忆不跨进程,GPTCache能做语义缓存但没有会话隔离、还要另挂向量库。他们要的是能塞进现有流水线、只靠Redis的轻量方案。
三层各占Redis一个逻辑库。
语义命中会短路整条搜索-合成流水线。未命中才加载会话、查URL embedding、再跑浏览器搜索。Huffman是纯Python实现。作者承认zlib压得更好,选它是因为小档案(多数不到10KB)差距不大、零原生依赖。
评估是一份历史生产快照,不是对照实验。机器是8-vCPU Cascade Lake(2GHz、32GB、无本地GPU),三个容器副本共30个Hypercorn worker,Redis 7.4限额2GB。
| 指标 | 数字 | 对照 |
| Redis键空间命中率 | 89.3%(2182/2444) | 不是查询级语义命中 |
| Redis读延迟 | 0.1 ms | 磁盘回灌最大约107 ms(133轮) |
| Redis内存 | 1.38 MB | 测量时DB0/DB1已过期清空 |
| 未缓存单次成本 | 约0.015美元 | SearchGPT 0.03–0.10美元 |
| Huffman压缩比 | 生产小档案65–69% | 同尺寸zlib-1约54–63% |
未缓存成本把约96美元/月的机器费摊进去,再加上每次约1万输入、2500输出token的推理。作者明确拒绝用89.3%去推「省了多少推理」:这个命中率含TTL刷新、list读取、存在性检查,Layer 1估计贡献了75–80%。他们观察到会话内大约15–20%查询是余弦≥0.90的近重复,每次语义命中可省3–8秒墙钟,但没有请求级统计。
没有和GPTCache做对照。两边不是即插即用的替代品。
给想自建AI搜索、又不想付按次搜索API的人,这是一份能落地的Redis三层拆法:会话热窗口、短TTL语义去重、跨会话embedding复用。0.1ms读和1.38MB内存说明这套东西很轻。
它是生产笔记,不是算法论文。89.3%不能当成「九成查询免推理」。
作者自己写了:单机单快照;语义缓存是O(n)暴力余弦,n≤50;Huffman吞吐约800KB/s;磁盘档案未加密。更硬的缺口是评估本身。测量时语义缓存和URL缓存键数都是0,89.3%几乎全是会话层内部读写。成本表里的计价是测量期快照。浏览器搜网页省了搜索API费,稳定性和网站服务条款风险论文没谈。