TiDB 向量数据类型支持的最大维度数为 4096。这个限制适用于使用 VECTOR
数据类型的列,确保在存储和处理高维数据时的性能和效率。
有关更多详细信息,可以参考以下链接:TiDB 向量数据类型文档。
TiDB 向量数据类型支持的最大维度数为 4096。这个限制适用于使用 VECTOR
数据类型的列,确保在存储和处理高维数据时的性能和效率。
有关更多详细信息,可以参考以下链接:TiDB 向量数据类型文档。
在 TiDB 中,VECTOR 数据类型的优化策略主要围绕提高向量搜索的性能和效率。以下是一些具体的优化建议:
添加向量搜索索引:为向量列添加向量搜索索引可以显著提高查询性能,通常可以提升10倍以上的速度,代价是召回率可能会有小幅下降。向量搜索索引使用 HNSW 算法,适用于固定维度的 VECTOR(D) 数据类型。
确保索引完全构建:在插入大量向量数据后,部分数据可能会在 Delta 层等待持久化。只有在数据持久化后,索引才会被构建。在索引完全构建之前,向量搜索的性能可能会不理想。可以通过查询 INFORMATION_SCHEMA.TIFLASH_INDEXES
表来查看索引的构建进度。
减少向量维度或缩短嵌入:随着向量维度的增加,计算复杂度也会显著增加。因此,尽可能减少向量维度可以优化性能。这通常需要切换到另一个嵌入模型,并评估模型变化对查询准确性的影响。
排除查询结果中的向量列:向量嵌入数据通常较大,仅在搜索过程中使用。通过在 SELECT
子句中明确列出需要检索的列,而不是使用 SELECT *
,可以减少 TiDB 服务器和 SQL 客户端之间传输的数据量,从而提高查询性能。
预热索引:如果索引长时间未被访问,TiDB 需要从云存储或磁盘加载整个索引,这会导致较高的查询延迟。通过在实际工作负载之前运行类似的向量搜索查询来预热索引,可以避免这种延迟。
使用合适的距离函数:在创建和使用向量搜索索引时,必须指定距离函数。目前支持的距离函数包括余弦距离和 L2 距离。确保在查询中使用与创建索引时相同的距离函数。
避免使用预过滤器:在查询中使用 WHERE
子句进行预过滤会导致无法利用向量索引。应先进行 K-Nearest Neighbors (KNN) 查询,然后再过滤不需要的结果。
通过以上优化策略,可以有效提升 TiDB 中 VECTOR 数据类型的查询性能和效率。