Qdrant Constella 预览:无需重嵌入即可动态切换查询模型
随着查询流量的激增,嵌入查询的算力成本急剧上升。在低功耗设备上,大型模型可能无法完全载入内存,而小型查询模型虽能降低成本,但传统切换方式往往意味着需要重新对文档进行嵌入,这在数据量巨大时效率极低。
Qdrant 推出了 Constella 预览版,旨在解决这一痛点。Constella 提供了一套基于 Hugging Face 的模型家族,核心是 Stella(4 亿参数英文嵌入模型),用于编码文档向量。而在查询侧,用户可以根据需求灵活选择 Zero、Nano 或 Full Stella 三种查询编码器,所有模型均针对同一个 Qdrant 集合进行检索。
核心突破:一种索引,三种查询模型
Constella 的核心设计理念是“文档侧重计算,查询侧灵活选择”。
- 文档向量复用:文档向量一旦生成,可服务于成千上万次搜索。
- 查询模型热插拔:Zero 和 Nano 被训练用于复现 Stella 的查询嵌入,使得查询编码器可以随请求热切换,而存储的文档向量保持固定不变。
三种查询模型详解
| 模型名称 | 架构特点 | 适用场景 |
|---|---|---|
| Constella Zero | 学习到的词袋(Bag of Tokens):通过查找、池化和归一化生成向量。 | 极低延迟、极简计算场景。 |
| Constella Nano | 3450 万参数 Transformer:结合上下文与位置信息,融合多层特征。 | 需要上下文感知但算力受限的场景。 |
| Full Stella | 4 亿参数 Transformer:该家族中整体检索得分最高的模型。 | 对检索精度要求极高的核心业务。 |
性能实测:速度与精度的极致平衡
Qdrant 在 15 个 BEIR 数据集上进行了全面评估,结果令人印象深刻。
1. 检索精度 (nDCG@10)
在平均 15 个数据集的测试中,Nano 保留了 Full Stella 约 91% 的平均得分,但其参数量仅为 Stella 的十二分之一。
- Zero 的表现:虽然整体得分略低于 Nano,但在 FEVER、HotpotQA 和 Climate-FEVER 等特定数据集上表现优异。
- 混合搜索优势:建议将 Zero 与 BM25 结合使用进行混合搜索,实验表明这种组合在提升检索质量方面比 Nano 更有效,且无需引入 Transformer 架构。
2. 查询速度 (Apple M5 Pro CPU)
在相同硬件环境下,查询编码速度差异巨大:
- Zero: 暖启动后仅需 0.081 ms(比 Full Stella 快约 480 倍)。
- Nano: 仅需 3.13 ms(比 Full Stella 快约 12 倍)。
- Full Stella: 约 38.95 ms。
这意味着在需要毫秒级响应的实时搜索场景中,Zero 和 Nano 提供了巨大的性能红利。
开发者能构建什么?
Constella 为多种创新应用提供了可能:
- 离线低算力搜索:在服务器上用 Stella 编码知识库,将文档向量与轻量级查询模型(Zero/Nano)打包分发至边缘设备,实现断网环境下的本地搜索。
- 高并发检索 API:利用 Zero 处理高频低精度的查询,仅在需要高相关性时调用 Nano 或 Full Stella,实现成本与体验的最优解。
- 边输入边搜索 (Search as you type):利用 Zero 对用户每输入一个字符进行即时反馈,待用户停顿或提交时再切换至 Nano 进行最终检索。Qdrant 的本地宝可梦演示项目已采用此模式。
“Constella 让我们能够在不重新嵌入整个集合的情况下,根据查询负载动态调整计算资源,这是构建高效、低成本 AI 搜索系统的关键一步。” —— Qdrant 团队
注:评估数据基于 BEIR-15 数据集,部分数据集(如 FiQA, ArguAna 等)存在训练数据泄露情况,相关分数应视为家族内部对比参考。完整评估代码与实验记录已开源至 GitHub。