我构建了存储数百万个浮点向量的应用程序,每个向量大约有 100 个维度。使用查询向量,我需要在这些向量中搜索 k 个最近的(欧几里德)匹配项。运行时间必须比扫描所有数百万个向量更快。我所说的“向量”是指线性代数术语中包含约 100 个 float 的列表,即 [0.3, -15.7, 0.004, 457.1, ...]
我知道 MySQL 和 MongoDB 等数据库提供适用于二维的空间索引。有没有办法通过复合索引使它适应更多维度?还是有其他数据存储支持更多维度的索引?
最佳答案
如果您正在寻找精确匹配,100 个维度就很多了。如果您准备接受近似匹配,可以使用一类 Locality-Sensitive-Hashing 方案。您可以为您的数据集生成一个散列或一系列散列值,并使用普通数据库或二维空间数据库根据散列值查找匹配项。一个引用是 http://people.csail.mit.edu/indyk/p117-andoni.pdf .
关于database - 结合地理空间索引的多维搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16489357/