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

Manticore Search 27.1.5 增加了内置认证与授权，引入了分片表，新增对话式搜索，加快了向量搜索，改进了分面与聚合，并包含自 25.0.0 以来的 65 个修复。

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

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

---

## 升级说明

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

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

---

## 亮点

### 内置认证和授权

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

### 分片表

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

### 对话式搜索

这个版本为 Manticore Search 增加了 [对话式搜索](https://manual.manticoresearch.com/Searching/Conversational_search)。它通过 [`CREATE CHAT MODEL`](https://manual.manticoresearch.com/Searching/Conversational_search) 和 [`CALL CHAT`](https://manual.manticoresearch.com/Searching/Conversational_search) 暴露出来，因此你可以在已有的向量化表上直接提问，而不必围绕同一份数据再单独搭建一层检索。

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

### 更快的向量构建和 KNN 改进

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

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

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

- [25.1.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/25.1.0) 改进了 KNN 距离计算和 AVX-512 加载。
- [25.2.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/25.2.0) 在 MCL 中新增了本地 ONNX embeddings 支持，并进一步提升了向量搜索性能。
- [25.14.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/25.14.0) 和 [25.15.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/25.15.0) 在所需库支持的基础上增加了多线程 HNSW 构建。

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

### 更好的 faceting 和聚合

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

[`facet_filter_mode`](https://manual.manticoresearch.com/Searching/Faceted_search) 让构建类似电商的筛选更容易，它可以在激活过滤时保留已选、可用和不可用的分桶。

在分析侧：

- [`date_histogram()`](https://manual.manticoresearch.com/Functions/Date_and_time_functions#DATE_HISTOGRAM%28%29) 新增了 `time_zone` 和 `offset`
- Opensearch dashboards support
- Manticore 新增了 `percentiles`、`percentile_ranks` 和 `mad` 等统计聚合

---

## 其他值得注意的改进

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

- [`searchd --check`](https://manual.manticoresearch.com/Starting_the_server/Manually#searchd-command-line-options) 会在启动前验证配置，且不会产生副作用。
- [`EXIT CLUSTER`](https://manual.manticoresearch.com/Creating_a_cluster/Setting_up_replication/Managing_replication_nodes#EXIT-CLUSTER) 允许节点在不重启的情况下脱离复制集群。
- [`dict=keywords_32k`](https://manual.manticoresearch.com/Creating_a_table/NLP_and_tokenization/Low-level_tokenization#dict) 使索引超长的机器生成 token 成为可能，例如哈希和消息 ID，而不会静默截断。
- [内置乌克兰语词形还原器](https://manual.manticoresearch.com/Creating_a_table/NLP_and_tokenization/Morphology#morphology) 扩展了对乌克兰语文本搜索的原生形态支持。
- [Systemd `Type=notify`](https://github.com/manticoresoftware/manticoresearch/releases/tag/25.4.0) 改进了启动和关闭监管。
- 受 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 ... RECONFIGURE` 和 `SHOW CREATE TABLE`。
- 27.1.3 将 Buddy 更新到 4.0.1，并在 auth 下收紧了 Queue 插件的变更权限处理。
- 基于 `doc_id` 的 KNN 查询现在会正确保留 `offset` 和 `max_matches`。
- 修复了 KNN 重评分顺序，因此显式的 `ORDER BY` 并列条件现在又能正常工作了。
- 在列式表上使用 `GROUP BY` 的混合 fused 查询不再崩溃。
- 复制和节点重新加入相关的崩溃路径也得到了进一步清理。
- 25.12.1 修复了二进制 MySQL 协议行为，这对依赖真实客户端兼容性的集成很重要。
- 修复了 Fluent Bit 批量导入互操作性，避免成功响应被回放成重复插入。
- 27.1.2 修复了从多个 `source` block 构建的普通索引中 `sql_attr_multi` 的处理。

完整列表请参见[changelog](https://manual.manticoresearch.com/Changelog)。

---

## 需要帮助或想联系我们？

- 加入我们的 [Slack](https://slack.manticoresearch.com)
- 访问 [Forum](https://forum.manticoresearch.com)
- 在 [GitHub](https://github.com/manticoresoftware/manticoresearch/issues) 上报告问题或提出功能建议
- 给我们发送邮件：`contact@manticoresearch.com`
