RediSearch 2.4 发行说明

向量相似性搜索 (VSS)。新的查询语法 Dialect 版本 2。在 Dialect 1 和 Dialect 2 之间选择查询解析器行为。混合查询。

Redis 堆栈

要求

RediSearch v2.4.16 需要:

  • 最低 Redis 兼容版本(数据库):6.0.0
  • 最低 Redis 企业软件版本(集群):6.0.0

v2.4.16(2022 年 11 月)

这是 RediSearch 2.4 的维护版本

更新紧急度:HIGH:存在可能影响用户子集的严重错误。升级!

详:

  • 错误修复:

    • 排名 #2962AOF 预加载时崩溃 - 在定期回调中使用本地 GC 上下文 (MOD-3951)
    • #2863CPU 使用率高 - 将 MAX_LEV_DISTANCE 更改为 4 (MOD-3563)
    • #3041#3063#3051#3143 多个内存泄漏(MOD-4121、MOD-4252)
    • 排名 #3119相交迭代器 GetCriteriaTester 时崩溃 (MOD-4200)
    • 排名 #3128必须按每个文档的索引重新评估过滤规则 (MOD-4207)
    • 排名 #3127修复错误结果计数的断言失败,这会导致崩溃 (MOD-4214)
    • #3171缺少导致崩溃的 NumericRangeIterator_OnReopen 的实现 (MOD-4255)
    • 排名 #3191错误的查询迭代器强制转换导致 CPU 利用率达到 100% (MOD-4290)
    • 排名 #3197Release 无法在主线程上创建临时索引 (MOD-4388)
    • 排名 #2981在迭代器中双重释放混合查询导致崩溃 (MOD-4411)
    • 排名 #3161将 INKEYS 和通配符查询组合在一起时,延迟会随着时间的推移而增加 (MOD-4343)

v2.4.15(2022 年 10 月)

这是 RediSearch 2.4 的维护版本。

更新紧急度:MODERATE:对服务器进行升级编程,但这不是紧急的。

详:

  • 错误修复:

    • 排名 #3095替换协调器中参数和查询的解析顺序 (MOD-4205)
    • 排名 #3012提高 LLAPI 的效率findInfo,这可能会降低 Redis Enterprise 升级期间的稳定性(MOD-4197、MOD-4052)
    • #3040#3049 修复SORTBYcoordinator 上不可排序字段的 numeric 字段 (MOD-4115)
    • 排名 #3050与 结合使用时,缺失值的字段结果应排在最后SORTBY(型号-4120)
  • 改进:

    • 排名 #3047strlenstring 函数设置为FT.AGGREGATE(MOD-4141)
    • 排名 #3038number_of_usesFT.INFO查询索引的次数

v2.4.14(2022 年 8 月)

这是 RediSearch 2.4 的维护版本。

更新紧急度:MODERATE:对服务器进行升级编程,但这不是紧急的。

详:

  • 改进:

  • 错误修复:

v2.4.11(2022 年 7 月)

这是 RediSearch 2.4 的维护版本。

更新紧急度:MODERATE:对服务器进行升级编程,但这不是紧急的。

详:

  • 错误修复:

    • 排名 #2892结合SORTBYMAXFT.SEARCH(不受支持)导致响应不一致和内存不足错误(MOD-3540、MOD-3644)
    • VecSim 版本 v0.3.1
      • HNSW 索引:删除时回收内存 - HNSW 索引的数据结构现在在删除时回收内存并收缩
  • 改进:

    • VecSim 版本 v0.3.1
      • HNSW 指数:删除过程速度提高了 40%
      • 更准确的 HNSW 索引内存消耗报告

v2.4.10(2022 年 7 月)

这是 RediSearch 2.4 的维护版本。

更新紧急度:MODERATE:对服务器进行升级编程,但这不是紧急的。

详:

  • 错误修复:

    • #2863由于过高而崩溃 (Levenshtein)DISTANCEFT.SPELLCHECK.此修复将DISTANCE到 4。(MOD-3563)
    • #2875并非所有具有矢量字段的文档都使用 Auto Tiering 进行索引 (MOD-3584)
    • #2846对矢量索引强制实施 Redis Enterprise 内存限制

v2.4.9(2022 年 6 月)

这是 RediSearch 2.4 的维护版本。

更新紧急度:MODERATE:对服务器进行升级编程,但这不是紧急的。

详:

  • 错误修复:

    • #2837#2836 崩溃FT.AGGREGATE"...应用 '-INF % -1'...”
    • #2814 FT.EXPLAIN没有参数会导致崩溃
    • #2790不對num_termsFT.INFO从所有文档中删除术语后(垃圾回收)
    • #2804冻结时间OFFSET+LIMIT大于maxSearchResults(配置)
    • 排名 #2791BlockedClientMeasureTime到 Coordinator 以获得更准确的性能统计数据
    • #2802键的标记部分(大括号)现在由{}FT.SEARCH
  • 改进:

    • #2806将 RediSearch 初始化为库时不加载 JSON API
  • 次要的重大更改:

    • 如上所述,#2802 是一个错误修复。但是,如果您的应用程序依赖于 RediSearch 错误地修剪键的标记部分 (使用 ),这可能会破坏您的应用程序。这仅适用于在集群数据库中使用 RediSearch 的用户。{}

v2.4.8(2022 年 5 月)

这是 RediSearch 2.4 的维护版本。

更新紧急度:MODERATE:对服务器进行升级编程,但这不是紧急的。 但是,如果您使用的是 Vector Similarity(在 RediSearch 2.4 中引入),则存在一些可能影响部分用户的关键错误。在这种情况下,您应该升级。

详:

  • 错误修复:

    • 排名 #2739与向量相似性相关的协调器内存泄漏 (MOD-3023)
    • #2736#2782 向量相似性索引的内存分配限制(导致 OOM)(MOD-3195)
    • 排名 #2755在创建新的向量索引时,比较整个向量字段名称而不是前缀
    • 排名 #2780初始化 中的所有变量EvalContext(这可能会导致集群数据库崩溃)
  • 改进:

v2.4.6(2022 年 5 月)

这是 RediSearch 2.4 的维护版本。

更新紧急度:MODERATE:对服务器进行升级编程,但这不是紧急的。

详:

  • 错误修复:

    • #2716删除了可能导致 (MOD-3008、MOD-3012) 副本崩溃的 assert 语句
    • #2734 ON_TIMEOUT RETURN策略修复:返回在 timeout 之前获得的结果,而不是丢弃它们
    • 排名 #2714协调器中非 TLS 设置的内存泄漏

v2.4.5(2022 年 4 月)

这是 RediSearch 2.4 的维护版本。

更新紧急度:MODERATE:对服务器进行升级编程,但这不是紧急的。

详:

  • 错误修复:

    • #2702 INKEYS与向量相似性相结合导致服务器无响应 (MOD-2952)
    • #2705删除在索引时跳过的文档时结果不正确
    • 排名 #2698中文中的同义词
  • 改进:

    • #2694性能:在TEXT字段,如果 term 未出现在请求的字段中,则跳过 term 迭代器

v2.4.3(2022 年 3 月)

这是 RediSearch 2.4 的正式发布版本。

标题

RediSearch 2.4 引入了一项新功能,即矢量相似性搜索 (VSS),它允许对存储在 Redis 哈希中存储(作为 BLOB)的矢量数据进行索引和查询。

它还引入了一种新的查询语法,以解决 RediSearch 早期版本中发现的查询解析器不一致问题。用户现在可以在 Dialect 版本 1(保留现有查询解析器行为)或 Dialect 版本 2(切换到更新的行为)之间进行选择。

所有 VSS 查询或使用PARAMS选项必须使用 Dialect 版本 2。

2.4 中的新增功能

  • FT.CREATE扩展为支持 2 种常用类型的向量索引的创建:

    • FLAT 指数

      当召回率比查询执行速度更重要时,使用这种类型的索引。查询向量将与平面索引中的所有向量进行比较。搜索结果将返回查询向量的确切前 k 个最近邻。

    • 分层可导航小世界 (HNSW) 指数

      此索引是这篇有影响力的学术论文的作者编写的库的修改实现。当查询执行速度优先于召回率时,将使用 HNSW 向量索引。返回的结果是近似最近邻 (ANN)。

      您可以尝试不同的 HNSW 索引参数 (M,EFCONSTRUCTION,EFRUNTIME) 来改善“召回率与速度”的平衡。

  • FT.SEARCH检索与给定查询向量最相似向量的前 K 个哈希。

  • 混合查询FT.SEARCH:

    使用混合查询检索与向量和非向量搜索条件组合匹配的 Redis 哈希。非矢量搜索条件可以包含组合NUMERIC,TEXT,TAGGEO领域。

    混合查询通常用于现代电子商务搜索应用程序,具有“视觉”相似性和元数据相似性。 例如,您可以使用单个混合查询来查找在价格范围和/或地理位置内与给定图片在视觉上相似的商品。

  • FT.CONFIG SET设置DEFAULT_DIALECT在模块级别。默认情况下,DEFAULT_DIALECT设置为 1。

  • 覆盖DIALECT:

    可以在运行时覆盖特定命令的模块级方言。您可以在执行以下任一命令时指定方言:

    如果您在运行这些命令中的任何一个时未指定 dialect,它们将使用默认的模块级 dialect 值。

  • 特征:

  • 性能增强(自 2.4-RC1 起):

    • #2647对向量进行一次标准化以进行临时平面搜索
    • #2638优化了不需要分数时的混合查询
    • 排名 #2653更新特定字段加载优化规则
    • 排名 #2670REDISMODULE_EVENT_SHUTDOWN清除资源
  • 安全和隐私(自 2.4-RC1 起):

    • #2584修复 MOD-2086,添加了对 TLS 密码的支持
  • 错误修复(自 2.4-RC1 起):

    • #2651修复客户端冻结 docs 在查询期间过期的问题
    • #2641协调器中的内存泄漏
    • 排名 #2645在摄取时忽略 NULL 值
    • 排名 #2654VecSim 混合查询 - 为无效的交集子迭代器返回空迭代器

DIALECT 简介

RediSearch 2.4.3 引入了一种新的查询语法,以解决 RediSearch 早期版本中发现的查询解析器不一致问题。用户现在可以在以下选项之间进行选择:

  • Dialect 版本 1(以保持 RediSearch 2.2 中的查询方言)

  • Dialect 版本 2(使用更新的 dialect)

现有的 RediSearch 2.2 用户将不必修改其查询,因为默认方言为 1。 但是,所有 RediSearch 用户都应逐渐更新其查询以使用 dialect 版本 2。

背景

在某些情况下,某些查询解析规则的行为与最初的预期不同。 包含以下运算符的查询可能会返回意外结果:

  • AND
  • 引号、~、- 和 % (精确、可选、否定、模糊)
  • OR

为了最大限度地减少对现有、不受影响的 RediSearch 用户的影响,引入了 DIALECT 设置以允许:

  • 无需任何修改即可运行的现有查询 (DIALECT 1)

  • 从更新的查询解析行为中受益的新查询 (DIALECT 2)

受影响的查询示例

如果现有查询属于以下任何类别,则它们在不同 DIALECT 版本下的行为可能会有所不同:

  • 您的查询有一个 field 修饰符,后跟多个单词。

    考虑这个简单的查询@name:James Brown.

    字段修饰符@name后面跟着 2 个字:JamesBrown.

    使用 DIALECT 1 时,解析器将此查询解释为 “findJames Brown@name领域。

    在 DIALECT 2 中,解析器将其解释为“查找James@namefield 和Brown在任何文本字段中。换句话说,查询解析器将其解释为(@name:James) Brown.

    使用 DIALECT 2,您可以通过将查询更新为@name:(James Brown).

  • 您的查询使用引号、~、-、% (精确、可选、否定、模糊)。

    考虑一个带有否定的简单查询-hello world.

    使用 DIALECT 1 时,解析器将此查询解释为“在不包含helloAND 不包含world."这相当于-(hello world)-hello -world.

    在 DIALECT 2 中,解析器将其解释为-helloworld,所以只有hello是否定的。

    使用 DIALECT 2,您可以通过将查询更新为-(hello world).

说明解析器行为差异的另一个示例是hello world | "goodbye" moon:

  • 使用 DIALECT 1 时,解析器将此查询解释为搜索(hello world | "goodbye") moon

  • 在 DIALECT 2 中,解析器将其解释为搜索hello world"goodbye" moon.

注意:
这是 2.4 的第一个 GA 版本。Redis 中的版本在语义版本控制中为 2.4.3。由于 Redis 中的模块版本是数字,因此我们无法添加 GA 标志。
为本页评分
返回顶部 ↑