近日,开源搜索引擎Manticore Search宣布了一项重大性能突破——通过重构ONNX(开放神经网络交换格式)推理路径,将嵌入向量(embeddings)的生成速度提升了14倍。这一优化直接作用于语义搜索、RAG(检索增强生成)和混合搜索场景,使得开发者能够在保持精度的同时大幅降低推理延迟。本文将深入解析这一技术升级背后的设计思路与工程实践。

背景:嵌入向量成为搜索引擎新基石

随着大语言模型和向量搜索的普及,嵌入向量已成为连接自然语言理解与搜索引擎的核心桥梁。Manticore Search自1.0版本起便内置了ONNX推理支持,允许用户直接在数据库内执行文本转向量操作,从而避免网络传输开销。然而,原有实现基于单线程、逐算子(operator-by-operator)的推理模式,尤其在CPU环境下,面对长文本或高并发请求时性能瓶颈明显。

“我们收到许多用户反馈,嵌入生成占据了搜索延迟的40%-60%。”Manticore核心开发者Andrey在技术博客中写道,“特别是在处理BERT系列模型时,一次推理可能需要数百毫秒,这在大规模索引或实时检索中难以接受。”

重构:从算子融合到多线程流水线

为了突破性能天花板,Manticore团队对ONNX路径进行了从底层到上层的全面重构。核心优化思路可归纳为三点:

1. 算子融合与图优化
旧版实现中,每个ONNX算子独立调度,导致大量内存分配和线程切换开销。团队引入了基于子图匹配的算子融合策略,将连续的小算子(如LayerNormalization+ReLU+Add)合并为单一计算节点。同时,利用ONNX Runtime的Execution Provider接口,优先启用Intel MKL-DNN和AMD MIOpen等硬件库中的融合算子。实验表明,仅此一步就减少了约35%的算子执行时间和50%的内存带宽占用。

2. 多线程并行与流水线调度
针对嵌入模型通常包含的自注意力(Self-Attention)层,团队设计了一种基于token级并行的流水线架构。传统做法是对整个输入序列进行串行计算,而新方法将序列切分为多个块,每个块由独立的工作线程并行处理,并通过异步栅栏(barrier)同步。为了平衡负载,系统会根据CPU核心数和缓存大小动态调整块大小。此外,对于批次推理(batch inference),采用了SIMD指令级并行与线程池复用,使得吞吐量提升8-12倍。

3. 零拷贝内存与缓存感知分配
内存分配是另一个隐藏瓶颈。重构后,Manticore自定义了一个内存池,专门用于ONNX推理的中间张量。该内存池采用伙伴算法,并优先分配在L2/L3缓存友好的连续地址上。更重要的是,团队消除了输入/输出向量在Python<->C++层之间的冗余拷贝,通过numpy数组的零拷贝视图直接传递给ONNX Runtime,节省了约20%的延迟。

基准测试:14倍加速并非空谈

在官方公布的基准测试中,测试环境为Intel Xeon Platinum 8375C(32核,2.9GHz),模型为all-MiniLM-L6-v2(384维向量),输入文本平均长度128 token。结果显示:

  • 单样本推理延迟:从原来的12.3ms降至0.88ms,加速约14倍。
  • 批量推理(batch=64):吞吐量从每秒515个向量提升至7432个向量,提升14.4倍。
  • 内存占用:峰值内存同比下降30%,得益于内存池复用。

更值得关注的是,精度无任何损失。团队保留了FP32精度,所有优化均基于数值安全的重排列,确保了嵌入质量与原始ONNX运行时完全一致。

影响与未来:向量搜索的门槛进一步降低

这次重构直接改变了Manticore Search在语义搜索场景中的竞争力。过去,为了降低嵌入开销,用户常选择在外部用CPU/GPU集群预先计算向量,再批量导入。现在,Manticore可在索引或查询时实时生成嵌入,延迟低于1毫秒,这意味着:
- 实时索引:新增文档可立即参与语义检索,无需等待离线批处理。 - 混合搜索:全文与向量搜索的融合变得更加自然,因为嵌入计算不再是瓶颈。 - 边缘部署:在低功耗服务器上也能高效运行轻量级嵌入模型,拓展了物联网、移动端应用场景。

“我们的目标是让每个Manticore节点都成为一个小型推理引擎。”Andrey表示,“下一步,我们将支持动态量化(int8)和模型剪枝后的ONNX图,并探索GPU加速路径,进一步满足高性能场景需求。”

结语

Manticore Search对ONNX路径的重构,是一次从“能跑”到“跑得快”的典型工程进化。14倍的提升背后,是对计算图、内存模型和并行程式的深度打磨。对于开发者而言,这意味着更低的TCO和更敏捷的搜索体验。随着RAG和多模态搜索需求的爆发,这种内嵌式的高效推理能力必将成为搜索引擎的标配。Manticore团队已计划在下个稳定版本中默认启用优化路径,届时所有用户均可零配置享受这一加速成果。