特性对比 | HNSW | Flat search |
搜索原理 | HNSW 是一种基于图论的高性能近似最近邻搜索算法。该算法的核心在于构建一个层次化的可导航小世界图结构,通过将数据点组织为多层级联稀疏图,可在显著提升搜索效率的同时保持较高的查询准确率。 | Flat Search 是一种基础的向量相似性检索方法,采用无索引的暴力匹配机制。当进行搜索时,该算法会将查询向量与数据集中的每个向量进行比较,无需预构建复杂数据结构或进行近似处理。该算法会遍历所有数据点进行精确比较,能够确保 100% 的召回率。 |
搜索速度 | 通过层级图结构,搜索路径短,速度快。 | 线性扫描,查询时间随数据量线性增长。数据量大时,查询延迟高,资源消耗大。 |
结果精度 | 近似搜索准确率高,通常能达到 90%~99% 以上。 | 100% 精确,返回真正的最近邻,没有近似误差。 |
内存占用 | 内存占用高,需要额外存储图的边和层级结构。 | 内存占用低,只存储原始向量数据,几乎没有额外内存消耗。 |
实现复杂度 | 索引构建复杂,算法和数据结构较复杂,参数调优难度较大。 | 逻辑简单,易于实现和维护。 |
数据规模扩展 | 扩展性好,适合数十万甚至数亿的大规模数据集。 | 扩展性差,难以支持实时更新或增量添加新数据,适合小规模数据集。 |
使用场景 |
|
|
类别 | 说明 |
命令语法 | |
时间复杂度 | O (N log N),其中 N 是被索引项的数量。 |
命令描述 | 创建一个空的索引,支持在创建时指定索引相关属性,如允许被索引的键前缀,向量算法,向量维度等。 说明 索引创建成功后会启动回填进程,即:
|
选项 |
说明 |
返回值 |
|
示例 | 创建一个名为 redis_doctest 的 HNSW 索引,命令示例如下。 返回示例。 |
类别 | 说明 |
命令语法 | |
时间复杂度 | O(N),其中 N 是被索引的数据量。 |
命令描述 | 在指定索引中执行搜索查询。 |
选项 |
|
返回值 |
|
示例 | 如下代码以向量相似度搜索为例,介绍相关命令示例:
|
类别 | 说明 |
命令语法 | |
时间复杂度 | O(1)。 |
命令描述 | 查询当前数据库中已创建的索引列表。 |
选项 | 无。 |
返回值 |
|
示例 | 命令示例。 返回示例。 |
类别 | 说明 |
命令语法 | |
时间复杂度 | O(1)。 |
命令描述 | 查询指定索引的详细信息,例如索引的参数,已索引的数据量等。 |
选项 | <index_name>:需要查询的索引名称。 |
返回值 |
|
示例 |