⚠️ 此页面为自动翻译,翻译可能不完美。
blog-post

Manticore Search 27.1.5:认证、分片表、对话式搜索和更快的向量搜索

Manticore Search 27.1.5 已发布。本次发布带来了内置认证和授权、分片表、对话式搜索、更快的 HNSW 构建、更好的 faceting 和聚合,以及涵盖 KNN、复制、协议兼容性和其他领域的一长串修复。

这篇文章是对 25.0.1 到 27.1.5 期间发布内容的汇总。


升级说明

升级前请先查看以下内容:

  • 27.0.0 新增了内置 auth/authz,启用后会改变访问假设。 默认不会启用 auth,但一旦启用,匿名访问就不再可用。建议分阶段上线:先升级远程代理和复制对等节点,再升级查询或管理它们的主节点,等整个拓扑都处于新版本后再启用 auth。分布式远程代理和复制相关操作还要求参与的守护进程保存一致的 auth 数据。成功执行 JOIN CLUSTER 会把加入节点本地的 auth 数据替换为捐赠集群的 auth 数据。(Issue #2833 , PR #3648 )
  • 26.0.0 更改了复制存储布局。 新接收的复制表现在位于常规的 data_dir/<table> 布局下,而不是集群 path 下。如果你运行的是带自定义 path 的复制集群,升级后可能需要迁移或重新同步复制表。只有在新布局尚未被采用之前,降级才是安全的。(Issue #4431 , PR #4598 )
  • 如果你将 MCL 与守护进程分开管理,请在升级 Manticore 时一并升级它。 这一发布线经历了多个 MCL 版本更新,从向量性能优化到多线程 HNSW 构建,再到后续稳定性修复。将旧版库与新版守护进程混用并不推荐。(25.2.0 , 25.15.0 , 26.0.3 , 26.3.2 , 27.1.0 )

亮点

内置认证和授权

Manticore 现在支持 用户、密码、bearer tokens 和细粒度权限 ,适用于 MySQL、HTTP/HTTPS、分布式远程 agent 以及与复制相关的操作。这使访问控制成为产品的一等功能,而不再是必须始终在数据库外部处理的事情。

分片表

Manticore 现在可以创建和管理 sharded tables ,将插入分发到各个分片,并在一个地方处理更多相关生命周期。这让更大规模、写入密集的部署更易于运维,也减少了必须放在引擎外部的分片专用逻辑。

对话式搜索

这个版本为 Manticore Search 增加了 对话式搜索 。它通过 CREATE CHAT MODELCALL CHAT 暴露出来,因此你可以在已有的向量化表上直接提问,而不必围绕同一份数据再单独搭建一层检索。

在底层,Manticore Search 在 FLOAT_VECTOR 字段上运行 KNN,从该字段的 from='...' 源列构建 LLM 上下文,通过 conversation_uuid 保留会话历史,并返回答案以及支撑它的 sources。如果你已经把 embedding 存在 Manticore 中,这会让文档问答和客服式助手更容易搭建。

更快的向量构建和 KNN 改进

整个周期里,向量搜索一直在持续改进。

Manticore 提升了 KNN 性能,新增了本地 ONNX embeddings 支持,加快了 ONNX 推理,然后又通过多线程索引构建让 HNSW 构建和重建快了很多。

这项工作中的几个重要步骤:

  • 25.1.0 改进了 KNN 距离计算和 AVX-512 加载。
  • 25.2.0 在 MCL 中新增了本地 ONNX embeddings 支持,并进一步提升了向量搜索性能。
  • 25.14.025.15.0 在所需库支持的基础上增加了多线程 HNSW 构建。

这里最大的实际改进,是自动嵌入速度大幅提升,以及大型向量表的构建和重建时间更短。初始 KNN 构建、chunk 合并以及 ALTER TABLE ... REBUILD KNN 都受到了影响。

更好的 faceting 和聚合

faceting 和聚合也变得更实用了。

facet_filter_mode 让构建类似电商的筛选更容易,它可以在激活过滤时保留已选、可用和不可用的分桶。

在分析侧:

  • date_histogram() 新增了 time_zoneoffset
  • Opensearch dashboards support
  • Manticore 新增了 percentilespercentile_ranksmad 等统计聚合

其他值得注意的改进

这一发布线还包含了几项虽小但很有用的新增内容:

  • searchd --check 会在启动前验证配置,且不会产生副作用。
  • EXIT CLUSTER 允许节点在不重启的情况下脱离复制集群。
  • dict=keywords_32k 使索引超长的机器生成 token 成为可能,例如哈希和消息 ID,而不会静默截断。
  • 内置乌克兰语词形还原器 扩展了对乌克兰语文本搜索的原生形态支持。
  • Systemd Type=notify 改进了启动和关闭监管。
  • 受 systemd 管理的 searchd 进程现在会把日志写入 systemd journal
  • JOIN 查询现在支持显式的左表列前缀。
  • 支持 OpenSearch Dashboards。
  • manticore-load 新增了多查询支持。

Bug 修复

这一发布线还包含 65 项变更日志中列出的修复。最新的后续版本又加入了几项值得单独提及的修复:

  • 27.1.5 修复了在获取列式 float_vector 属性时发生的崩溃。
  • 27.1.4 修复了从 dict='keywords' 单向升级到 dict=keywords_32k 时的 ALTER TABLE ... RECONFIGURESHOW CREATE TABLE
  • 27.1.3 将 Buddy 更新到 4.0.1,并在 auth 下收紧了 Queue 插件的变更权限处理。
  • 基于 doc_id 的 KNN 查询现在会正确保留 offsetmax_matches
  • 修复了 KNN 重评分顺序,因此显式的 ORDER BY 并列条件现在又能正常工作了。
  • 在列式表上使用 GROUP BY 的混合 fused 查询不再崩溃。
  • 复制和节点重新加入相关的崩溃路径也得到了进一步清理。
  • 25.12.1 修复了二进制 MySQL 协议行为,这对依赖真实客户端兼容性的集成很重要。
  • 修复了 Fluent Bit 批量导入互操作性,避免成功响应被回放成重复插入。
  • 27.1.2 修复了从多个 source block 构建的普通索引中 sql_attr_multi 的处理。

完整列表请参见changelog


需要帮助或想联系我们?

安装Manticore Search

安装Manticore Search