什么是在Postgres中存储矢量数据的有效方法?

时间:2017-06-06 18:48:14

标签: database postgresql vector machine-learning postgis

我有一些矢量,来自嵌入面,我想将它们存储在数据库中。我需要的是能够在给定嵌入面的情况下从数据库中找到类似的向量。

我尝试在Postgres中使用数组类型,但不支持减法。

  1. 短期问题是:我们能否在Postgres的数据库级别有效地执行数组减法?
  2. 长期问题是:这种数据和计算是否有更好的数据库系统?
  3. 由于

    - 更新 -

    具体问题是,假设我在表格中有一些矢量数据

    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
    

    我想弄清楚这3个向量中哪一个最接近(在欧几里德距离内)到向量{5, 5, 5}

    所需的操作首先要减去2个向量,然后找出差异的长度||{5, 5, 5} - {4, 5, 6}||_2

    在我的场景中,矢量将有128个维度。

2 个答案:

答案 0 :(得分:6)

似乎你想使用PostGIS这是PostgresQL的一个简单扩展,它允许一大堆几何数据类型扩展。 (点,矢量,弧等)

答案 1 :(得分:0)

将其转换为字符串。或者,您可以定义自定义数据类型并存储值

join(str(s) for s in encodings[0][0:64])