如何在Cloud Firestore上按最近邻居查询?



我是Firebase生态系统的新手,我想知道是否有一种使用n维特征向量的智能查询系统的方法。

我们正在尝试部署一个人脸识别应用程序,在计算其编码(基本上是128个特征的向量)之后,针对数据库(如云Firestore)进行测试,以找到最接近的匹配。从我的理解来看,同样的任务通常是使用PostgreSQL, apache sorl等来完成的,对128个字段进行索引,并使用立方体运算符或欧几里得距离之类的查询,并具有一些相当合理的时间。我想对于地理位置查询(Geofire)已经有类似的东西了。

是否有一种方法或一些替代选项来执行这种任务?

Firestore查询只能沿着单个轴执行比较。它们没有内置的方法来对多个值执行比较,这就是为什么GeoFire必须使用geohash值来模拟多轴比较。

当涉及到其他多值比较时,这也是你唯一的选择:以一种允许以你需要的方式比较这些打包值的方式将这些值打包成单个值。

如果您的用例还要求您可以比较两个标量值,然后从结果二维空间中获得一个范围,那么您可能可以使用类似的方案,将两个值逐位打包到字符串中。你也许可以使用GeoFire作为起始点,尽管你需要修改它以删除GeoFire的点在球体上的事实。

如果这对您不起作用,我建议您查看一个更原生地支持您的用例的解决方案。

参见:在firestore中按位置查询的最佳方法