Базовая схема таблицы выглядит примерно так (я использую MySQL BTW):
integer unsigned <b>vector-id</b>
<br>integer unsigned <b>fk-attribute-id</b>
<br>float <b>attribute-value</b>
<br>primary key (<b>vector-id</b>,<b>fk-attribute-id</b>)
Вектор представлен в виде нескольких записей в таблице с одинаковым vector-id
Мне нужно построить отдельную таблицу с точечным произведением (также евклидовым расстоянием) всех векторов, которые существуют в этой таблице. Итак, мне нужна таблица результатов, которая выглядит следующим образом:
integer unsigned <b>fk-vector-id-a</b>
<br>integer unsigned <b>fk-vector-id-b</b>
<br>float <b>dot-product</b>
... и тому подобное ...
integer unsigned <b>fk-vector-id-a</b>
<br>integer unsigned <b>fk-vector-id-b</b>
<br>float <b>euclidean-distance</b>
Какова лучшая структура запроса для получения моего результата?
С очень большими векторами, является ли реляционная база данных лучшим подходом для решения этой проблемы, или я должен усвоить векторы в приложении и выполнить там вычисления?