使用 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语义缓存
相关推荐
企业架构师老王38 分钟前
2026制造业安全生产隐患识别AI方案:从主流产品对比看企业级AI Agent的非侵入式落地路径
人工智能·安全·ai
虹科网络安全1 小时前
艾体宝产品|深度解读 Redis 8.4 新增功能:原子化 Slot 迁移(上)
数据库·redis·bootstrap
xixixi777772 小时前
三重筑基:5G-A超级上行提速千兆,电联低频共享扫平盲点,800V HVDC算电协同破局
人工智能·5g·ai·大模型·算力·通信·信通院
dllmayday3 小时前
Milvus在LangChain中使用方法
人工智能·ai·langchain·milvus
m0_380167143 小时前
CoinGlass API 好用吗?(2026深度评估)
ai·区块链
俊哥V4 小时前
AI一周事件 · 2026-04-22 至 2026-04-28
人工智能·ai
AwesomeCPA4 小时前
Claude Code Token消耗优化指南
ai
轻松,带微笑4 小时前
2026年4月AI热点综述:行业调整、应用落地与治理推进
ai
薛定谔的猫3694 小时前
深度解析:大语言模型 (LLM) Agent 的架构与演进趋势
ai·llm·agent·技术趋势·artificial intelligence
vistaup4 小时前
在 claude code 中启用LSP
ai