使用 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语义缓存
相关推荐
云燕实验室CloudLab1 小时前
《AI开始"抱团"思考了!多智能体 + 思维图到底有多强?》
ai·学习工具·智慧学伴
小七-七牛开发者1 小时前
论文解读:DeepSeek DSpark 在真实高并发推理服务中,如何保证 Token 生成又好又快?
ai·大模型·编程·ai coding
doiito8 小时前
【Agent Harness】Gliding Horse 核心设计理念,不跟风开发自己的AI Agent
ai·rust·架构设计·系统设计·ai agent
用户3074596982071 天前
Redis 延时队列详解
redis
烤代码的吐司君1 天前
Redis 数据结构 ZSet, BIT, HyperLogLog,Geo 空间数据
redis·后端
doiito1 天前
【Agent Harness】Gliding Horse 的 L2 作战地图:让多 Agent 协作从“摸黑”变成“透明”
ai·rust·架构设计·系统设计·ai agent
xiezhr1 天前
逛GitHub发现一款免费带有AI功能的数据库管理工具DBX
ai·开源软件·自然语言·数据库管理工具
垚森3 天前
我用 GLM-5.2 造了个炸裂主题后台:16 套主题随心切,可在线体验
ai·react
leeyi3 天前
Checkpoint 机制:Agent 怎么在断电后接着跑
redis·aigc·agent
doiito3 天前
【Agent Harness】Gliding Horse 工具结果压缩体系:如何用“指针”驯服上下文膨胀
ai·rust·架构设计·系统设计·ai agent