我们对比这四种:
1️⃣ RedisSearch:元数据过滤 + 向量检索(单引擎)
2️⃣ Elasticsearch:元数据过滤 + 向量检索(单引擎)
3️⃣ Redis + ES:ES先过滤 → 再向量检索
4️⃣ Redis + ES:Redis先向量检索 → ES过滤(工业主流)
一、四种架构整体图
① Redis 单引擎
Query
↓
RedisSearch
(KNN + TAG filter)
↓
Result
② ES 单引擎
Query
↓
Elasticsearch
(vector + bool filter)
↓
Result
③ 双引擎(ES先过滤 ❌)
Query
↓
Elasticsearch filter
↓
Redis/ES vector search
↓
Result
④ 双引擎(Redis先召回 ✅)
Query
↓
Redis KNN recall
↓
Elasticsearch filter
↓
Result
二、核心维度对比(⭐⭐⭐⭐⭐重点)
| 维度 | Redis单引擎 | ES单引擎 | ES先过滤 | Redis先召回(推荐) |
|---|---|---|---|---|
| 向量搜索速度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 元数据过滤能力 | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 召回质量 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ ❌ | ⭐⭐⭐⭐⭐ |
| 延迟稳定性(P99) | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
| 权限系统支持 | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 大规模扩展 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 工程复杂度 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 企业RAG适配 | ⭐⭐ | ⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ |
三、逐个方案深度分析
方案① RedisSearch 单引擎
工作方式
Redis 同时做:
KNN + TAG过滤
优点
✅ 极低延迟(内存ANN)
✅ 架构简单
✅ 运维成本低
致命问题
1️⃣ TAG filter 会破坏 HNSW
过滤发生在搜索阶段:
只允许访问部分节点
导致:
- recall下降
- ANN退化
2️⃣ 复杂查询能力弱
Redis 不擅长:
- bool组合
- 权限继承
- keyword ranking
适合阶段
✅ MVP
✅ 百万级以内知识库
方案② Elasticsearch 单引擎
工作方式
ES 同时执行:
bool filter + vector search
优点
✅ 强过滤能力
✅ hybrid search 原生支持
✅ 企业权限模型友好
问题(很多人低估)
1️⃣ 向量搜索慢
ES ANN:
磁盘 + segment + bitset
不是纯内存图。
2️⃣ P99 延迟高
典型:
P50 = 80ms
P99 = 800ms+
3️⃣ 成本高
需要:
- 更多节点
- JVM tuning
适合
✅ 过滤复杂
❌ 高QPS语义检索
方案③ ES先过滤 → 再向量检索(错误架构 ❌)
这是很多团队的直觉方案。
为什么看起来合理?
先过滤权限
再找相似
逻辑像 SQL。
但 ANN 不是 SQL。
核心问题:破坏 HNSW 图
过滤后:
导航路径消失
导致:
- 找不到最近邻
- recall暴跌
典型现象
- 明明有答案却搜不到
- 结果随机变化
- 长尾延迟爆炸
工业界基本不用。
方案④ Redis先召回 → ES过滤(⭐工业标准)
工作方式
Step1:Redis
全局语义空间找 TopK
保持 HNSW 完整。
Step2:ES
在候选集合中:
权限过滤
keyword增强
排序
为什么它最好?
因为分工正确:
| 系统 | 做自己最擅长的事 |
|---|---|
| Redis | 快速语义Recall |
| ES | 精准结构Filter |
技术本质
这是:
Recall → Filter → Rerank
也是:
- OpenAI Retrieval
- Microsoft Copilot
- 企业知识助手
通用架构。
四、性能直觉对比(非常关键)
假设:
1000万文档
财务权限占5%
ES先过滤
1000万 → 50万
ANN在50万上跑
问题:
- 图稀疏
- 路径断裂
Redis先召回
1000万 ANN导航
→ Top300
→ ES过滤
ANN 始终在最优空间。
五、真实生产结论(行业经验)
| 阶段 | 推荐架构 |
|---|---|
| Demo | Redis |
| 小规模企业 | ES |
| 中大型RAG | Redis→ES ⭐ |
| 超大规模 | 多Recall引擎 |
六、总结⭐
RedisSearch 适合高性能语义召回,Elasticsearch 擅长复杂元数据过滤。若先进行结构化过滤会破坏 HNSW 图的全局连通性,降低召回质量。因此工业界普遍采用 Redis 进行向量召回,再由 Elasticsearch 执行权限与结构化过滤的两阶段检索架构。
真正大厂级架构升级路径:
Redis → Redis+ES → 多Recall → Learning-to-Rank → Agentic Retrieval
这基本就是 AI 搜索系统的完整进化路线。