Luxical: CPU上的超高速文本嵌入

Luxical是一种全新的文本嵌入方法,在 CPU 上运行速度极快,完全避免了繁重的 Transformer 推理,同时在文档相似度、聚类和分类方面依然表现出色。

Luxical: CPU上的超高速文本嵌入

Transformer 模型固然强大……但并非总是必需的。

Luxical 就是对这一点的提醒。

它是一种全新的文本嵌入方法,在 CPU 上运行速度极快,完全避免了繁重的 Transformer 推理,同时在文档相似度、聚类和分类方面依然表现出色。

诀窍是什么?用词汇特征和小型 ReLU 网络来近似一个大型 Transformer 模型。

让我们一步一步地分析一下。

1、核心思想

大多数现代嵌入模型的工作原理如下:

文本 → 分词器 → 大型 Transformer → 密集嵌入

Luxical 采用了截然不同的路径:

文本 → 词元计数 (TF-IDF) → 小型 ReLU 多层感知器 (MLP) → 密集嵌入

Luxical 并非从数十亿个参数中学习语言,而是:

  • 从词级统计数据(词袋模型 + TF-IDF)开始
  • 将其输入到一个紧凑的神经网络中
  • 训练该网络以模仿强教师模型的行为

最终得到的密集嵌入具有以下优点:

  • 在 CPU 上运行速度快
  • 无需 GPU
  • 体积小巧,可部署在任何地方
  • 仍然像 Transformer 嵌入一样用于下游任务。

2、什么是 Luxical?

Luxical 代表词汇密集嵌入 (lexical dense embeddings)。

它结合了:

  • 词元计数
  • TF-IDF 加权
  • 稀疏到稠密的神经网络投影

所有这些都针对速度和简洁性进行了优化。

可以将其理解为“经典信息检索与现代信息蒸馏的结合”。

3、安装Luxical

pip install luxical

支持的平台

  • macOS/Linux
  • Python 3.11、3.12、3.13

平台限制源于用于快速词元化的已编译 Rust 扩展 (arrow-tokenize)。

4、将 Luxical 与 HuggingFace 结合使用

Luxical 集成了一个轻量级的 HuggingFace 推理功能。

from pathlib import Path

from transformers import AutoModel
# Load from the Huggingface Hub.
hub_model = AutoModel.from_pretrained("datologyai/luxical-one", trust_remote_code=True)
# Load from a local export directory.
local_dir = Path("~/Downloads/luxical_one_hf").expanduser()
local_model = AutoModel.from_pretrained(local_dir, trust_remote_code=True)
# Embed.
emb = local_model(["Luxical integrates with Huggingface."]).embeddings

这使得 Luxical 可以无缝兼容现有的 Huggingface 流水线。

5、使用原生 Luxical API(推荐)

为了获得最佳速度和灵活性,推荐使用原生 API:

from pathlib import Path

import luxical.embedder
import luxical.misc_utils
local_dir = Path("~/Downloads/luxical_one.npz").expanduser()
embedder = luxical.embedder.Embedder.load(str(model_local_path))
emb = embedder(["Luxical goes", "very fast"], progress_bars=True)

这完全绕过了 Transformer 的任何开销。

6、量化:更小、更快、更便宜

Luxical 嵌入对量化非常友好。

# EXTRA
# Luxical models typically experience no quality degradation from uint8 quantization.
# Additionally, file-formats supporting dictionary-encoding-based compression
# (e.g. Parquet) may automatically compress roundtrip-quantized data by 4x.
emb_uint8 = luxical.misc_utils.fast_8bit_uniform_scalar_quantize(emb, limit=0.5)
emb_roundtrip = luxical.misc_utils.dequantize_8bit_uniform_scalar_quantized(
    emb_uint8, limit=0.5
)

实际上,这意味着:

  • 存储空间减少约 4 倍
  • 更快的 I/O 速度
  • 最小的质量损失

非常适合大规模嵌入存储。

7、使用 PyArrow 存储嵌入

Luxical 包含用于高效列式存储的工具。

# EXTRA
# Luxical ships with helper methods to integrate with pyarrow.
import pyarrow as pa
import pyarrow.parquet as pq

emb_pyarrow = luxical.misc_utils.numpy_ndarray_to_pyarrow_fixed_size_list_array(
    emb_roundtrip
)
emb_table = pa.table(
    {
        "document_id": ["doc_1", "doc_2"],
        "embedding": emb_pyarrow,
    }
)
pq.write_table(emb_table, "fast_and_small_embeddings.parquet")

这与基于 Parquet 的分析栈配合良好。

8、架构:为何如此之快

8.1 词汇 + 密集

Luxical 首先使用 TF-IDF,生成一个稀疏单位向量。

然后,一个小型前馈 ReLU 网络将该稀疏输入转换为密集嵌入。

这种混合方法为您带来:

  • 词汇特征带来的可解释性
  • 神经网络带来的表达能力

8.2 稀疏乘稠密是秘密武器

大多数 TF-IDF 向量几乎全为零。

当您将稀疏向量乘以稠密矩阵时,只有其非零列才具有意义。

这使得 Luxical 能够:

  • 跳过不必要的计算
  • 在 CPU 上高效运行
  • 完全避免对 GPU 的依赖

8.3 关键优化

Luxical 包含:

  • Numba 优化的稀疏乘稠密矩阵乘法
  • 自定义快速 IDF 缩放
  • 层间归一化的浅层 ReLU 多层感知器 (MLP)

与分词相比,MLP 几乎不增加额外的运行成本,却增强了表征能力。

8.4 训练:知识分布语言学习并非魔法

Luxical 并非从零开始学习语言。

相反,它从一个稳健的教师嵌入模型中提取相似性结构。

核心思想:

  • 使用教师模型嵌入一个语料库
  • 使用学生模型嵌入同一个语料库
  • 比较两两语料库的相似性矩阵
  • 最小化它们之间的 KL 散度

伪代码:

tau = 3.0  # Set the temperature.
S = normalize(student(X))        # [B, D]
T = normalize(teacher(X))        # [B, D]
G_s = S @ S.T
G_t = T @ T.T
G_s = remove_diagonal(G_s)
G_t = remove_diagonal(G_t)
loss = tau**2 * KLDiv(log_softmax(G_s/tau), log_softmax(G_t/tau))

这保留了嵌入的相对几何结构。

9、开发者体验

Luxical 提供了一个简洁的开发工作流程,由 just 提供支持。

实用命令:

  • just setup-dev
  • just lint
  • just test
  • just build-luxical
  • just publish-wheel-luxical

Python 和 Rust 组件的版本控制均在代码中明确记录。

10、何时应该使用 Luxical?

当您需要以下功能时,Luxical 将大放异彩:

  • CPU 上的快速词嵌入​
  • 大规模文档处理
  • 低成本推理
  • 易于部署(无需 GPU,无需 CUDA)

它并非旨在取代庞大的 LLM 模型。

它解决的是另一个问题:

  • 大规模高效相似度计算。

11、结束语

Luxical 提醒我们:

  • 并非所有问题都需要 Transformer 模型
  • 经典的 NLP 思想仍然重要
  • 概念蒸馏可以大幅提升效率

如果您重视速度、成本和实用性,Luxical 绝对值得考虑。


原文链接:Luxical: Ultra-Fast Text Embeddings on CPU (No Transformers Required)

汇智网翻译整理,转载请标明出处