我有一些向量,從嵌入面,我想將它們存儲在數據庫中。我需要的是能夠從數據庫中找到相似的向量,並給出引用的嵌入式面部。在Postgres中存儲矢量數據的有效方法是什麼?
我曾嘗試在Postgres中使用數組類型,但不支持減法。
- 短期的問題是:我們可以在Postgres數據庫級高效地執行陣列減法?
- 長遠的問題是:這種類型的數據和計算有沒有更好的數據庫系統?
感謝
--Update--
的具體問題是,假設我有一個表
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
我想弄清楚它們各自的一個部分矢量數據3個向量與矢量{5, 5, 5}
最接近(歐幾里德距離)。
所需的操作是第一減去2個向量,然後找到差值||{5, 5, 5} - {4, 5, 6}||_2
的長度。在我的情況下,載體將具有128米的尺寸。
不是數據庫本身,而是閱讀你的任務,我期望像kd-trees或ball-trees(它爲鄰居查詢優化)。但我不知道這是否是數據庫世界常見的東西(快速瀏覽比利提到的PostGIS看起來很有趣,R-tree的)。 – sascha
簡短回答是這樣的: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))最好情況。 –