@@ -30,54 +30,55 @@ defmodule EctoTest do
30
30
end
31
31
32
32
test "vector l2 distance" do
33
- items = Repo . all ( from i in Item , order_by: l2_distance ( i . embedding , [ 1 , 1 , 1 ] ) , limit: 5 )
33
+ # TODO restore support for list
34
+ items = Repo . all ( from i in Item , order_by: l2_distance ( i . embedding , ^ Pgvector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
34
35
assert Enum . map ( items , fn v -> v . id end ) == [ 1 , 3 , 2 ]
35
36
assert Enum . map ( items , fn v -> v . embedding |> Pgvector . to_list ( ) end ) == [ [ 1.0 , 1.0 , 1.0 ] , [ 1.0 , 1.0 , 2.0 ] , [ 2.0 , 2.0 , 3.0 ] ]
36
37
end
37
38
38
39
test "vector max inner product" do
39
- items = Repo . all ( from i in Item , order_by: max_inner_product ( i . embedding , [ 1 , 1 , 1 ] ) , limit: 5 )
40
+ items = Repo . all ( from i in Item , order_by: max_inner_product ( i . embedding , ^ Pgvector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
40
41
assert Enum . map ( items , fn v -> v . id end ) == [ 2 , 3 , 1 ]
41
42
end
42
43
43
44
test "vector cosine distance" do
44
- items = Repo . all ( from i in Item , order_by: cosine_distance ( i . embedding , [ 1 , 1 , 1 ] ) , limit: 5 )
45
+ items = Repo . all ( from i in Item , order_by: cosine_distance ( i . embedding , ^ Pgvector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
45
46
assert Enum . map ( items , fn v -> v . id end ) == [ 1 , 2 , 3 ]
46
47
end
47
48
48
49
test "vector cosine similarity" do
49
- items = Repo . all ( from i in Item , order_by: ( 1 - cosine_distance ( i . embedding , [ 1 , 1 , 1 ] ) ) , limit: 5 )
50
+ items = Repo . all ( from i in Item , order_by: ( 1 - cosine_distance ( i . embedding , ^ Pgvector . new ( [ 1 , 1 , 1 ] ) ) ) , limit: 5 )
50
51
assert Enum . map ( items , fn v -> v . id end ) == [ 3 , 2 , 1 ]
51
52
end
52
53
53
54
test "vector l1 distance" do
54
- items = Repo . all ( from i in Item , order_by: l1_distance ( i . embedding , [ 1 , 1 , 1 ] ) , limit: 5 )
55
+ items = Repo . all ( from i in Item , order_by: l1_distance ( i . embedding , ^ Pgvector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
55
56
assert Enum . map ( items , fn v -> v . id end ) == [ 1 , 3 , 2 ]
56
57
end
57
58
58
59
test "halfvec l2 distance" do
59
- items = Repo . all ( from i in Item , order_by: l2_distance ( i . half_embedding , Pgvector.HalfVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
60
+ items = Repo . all ( from i in Item , order_by: l2_distance ( i . half_embedding , ^ Pgvector.HalfVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
60
61
assert Enum . map ( items , fn v -> v . id end ) == [ 1 , 3 , 2 ]
61
62
assert Enum . map ( items , fn v -> v . half_embedding |> Pgvector . to_list ( ) end ) == [ [ 1.0 , 1.0 , 1.0 ] , [ 1.0 , 1.0 , 2.0 ] , [ 2.0 , 2.0 , 3.0 ] ]
62
63
end
63
64
64
65
test "halfvec max inner product" do
65
- items = Repo . all ( from i in Item , order_by: max_inner_product ( i . half_embedding , Pgvector.HalfVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
66
+ items = Repo . all ( from i in Item , order_by: max_inner_product ( i . half_embedding , ^ Pgvector.HalfVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
66
67
assert Enum . map ( items , fn v -> v . id end ) == [ 2 , 3 , 1 ]
67
68
end
68
69
69
70
test "halfvec cosine distance" do
70
- items = Repo . all ( from i in Item , order_by: cosine_distance ( i . half_embedding , Pgvector.HalfVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
71
+ items = Repo . all ( from i in Item , order_by: cosine_distance ( i . half_embedding , ^ Pgvector.HalfVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
71
72
assert Enum . map ( items , fn v -> v . id end ) == [ 1 , 2 , 3 ]
72
73
end
73
74
74
75
test "halfvec cosine similarity" do
75
- items = Repo . all ( from i in Item , order_by: ( 1 - cosine_distance ( i . half_embedding , Pgvector.HalfVector . new ( [ 1 , 1 , 1 ] ) ) ) , limit: 5 )
76
+ items = Repo . all ( from i in Item , order_by: ( 1 - cosine_distance ( i . half_embedding , ^ Pgvector.HalfVector . new ( [ 1 , 1 , 1 ] ) ) ) , limit: 5 )
76
77
assert Enum . map ( items , fn v -> v . id end ) == [ 3 , 2 , 1 ]
77
78
end
78
79
79
80
test "halfvec l1 distance" do
80
- items = Repo . all ( from i in Item , order_by: l1_distance ( i . half_embedding , Pgvector.HalfVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
81
+ items = Repo . all ( from i in Item , order_by: l1_distance ( i . half_embedding , ^ Pgvector.HalfVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
81
82
assert Enum . map ( items , fn v -> v . id end ) == [ 1 , 3 , 2 ]
82
83
end
83
84
@@ -92,28 +93,28 @@ defmodule EctoTest do
92
93
end
93
94
94
95
test "sparsevec l2 distance" do
95
- items = Repo . all ( from i in Item , order_by: l2_distance ( i . sparse_embedding , Pgvector.SparseVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
96
+ items = Repo . all ( from i in Item , order_by: l2_distance ( i . sparse_embedding , ^ Pgvector.SparseVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
96
97
assert Enum . map ( items , fn v -> v . id end ) == [ 1 , 3 , 2 ]
97
98
assert Enum . map ( items , fn v -> v . sparse_embedding |> Pgvector . to_list ( ) end ) == [ [ 1.0 , 1.0 , 1.0 ] , [ 1.0 , 1.0 , 2.0 ] , [ 2.0 , 2.0 , 3.0 ] ]
98
99
end
99
100
100
101
test "sparsevec max inner product" do
101
- items = Repo . all ( from i in Item , order_by: max_inner_product ( i . sparse_embedding , Pgvector.SparseVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
102
+ items = Repo . all ( from i in Item , order_by: max_inner_product ( i . sparse_embedding , ^ Pgvector.SparseVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
102
103
assert Enum . map ( items , fn v -> v . id end ) == [ 2 , 3 , 1 ]
103
104
end
104
105
105
106
test "sparsevec cosine distance" do
106
- items = Repo . all ( from i in Item , order_by: cosine_distance ( i . sparse_embedding , Pgvector.SparseVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
107
+ items = Repo . all ( from i in Item , order_by: cosine_distance ( i . sparse_embedding , ^ Pgvector.SparseVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
107
108
assert Enum . map ( items , fn v -> v . id end ) == [ 1 , 2 , 3 ]
108
109
end
109
110
110
111
test "sparsevec cosine similarity" do
111
- items = Repo . all ( from i in Item , order_by: ( 1 - cosine_distance ( i . sparse_embedding , Pgvector.SparseVector . new ( [ 1 , 1 , 1 ] ) ) ) , limit: 5 )
112
+ items = Repo . all ( from i in Item , order_by: ( 1 - cosine_distance ( i . sparse_embedding , ^ Pgvector.SparseVector . new ( [ 1 , 1 , 1 ] ) ) ) , limit: 5 )
112
113
assert Enum . map ( items , fn v -> v . id end ) == [ 3 , 2 , 1 ]
113
114
end
114
115
115
116
test "sparsevec l1 distance" do
116
- items = Repo . all ( from i in Item , order_by: l1_distance ( i . sparse_embedding , Pgvector.SparseVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
117
+ items = Repo . all ( from i in Item , order_by: l1_distance ( i . sparse_embedding , ^ Pgvector.SparseVector . new ( [ 1 , 1 , 1 ] ) ) , limit: 5 )
117
118
assert Enum . map ( items , fn v -> v . id end ) == [ 1 , 3 , 2 ]
118
119
end
119
120
0 commit comments