使用 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语义缓存
相关推荐
小邓睡不饱耶9 小时前
2026 CSDN榜单封神!3大热门技术+5个大厂案例,新手也能直接抄作业
python·ai
Java后端的Ai之路9 小时前
【AI大模型开发】-AI 大模型原理深度解析与 API 实战(建议收藏!!!)
人工智能·ai·科普·ai大模型·llm大模型
一切尽在,你来9 小时前
1.3 环境搭建
人工智能·ai·langchain·ai编程
AI绘画哇哒哒18 小时前
【干货收藏】深度解析AI Agent框架:设计原理+主流选型+项目实操,一站式学习指南
人工智能·学习·ai·程序员·大模型·产品经理·转行
程序设计实验室18 小时前
AMD显卡也能畅玩AI画图!ROCm+ComfyUI部署全指南
ai·ai画图
bruce_哈哈哈21 小时前
Claude Code--Feishu-Skill-demo
ai
indexsunny21 小时前
互联网大厂Java面试实战:Spring Boot微服务在电商场景中的应用与挑战
java·spring boot·redis·微服务·kafka·spring security·电商
User_芊芊君子1 天前
HCCL高性能通信库编程指南:构建多卡并行训练系统
人工智能·游戏·ai·agent·测评
慢半拍iii1 天前
对比源码解读:ops-nn中卷积算子的硬件加速实现原理
人工智能·深度学习·ai·cann