使用 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语义缓存
相关推荐
云和数据.ChenGuang6 小时前
魔搭社区 测试AI案例故障
人工智能·深度学习·机器学习·ai·mindstudio
努力也学不会java7 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
GJGCY9 小时前
中小企业财务AI工具技术评测:四大类别架构差异与选型维度
大数据·人工智能·ai·架构·财务·智能体
菜鸟分享录10 小时前
OpenClaw 公网访问难题?一招解决 “control ui requires device identity“ 报错
ai·openclaw·小龙虾
赵康11 小时前
老板与员工:5分钟理解 Subagent 架构
ai·claude code·subagent·openclaw
JavaGuide11 小时前
MiniMax M2.7 发布!Redis 故障排查 + 跨语言重构场景实测,表现如何?
redis·后端·ai·ai编程
AI-Ming11 小时前
注意力机制
算法·ai·ai编程
香吧香11 小时前
Claude Code Token 收费估算
ai
weixin_4563216412 小时前
Java架构设计:Redis持久化方案整合实战
java·开发语言·redis
苦瓜小生13 小时前
【黑马点评学习笔记 | 实战篇 】| 6-Redis消息队列
redis·笔记·后端