【发布时间】:2009-08-26 16:19:56
【问题描述】:
基本表架构看起来像这样(我使用的是 MySQL BTW):
integer unsigned vector-id
integer unsigned fk-attribute-id
float attribute-value
primary key (vector-id,fk-attribute-id)
vector表示为表中具有相同vector-id
的多条记录我需要用此表中存在的所有向量的点积(也是欧几里得距离)建立一个单独的表。所以,我需要一个如下所示的结果表:
integer unsigned fk-vector-id-a
integer unsigned fk-vector-id-b
float dot-product
...像这样的...
integer unsigned fk-vector-id-a
integer unsigned fk-vector-id-b
float euclidean-distance
产生我的结果的最佳查询结构是什么?
对于非常大的向量,关系数据库是解决这个问题的最佳方法,还是我应该在应用程序中内化向量并在那里进行计算?
【问题讨论】:
-
不同的向量可以有不同的维度吗?或者两个具有相同维度的向量可以具有不同的属性集?即,一个可以有 3-D 属性 {长度、宽度、高度},而另一个有 {体重、年龄、颜色}
-
因为显然做点积需要 2 个向量在同一个 N 空间中,不是吗?即维度必须相同。
-
是的,向量可以是不同的维度,但点积中只包含属性的重叠。
标签: sql optimization math vector