两个相等大小的矢量(实数)之间的余弦相似性被定义为点积乘以规范的乘积.
为了表示向量,我有一个大型float数组表,例如CREATE TABLE foo(vec float[])'.给定一个特定的float数组,我需要快速(使用索引,而不是seqscan)通过余弦相似性找到该表中最接近的数组,例如SELECT * FROM foo ORDER BY cos_sim(vec, ARRAY[1.0, 4.5, 2.2]) DESC LIMIT 10; 但我该怎么用?
pg_trgm余弦相似度的支持是不同的.它比较文本,我不确定它究竟是做什么的.称为smlar(此处)的扩展也对浮点数组具有余弦相似性支持,但是又做了不同的事情.我所描述的通常用于数据分析以比较文档的特征,所以我认为Postgres会支持它.