Qdrant

Qdrant 1.8.0: Enhanced Search Capabilities for Better Results

8.5内容质量

TL;DR · AI 摘要

Qdrant 1.8.0 提升了稀疏向量搜索速度,达到 16 倍优化,并引入了 CPU 资源管理功能。

核心要点

  • Qdrant 1.8.0 的稀疏向量搜索速度提升了 16 倍。
  • 通过配置 optimizer_cpu_budget 参数,可以分配 CPU 资源用于索引构建。
  • NeurIPS 2023 数据集测试显示,查询延迟从 2200ms 降至 135ms。

结构提纲

按章节快速跳转。

  1. Qdrant 1.8.0 版本发布,重点优化了搜索性能和资源管理。

  2. Qdrant 1.8.0 的稀疏向量搜索速度提升了 16 倍。

  3. NeurIPS 2023 数据集上测试,查询延迟从 2200ms 降至 135ms。

  4. 通过配置 optimizer_cpu_budget 参数,可以分配 CPU 资源用于索引构建。

  5. 在 config.yaml 文件中设置 optimizer_cpu_budget 参数。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Qdrant 1.8.0 的改进
    • 稀疏向量搜索性能提升
      • 搜索吞吐量提升 16 倍
      • 查询延迟从 2200ms 降至 135ms
    • CPU 资源管理
      • 通过 optimizer_cpu_budget 参数分配 CPU 资源

金句 / Highlights

值得收藏与分享的关键句。

#Qdrant#向量搜索#AI#性能优化
打开原文

Qdrant 1.8.0:增强搜索功能,实现更优结果

返回 Qdrant 文章

David Myriel, Mike Jang

·

2024 年 3 月 6 日

解锁更高级的搜索功能:探索 Qdrant 1.8.0 的高级搜索能力

Qdrant 1.8.0 已发布!这一次,我们专注于 Qdrant 的内部机制。我们的目标是优化性能,使您现有的设置可以运行得更快并节省计算资源。以下是我们的工作内容:

  • 更快的稀疏向量:混合搜索现在快了 16 倍!
  • CPU 资源管理:您可以分配 CPU 线程以加快索引构建速度。
  • 更好的索引性能:我们在后端优化了文本索引。

使用稀疏向量实现更快的搜索

稀疏向量的搜索吞吐量现在快了 16 倍。如果您使用 Qdrant 进行混合搜索,这意味着您现在可以处理多达 16 倍的查询量。这一改进来自于后端的大量优化,旨在提高效率和容量。

这对您的设置意味着:

  • 查询速度:运行搜索查询所需的时间显著减少。
  • 搜索容量:Qdrant 现在可以处理更大规模的搜索请求。
  • 用户体验:结果会更快出现,从而为用户提供更流畅的体验。
  • 可扩展性:您可以轻松应对快速增长的用户或不断扩展的数据集。

稀疏向量基准测试

您可以测试性能结果,这些结果是公开的。Qdrant 的研发团队开发了一个专用的开源基准测试工具,专门用于测试稀疏向量的性能。

在 NeurIPS 2023 数据集上运行了稀疏向量查询的真实模拟。所有测试都在 Azure 上的 8 核 CPU 机器上进行。

查询的延迟(y 轴)显著下降。您可以在这里看到变化前后的情况:

图 1:版本 1.7-1.8 的稀疏向量搜索查询延迟下降。

两个散点图中的颜色显示了结果的频率。红色点显示在 2200ms(之前)和 135ms(之后)附近,集中度最高。这告诉我们稀疏向量查询的延迟下降了大约 16 倍。因此,使用 Qdrant 获取答案所需的时间大大缩短。

这一性能提升对混合搜索的实现可能产生显著影响。了解更多关于如何设置此功能的信息。

顺便说一下,稀疏向量是在 Qdrant v.1.7.0 中发布的。它们使用不同的索引进行存储,因此如果您想尝试实现,请先查看文档。

CPU 资源管理

索引是 Qdrant 最耗费资源的过程。现在,您可以通过专门分配计算资源用于索引,来考虑这一点。您可以分配一定数量的 CPU 资源用于索引,其余的留给搜索。因此,索引构建速度会更快,同时搜索质量不会受到影响。

这并不是强制性的,因为 Qdrant 默认已调整为在索引和搜索之间取得适当的平衡。但是,如果您希望定义特定的 CPU 使用情况,您需要从 config.yaml 中进行设置。

此版本引入了 optimizer_cpu_budget 参数,用于控制用于索引的最大 CPU 数量。

有关 config.yaml 的更多信息,请参阅配置文件。

code
# CPU 预算,为优化任务分配多少 CPU(线程)。
optimizer_cpu_budget
:
0
  • 如果保持为 0,Qdrant 将保留 1 个或更多 CPU 不分配,具体取决于 CPU 的大小。
  • 如果设置为正数,Qdrant 将使用确切数量的 CPU 进行索引。
  • 如果设置为负数,Qdrant 将从可用的 CPU 中减去该数量的 CPU 用于索引。

对于大多数用户来说,默认的 optimizer_cpu_budget 设置已经足够好。我们只建议在索引负载较大的情况下使用此设置。

我们的后端利用动态 CPU 占用率来提高索引速度。因此,对搜索查询性能的影响最终是微乎其微的。最终,您将能够在索引时间和搜索性能之间找到最佳平衡。

此配置可以在任何时候进行,但需要重启 Qdrant。更改此设置会影响现有和新创建的集合。

注意:此功能在 Qdrant Cloud 上不可配置。

更好的文本数据索引

为了尽量减少您的 RAM 开销,我们开发了一种新的方式来索引特定类型的数据。请注意,这是一个后端改进,您无需进行任何配置。

从现在起,如果您正在索引不可变的文本字段,我们估计 RAM 使用量将减少约 10%。我们的基准结果是基于使用 64GB RAM 的系统得出的。如果您使用的 RAM 更少,这种减少可能会超过 10%。

不可变的文本字段是静态的,一旦添加到 Qdrant 后就不会更改。这些条目通常表示某种属性、描述或标签。与它们相关联的向量可以更高效地进行索引,因为您不再需要重新索引它们。相反,可变字段是动态的,可以在初始创建后进行修改。请注意,它们将继续需要额外的 RAM。

这种方法确保了向量搜索索引的稳定性,操作更快且更一致。我们通过设置字段索引来实现这一点,这有助于减少存储的内容。为了提高搜索性能,我们还优化了加载文档的方式,用于带有文本字段索引的搜索。现在,我们的后端主要按顺序和递增顺序加载文档。

小的改进和新功能

除了这些改进,Qdrant v1.8.0 还增加了并改进了几个小功能:

  • 按负载排序点:除了搜索语义结果外,您可能还希望根据特定元数据(如价格)检索结果。现在您可以使用 Scroll API 按负载键对点进行排序。
  • 日期时间支持:我们为负载索引实现了日期时间支持。在此之前,如果您想搜索特定的日期时间范围,您必须将日期转换为 UNIX 时间戳。(PR#3320)
  • 检查集合是否存在:现在您可以通过 /exists 端点检查集合是否存在于 /collections/{collection_name}。您将收到一个 true/false 响应。(PR#3472)
  • 查找其负载匹配超过最小条件数量的点。我们为条件添加了 min_should 匹配功能,以确保条件为真。(PR#3331)
  • 修改嵌套字段:我们改进了 set_payload API,增加了更新嵌套字段的能力。(PR#3548)

体验 Qdrant 1.8.0 的强大功能

准备好体验 Qdrant 1.8.0 的增强性能了吗?立即升级并探索重大改进,从更快的稀疏向量到优化的 CPU 资源管理,以及更好的文本数据索引。通过 Qdrant 的最新版本,将您的搜索能力提升到一个新的水平。今天尝试演示,亲身体验其带来的差异!

发布说明

如需更多信息,请查看我们的发布说明。Qdrant 是一个开源项目。我们欢迎您的贡献;请提出问题,或通过拉取请求进行贡献!