常见问题解答:常规主题

向量

Qdrant 支持的最大向量维度是多少?

对于稠密向量,Qdrant 最高支持 65,535 个维度。

可以存储的最大向量元数据大小是多少?

元数据大小没有固有上限,但应针对性能和资源使用进行优化。用户可以在配置中设置上限。

在不同机器上,相同的相似度搜索查询是否可能产生不同的结果?

是的,由于硬件配置和并行处理的差异,结果可能会略有不同。

我该如何为我的用例选择合适的向量嵌入?

这取决于数据的性质和具体应用场景。请考虑维度、领域特定模型以及不同嵌入的性能特征等因素。

Qdrant 如何处理同一集合中来自不同提供商的多种向量嵌入?

Qdrant 原生支持每个数据点多个向量,允许来自不同提供商的多种嵌入共存于同一个集合中。

我可以将向量嵌入从其他向量存储迁移到 Qdrant 吗?

可以,Qdrant 支持从其他向量存储迁移嵌入,从而促进轻松过渡和采用 Qdrant 的功能。

为什么索引向量的数量与集合中的向量数量不匹配?

Qdrant 并不总是需要为集合中的所有向量建立索引。它以分段(segment)方式存储数据,如果分段足够小,执行全量扫描搜索会更高效。

请确保集合状态为 green,并且未索引向量的数量小于索引阈值。

为什么集合信息显示的点数不准确?

Qdrant 中的集合信息 API 返回的是集合中点数的近似值。如果您需要确切数字,可以使用 count API。

集合中的向量与我上传的不符。

这可能有两种原因:

  • 您在集合设置中使用了 Cosine(余弦)距离度量。在这种情况下,Qdrant 会预先归一化您的向量以加快距离计算速度。如果您严格需要保留原始向量,请考虑改用 Dot(点积)距离度量。
  • 您使用了 uint8 数据类型来存储向量。uint8 需要特殊的输入值格式,这可能与嵌入模型的典型输出不兼容。

Qdrant 支持向量数据的实时更新,新插入、更新和删除的向量可立即用于搜索。系统在后台索引更新期间会对未索引的分段使用全量扫描搜索。

我的搜索结果中包含值为 null 的向量,为什么?

默认情况下,Qdrant 会尽量减少网络传输,因此不会在搜索结果中返回向量。但您可以通过将 Search/Scroll 的 with_vector 参数设置为 true 来强制其返回向量。

如果您在结果中仍然看到 "vector": null,可能是因为您传递的向量格式不正确,或者调用 upsert 方法的方式存在问题。

我该如何不使用向量进行搜索?

您可能需要使用 scroll 方法。它允许您根据过滤器检索记录,甚至可以遍历集合中的所有记录。

Qdrant 首先是一个向量搜索引擎,我们仅在不影响向量搜索用例(包括接口和性能)的前提下实现全文搜索支持。

Qdrant 的功能

  • 使用全文过滤器进行搜索
  • 将全文过滤器应用于向量搜索(即在包含特定单词或短语的记录中进行向量搜索)
  • 执行前缀搜索和语义输入即搜索(search-as-you-type)
  • 稀疏向量(如 SPLADE 或类似模型中使用的)
  • 多向量,例如 ColBERT 和其他后期交互模型
  • 多种搜索的组合

Qdrant 不计划支持的功能

  • 非基于向量的检索或排序函数
  • 内置本体或知识图谱
  • 查询分析器和其他 NLP 工具

当然,您可以随时将 Qdrant 与您需要的任何专用工具(包括全文搜索引擎)结合使用。阅读更多关于我们关于混合搜索的方法

集合

我可以创建多少个集合?

您可以创建任意多个集合,但请注意每个集合都需要额外的资源。强烈建议不要创建大量小集合,因为这会导致显著的资源消耗开销。

我们将为每个用户/对话/文档创建一个集合视为一种反模式。

请阅读我们多租户教程中有关集合、隔离和多用户的更多信息。

如何将大量向量上传到 Qdrant 集合中?

请阅读我们的批量上传教程中的建议。

我可以只存储量化后的向量并丢弃全精度向量吗?

不可以,Qdrant 需要全精度向量来进行重新索引、重新评分等操作。

兼容性

Qdrant 在向量计算方面兼容 CPU 还是 GPU?

Qdrant 主要依靠 CPU 加速来实现可扩展性和效率。不过,我们也支持所有主要供应商的 GPU 加速索引。

你们保证跨版本兼容吗?

如果您的版本较旧,我们仅保证两个连续的小版本之间兼容。这也适用于客户端版本。请确保您的客户端版本与集群版本之间相差不超过一个次要版本。虽然我们将协助解决针对我们产品的故障排查和错误修复,但 Qdrant 不负责审查、编写(或重写)或调试自定义代码。

你们支持降级吗?

我们不支持对任何产品进行集群降级。如果您部署了较新版本的 Qdrant,您的数据会自动迁移到较新的存储格式。此迁移不可逆。

如何避免更新到最新版本时出现问题?

我们仅保证在连续版本之间更新时的兼容性。您需要逐个版本升级:1.1 -> 1.2,然后 1.2 -> 1.3,再 1.3 -> 1.4

我应该在上传之前还是之后创建有效负载(payload)索引?

请在上传之前创建有效负载索引,以避免索引重建。但是,在某些情况下,上传后定义索引也是可以的。例如,您可以在启动后配置新的过滤器逻辑。

如果您预先知道过滤器,应该始终先建立索引。如果您以后需要索引另一个有效负载,仍然可以这样做,但请注意性能损失。

我应该为每个用户创建一个 Qdrant 集合吗?

不应该。为每个用户创建一个集合会消耗更多资源。

与其为每个用户创建单独的集合,我们建议创建一个单一集合,并使用有效负载(payloads)来区分访问权限。每个 Qdrant 点都可以拥有一个作为元数据的有效负载。对于多租户,您可以为每个点包含一个 user_idtenant_id。为了进一步优化存储,您可以为有效负载字段启用租户索引

是否可以缩减 Qdrant Cloud 集群的规模?

是的,可以对 Qdrant Cloud 集群进行纵向和横向的缩减。请注意,在纵向缩减期间,磁盘大小无法减少。

此页面有用吗?

感谢您的反馈!🙏

听到这个消息我们很遗憾。😔 您可以在 GitHub 上编辑此页面,或创建一个 GitHub Issue。