常见问题:通用主题
向量
Qdrant 支持的最大向量维度是多少?
在密集向量中,Qdrant 支持高达 65,535 维。
可以存储的向量元数据的最大大小是多少?
元数据大小没有固有限制,但应针对性能和资源使用进行优化。用户可以在配置中设置上限。
相同的相似性搜索查询在不同的机器上会产生不同的结果吗?
是的,由于硬件配置和并行处理的差异,结果可能会略有不同。
如何为我的用例选择合适的向量嵌入?
这取决于您数据的性质和具体的应用。考虑维度、特定领域模型以及不同嵌入的性能特征等因素。
Qdrant 如何在同一集合中处理来自不同提供商的不同向量嵌入?
Qdrant 本身支持每个数据点多个向量,允许来自不同提供商的不同嵌入在同一集合中共存。
我可以将我的嵌入从另一个向量存储迁移到 Qdrant 吗?
是的,Qdrant 支持从其他向量存储迁移嵌入,方便轻松过渡和采用 Qdrant 的功能。
为什么索引向量的数量与集合中向量的数量不匹配?
Qdrant 并不总是需要索引集合中的所有向量。它将数据存储在段中,如果段足够小,对其执行全扫描搜索会更高效。
确保检查集合状态为 green,并且未索引向量的数量小于索引阈值。
为什么集合信息显示的点数不准确?
Qdrant 中的集合信息 API 返回集合中点的近似数量。如果您需要精确的数量,可以使用 count API。
集合中的向量与我上传的不匹配。
这可能有两个原因:
- 您在集合设置中使用了
Cosine距离度量。在这种情况下,Qdrant 会对您的向量进行预归一化以加快距离计算。如果您严格需要保留原始向量,请考虑使用Dot距离度量。 - 您使用了
uint8数据类型来存储向量。uint8需要特殊的输入值格式,这可能与嵌入模型的典型输出不兼容。
搜索
Qdrant 如何处理实时数据更新和搜索?
Qdrant 支持向量数据的实时更新,新插入、更新和删除的向量可立即用于搜索。系统在后台索引更新期间对未索引的段使用全扫描搜索。
我的搜索结果包含空值的向量。为什么?
默认情况下,Qdrant 尝试最小化网络流量,并且不在搜索结果中返回向量。但您可以通过将搜索/滚动方法的 with_vector 参数设置为 true 来强制 Qdrant 执行此操作。
如果您仍然在结果中看到 "vector": null,则可能是您传递的向量格式不正确,或者您调用 upsert 方法的方式存在问题。
如何在没有向量的情况下进行搜索?
您可能正在寻找 scroll 方法。它允许您根据过滤器检索记录,甚至迭代集合中的所有记录。
Qdrant 是否支持全文搜索或混合搜索?
Qdrant 首先是一个向量搜索引擎,我们只在不影响向量搜索用例的情况下实现全文支持。这包括界面和性能。
Qdrant 可以做什么
- 使用全文过滤器进行搜索
- 将全文过滤器应用于向量搜索(即,在包含特定单词或短语的记录中执行向量搜索)
- 执行前缀搜索和语义边输入边搜索
- 稀疏向量,如 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 索引?
在上传之前创建 Payload 索引以避免索引重建。但是,在某些情况下,在上传之后定义索引也是可以的。例如,您可以在启动后配置新的过滤器逻辑。
如果您提前知道过滤器,则应始终先索引。如果您需要稍后索引另一个 Payload,您仍然可以这样做,但请注意对性能的影响。
我应该为每个用户创建一个 Qdrant 集合吗?
不。为每个用户创建一个集合会消耗更多资源。
我们建议为每个用户创建单个集合,并使用 Payload 进行访问隔离,而不是为每个用户创建单独的集合。每个 Qdrant 点都可以有一个 Payload 作为元数据。对于多租户,您可以为每个点包含 user_id 或 tenant_id。为了进一步优化存储,您可以为 Payload 字段启用租户索引。
云
Qdrant 云集群可以缩容吗?
是的,Qdrant 云集群可以进行垂直和水平缩容。请注意,在垂直缩容期间,磁盘大小无法减小。