LLM响应缓存
LLM Response Caching
LLM调用结果缓存,通过hash key去重避免重复计算,降低API成本
子问题
1.缓存key设计
2.缓存命中策略
3.流式响应处理
4.缓存失效与清理
5.缓存与文档生命周期的级联删除
6.缓存重建:从缓存恢复知识图谱而非重新调用 LLM
各项目的解法1 solutions
Signals
横向对比
| 维度 | LightRAG |
|---|---|
| 缓存key设计 | 扁平化三段式 mode:cache_type:md5_hash,单表存储所有类型 |
| 缓存命中策略 | MD5 精确匹配,query 含 11 参数哈希,extract 含 prompt+system+history |
| 流式响应处理 | hasattr(__aiter__) 检测 AsyncIterator,自动跳过不缓存 |
| 缓存失效与清理 | chunk-cache 反向索引 llm_cache_list,支持按文档级联删除 + 全量 drop |
| 去重检测 | 写入前比较 existing_content == new_content,相同则跳过 |
| 双开关控制 | enable_llm_cache 控制 query/keywords,enable_llm_cache_for_entity_extract 独立控制抽取 |
| 缓存重建 | _get_cached_extraction_results 从缓存重建知识图谱,按 create_time 排序 |
最佳实践
1.扁平化key结构(mode:type:hash)
2.区分entity extraction和query缓存模式
3.chunk 维护 llm_cache_list 反向索引支持精确级联删除
4.cache_keys_collector 模式批量收集后统一更新反向索引
5.hasattr(__aiter__) 检测流式响应自动跳过缓存