RedisSearch 和 Elasticsearch 都支持 HNSW(Hierarchical Navigable Small World)向量索引 ,但它们在存储方式、查询流程、扩展能力、性能侧重点上差异很大。很多人在做向量检索架构选型时都会对比这两者。
下面从 架构 → 存储 → 检索 → 性能 → 适用场景 五个维度详细对比。
一、底层实现来源不同
RedisSearch
RedisSearch 的向量索引是:
RedisSearch Module
↓
C 实现 HNSW
特点:
- 完全 内存优先
- Redis 线程模型
- 低延迟
Elasticsearch
Elasticsearch 的向量检索来自:
Elasticsearch
↓
Lucene
↓
Lucene HNSW
也就是说:
ES 的 HNSW 本质是 Lucene 的 HNSW 实现
特点:
- 磁盘索引
- Segment 结构
- 分布式搜索
二、向量存储方式对比
RedisSearch
向量存储在:
Redis 内存
结构:
vector field
↓
HNSW graph
↓
vector data
典型结构:
doc
├ id
├ text
└ vector[768]
特点:
✅ 查询极快
❌ 内存消耗大
例如:
1000万 × 768维
≈ 30GB+
Elasticsearch
ES 的向量存储在:
Lucene Segment
结构:
segment
├ vector values
├ HNSW graph
└ metadata
特点:
磁盘存储 + OS cache
优点:
- 节省内存
- 可存海量数据
缺点:
- 查询略慢于纯内存
三、HNSW构建方式差异
RedisSearch
写入时:
vector → 直接插入 HNSW graph
实时更新。
流程:
insert vector
↓
update HNSW graph
特点:
✅ 实时索引
❌ 写入成本高
Elasticsearch
ES 的写入是:
doc → segment
流程:
写入 buffer
↓
refresh
↓
生成 segment
↓
构建 HNSW
特点:
Segment级 HNSW
多个 segment:
segment1 HNSW
segment2 HNSW
segment3 HNSW
查询时:
multi segment search
再 merge topK。
四、查询流程对比
RedisSearch 查询
流程:
query vector
↓
HNSW search
↓
topK result
非常简单:
单图搜索
时间复杂度:
O(log n)
延迟通常:
1ms ~ 5ms
Elasticsearch 查询
流程更复杂:
query
↓
broadcast shards
↓
segment search
↓
merge topK
↓
fetch doc
过程:
HNSW(segment1)
HNSW(segment2)
HNSW(segment3)
再:
merge topK
因此延迟通常:
10ms ~ 50ms
五、分布式能力差异
RedisSearch
Redis cluster:
shard1
shard2
shard3
每个 shard 独立 HNSW。
查询流程:
broadcast
↓
each shard search
↓
merge
但 RedisSearch 的分布式能力:
弱于 ES
原因:
- Redis cluster 设计偏 KV
- 查询协调能力弱
Elasticsearch
ES 原生就是:
分布式搜索引擎
架构:
coordinator
↓
shards
↓
replicas
优势:
- 自动负载均衡
- 高并发
- 海量数据
六、向量 + 文本混合搜索
这是 ES 最大优势。
Elasticsearch
支持:
vector + BM25
示例:
semantic search + keyword search
流程:
vector score
+
text score
融合:
hybrid search
例如:
knn + match
RedisSearch
RedisSearch 也支持:
vector + filter
但能力较弱:
vector search
+
tag filter
复杂排序不如 ES。
七、性能对比(典型)
| 指标 | RedisSearch | Elasticsearch |
|---|---|---|
| 存储 | 内存 | 磁盘+cache |
| 延迟 | ⭐极低 | 中等 |
| 吞吐 | 高 | 很高 |
| 数据规模 | 中 | 超大 |
| 实时更新 | 强 | 中 |
| 分布式 | 一般 | 强 |
| 混合搜索 | 一般 | 很强 |
八、典型使用场景
RedisSearch 更适合
实时推荐
向量召回
在线搜索
RAG embedding store
特点:
低延迟
数据规模中等
Elasticsearch 更适合
知识库检索
日志搜索
RAG文档库
企业搜索
特点:
大规模
复杂查询
分布式
九、一句话总结
RedisSearch 和 ES 的 HNSW核心区别:
RedisSearch = 内存向量数据库
Elasticsearch = 分布式搜索引擎 + 向量能力
所以:
小数据 + 极低延迟 → RedisSearch
海量数据 + 混合搜索 → Elasticsearch