2017-06-06 9 views
0

私は埋め込み面からいくつかのベクトルを持っており、それらをデータベースに保存したいと思います。私が必要とするのは、参照された埋め込み面を与えられたデータベースから同様のベクトルを見つけることができることです。ベクトルデータをPostgresに格納する効率的な方法は何ですか?

私はPostgresで配列型を使用しようとしましたが、引き算のサポートはありません。

  1. 短期的な質問は、Postgresのデータベースレベルで効率的に配列減算を行うことができますか?
  2. 長期的な質問は、このタイプのデータと計算に適したデータベースシステムがあるかどうかです。

特定の問題があるおかげで

--Update--

、私はこれらのどちらを把握したい、私はテーブルに

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

をいくつかのベクターデータがあるとし3つのベクトルはベクトル{5, 5, 5}に(ユークリッド距離で)最も近い。必要

操作は私のシナリオの違い||{5, 5, 5} - {4, 5, 6}||_2

の長さを見つけるために、次に、2つのベクトルを減算する最初のものである、ベクトルは128次元を有することになります。

+0

DB自体ではありませんが、あなたのタスクを読んで、KDツリーやボールツリー(ネイバークエリに最適化されています)が必要です。しかし、それはDB世界で一般的なものなのかどうか分かりません(PostGISはRツリーのように面白そうです)。 – sascha

+0

短い答えは次のとおりです。https://stackoverflow.com/questions/32446703/find-closest-vector-from-a-list-of-vectors-python 長い答えはこれです:PostGISはインデックスを作成してO(log(n))で最悪の場合が最良であるように、最近傍問題に対して技術的に優れているR-treeを照会する。ここでk-treeはO(n)最悪ケース、O(log(n) 。 –

答えて

4

Postgresを使用して、PostgresQLを簡単に拡張して、幾何学的データ型の拡張を一気にできるようにしたいと思われるようです。 (点、ベクトル、円弧など)

+0

私はそれに目を通します – Khanetor

+0

問題文のより正確な記述を私に教えれば、より多くの助けを得ることができます。 –

+0

詳細を更新しました – Khanetor

関連する問題