使用 Redis Stack 向量索引构建大模型问答缓存系统

本文介绍如何利用 Redis Stack 的向量搜索能力 ,为大模型应用构建高性能的语义缓存(Semantic Cache),减少大模型调用次数,降低成本并提升响应速度。


一、为什么大模型需要缓存?

在大模型应用中,经常出现:

复制代码
用户问题高度重复,但表达不同

例如:

复制代码
退款流程是什么?
如何申请退款?
我要退货怎么操作?

语义一致,但文本不同。

如果每次都调用 LLM:

  • 成本高
  • 延迟高
  • GPU资源浪费

解决思路

利用 向量相似度 判断问题是否重复:

复制代码
新问题 -> 转为向量
          ↓
与历史问题计算相似度
          ↓
相似度 > 0.95
          ↓
直接返回缓存答案

这就是:

✅ Semantic Cache(语义缓存)


二、为什么选择 Redis Stack?

传统 Redis 只能做:

复制代码
Key-> Value

无法高效做向量搜索。

而 Redis Stack 新增能力:

复制代码
Redis + 搜索 +JSON + 向量索引

适合:

  • 大模型缓存
  • RAG 检索
  • embedding 存储
  • 语义搜索

Redis Stack 版本要求

建议版本:

复制代码
RedisStack>=7.2

包含模块:

模块 功能
RediSearch 全文搜索 + 向量索引
RedisJSON JSON存储
RedisBloom 去重
RedisTimeSeries 时序数据

三、Redis 向量搜索核心能力

Redis Stack 支持:

1)向量存储

可存储:

复制代码
FLOAT32 向量

例如:

复制代码
768维 embedding

2)向量索引(HNSW)

Redis 使用:

复制代码
HNSW 图索引

特点:

  • 近似最近邻搜索
  • 查询复杂度 O(logN)
  • 毫秒级搜索

3)KNN 搜索

可执行:

复制代码
找最相似的K 个问题


四、缓存数据结构设计

每个问题存储:

复制代码
question:{hash}

结构:

字段 含义
text 原始问题
vector embedding向量
answer LLM回答
metadata 业务信息

示例:

bash 复制代码
HSET question:1001
text"退款流程是什么"
answer"退款流程如下..."
vector <embedding bytes>

五、创建向量索引

创建索引:

bash 复制代码
FT.CREATE question_idx ON HASH PREFIX 1 question:
SCHEMA
text TEXT
answer TEXT
vector VECTOR HNSW 6
TYPE FLOAT32
DIM 768
DISTANCE_METRIC COSINE

参数说明:

参数 说明
HNSW 向量索引类型
DIM 向量维度
COSINE 余弦距离

六、查询流程(缓存命中流程)

用户提问:

复制代码
退款怎么操作?

流程:

Step 1:生成 embedding

python 复制代码
vector = embedding(query)

Step 2:向量搜索

bash 复制代码
FT.SEARCH question_idx
"*=>[KNN 3 @vector $vec]"
PARAMS 2 vec <query_vector>
SORTBY __vector_score
DIALECT 2

返回:

复制代码
最相似的3个问题

Step 3:判断相似度

python 复制代码
if similarity >0.95:
return cached_answer
else:
    call_llm()


七、缓存写入流程

未命中时:

复制代码
调用 LLM
       ↓
生成答案
       ↓
生成向量
       ↓
写入 Redis
bash 复制代码
HSET question:1002 ...


八、系统整体架构

真实生产架构:

复制代码
用户问题
    ↓
embedding
    ↓
Redis 向量缓存
    ↓
命中? ------ 是 → 返回缓存
    ↓否
Milvus/ES知识库
    ↓
命中? ------ 是 → 返回答案
    ↓否
调用 LLM
    ↓
结果写入缓存

九、线上优化经验

1)只缓存高频问题

避免缓存污染。

2)设置 TTL

bash 复制代码
EXPIRE question:xxx 7d

3)相似度阈值

推荐:

复制代码
0.92 - 0.97

十、Redis vs 向量数据库

特性 Redis Milvus
延迟 极低 较低
容量 中 大
使用场景 缓存 知识库

推荐:

复制代码
Redis 做热缓存
Milvus 做长期知识库

十一、总结

利用 Redis Stack 的向量能力,可以:

  • 减少 LLM 调用
  • 提升响应速度
  • 降低成本
  • 提升用户体验

Redis 从:

复制代码
KV缓存

升级为:

复制代码
AI语义缓存
相关推荐
wflynn1 小时前
MIT 团队用 GPT-6 Astra 改写小模型权重,跳过梯度训练提升指令遵循能力
ai·技术
Mikko73 小时前
Redis 连接数满了服务端有错误信息吗?连接数不增加却命令超时?6.2 实测连接池、超时与大 key 怎么判定
java·spring boot·redis·后端
无言听风雨丶3 小时前
Redis 运维实战与排错
运维·数据库·redis
小七-七牛开发者4 小时前
Coding Agent 推理性能优化:Decode、KV Cache 与多 Session 调度
ai·agent·kvcache·ai coding·speculativedecoding
GISer_Jing5 小时前
SuperAgent
ai·langchain
YYYing.5 小时前
【Agent系列 (十一) 】上下文工程
人工智能·python·ai·agent·上下文工程
最强小杰7 小时前
DeepSeek V4 Flash + Codex CLI 接入教程:原生 Responses API 适配,从配置到跑通收藏这篇就够了(2026)
java·前端·python·ai
字节探索8 小时前
Redis 分布式锁:从 SETNX 误删到看门狗自动续期的原理与实践
redis·分布式
七夜zippoe8 小时前
Agent 错误处理体系:分类、重试、降级与熔断设计
ai·agent·降级·错误处理·熔断设计
VIP_CQCRE8 小时前
内容自动化越跑越乱?先补上状态、去重和失败恢复
python·ai·工作流·幂等设计·内容自动化