2017-06-06 65 views
0

我有一些向量,從嵌入面,我想將它們存儲在數據庫中。我需要的是能夠從數據庫中找到相似的向量,並給出引用的嵌入式面部。在Postgres中存儲矢量數據的有效方法是什麼?

我曾嘗試在Postgres中使用數組類型,但不支持減法。

  1. 短期的問題是:我們可以在Postgres數據庫級高效地執行陣列減法?
  2. 長遠的問題是:這種類型的數據和計算有沒有更好的數據庫系統?

感謝

--Update--

的具體問題是,假設我有一個表

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

我想弄清楚它們各自的一個部分矢量數據3個向量與矢量{5, 5, 5}最接近(歐幾里德距離)。

所需的操作是第一減去2個向量,然後找到差值||{5, 5, 5} - {4, 5, 6}||_2

的長度。在我的情況下,載體將具有128米的尺寸。

+0

不是數據庫本身,而是閱讀你的任務,我期望像kd-trees或ball-trees(它爲鄰居查詢優化)。但我不知道這是否是數據庫世界常見的東西(快速瀏覽比利提到的PostGIS看起來很有趣,R-tree的)。 – sascha

+0

簡短回答是這樣的:https://stackoverflow.com/questions/32446703/find-closest-vector-from-a-list-of-vectors-python 長的答案是這樣的:PostGIS,因爲它會索引並允許你查詢技術上對最近鄰問題更好的R樹,因爲最壞情況是O(log(n))的最佳情況,其中kd-trees是O(n)最壞情況和O(log(n))最好情況。 –

回答

4

看來你想使用PostGIS,它是PostgresQL的一個簡單擴展,它允許一大堆幾何數據類型擴展。 (點,向量,弧等)

+0

我會研究一下 – Khanetor

+0

如果你給我一個更準確的問題陳述描述,我可以提供更多的幫助。 –

+0

我更新了詳細說明 – Khanetor

相關問題