【问题标题】:How to query by nearest neighbor on Cloud Firestore?如何在 Cloud Firestore 上按最近邻居查询?
【发布时间】:2021-12-06 07:01:38
【问题描述】:
我是 Firebase 生态系统的新手,我想知道是否有办法使用使用 N 维特征向量的智能查询系统。
我们正在尝试部署一个人脸识别应用程序,该应用程序在计算其编码(基本上是 128 个特征的向量)后,针对数据库(如云 Firestore)对其进行测试,以找到最接近的匹配项。据我了解,通常使用 PostgreSQL、apache sorl 等索引 128 个字段并使用多维数据集运算符或类似欧几里德距离的查询以一些相当合理的时间来完成相同的任务。我认为地理位置查询(Geofire)已经有类似的东西了。
有没有办法或一些替代选项来执行这种任务?
【问题讨论】:
标签:
firebase
google-cloud-firestore
【解决方案1】:
Firestore 查询只能沿单个轴执行比较。他们没有内置的方法来对多个值进行比较,这就是为什么GeoFire 必须使用geohash 值来模拟多轴比较。
当涉及到其他多值比较时,这也是您唯一的选择:将值打包成单个值,以便以您需要的方式比较这些打包的值。
如果您的用例还要求您可以比较两个标量值,然后从生成的二维空间中获取一个范围,您可以使用类似的方案将两个值打包成一个字符串-少量。您也许可以使用 GeoFire 作为起点,但您需要对其进行修改以消除 Geofire 的点位于球体上这一事实。
如果这对您不起作用,我建议您查看一种更本机支持您的用例的解决方案。