@@ -36,7 +36,6 @@ impl FromSql<HalfVectorType, Pg> for HalfVector {
36
36
mod tests {
37
37
use crate :: { HalfVector , VectorExpressionMethods } ;
38
38
use diesel:: prelude:: * ;
39
- use half:: f16;
40
39
41
40
table ! {
42
41
use diesel:: sql_types:: * ;
@@ -74,25 +73,13 @@ mod tests {
74
73
75
74
let new_items = vec ! [
76
75
NewItem {
77
- embedding: Some ( HalfVector :: from( vec![
78
- f16:: from_f32( 1.0 ) ,
79
- f16:: from_f32( 1.0 ) ,
80
- f16:: from_f32( 1.0 ) ,
81
- ] ) ) ,
76
+ embedding: Some ( HalfVector :: from_f32_slice( & [ 1.0 , 1.0 , 1.0 ] ) ) ,
82
77
} ,
83
78
NewItem {
84
- embedding: Some ( HalfVector :: from( vec![
85
- f16:: from_f32( 2.0 ) ,
86
- f16:: from_f32( 2.0 ) ,
87
- f16:: from_f32( 2.0 ) ,
88
- ] ) ) ,
79
+ embedding: Some ( HalfVector :: from_f32_slice( & [ 2.0 , 2.0 , 2.0 ] ) ) ,
89
80
} ,
90
81
NewItem {
91
- embedding: Some ( HalfVector :: from( vec![
92
- f16:: from_f32( 1.0 ) ,
93
- f16:: from_f32( 1.0 ) ,
94
- f16:: from_f32( 2.0 ) ,
95
- ] ) ) ,
82
+ embedding: Some ( HalfVector :: from_f32_slice( & [ 1.0 , 1.0 , 2.0 ] ) ) ,
96
83
} ,
97
84
NewItem { embedding: None } ,
98
85
] ;
@@ -105,32 +92,20 @@ mod tests {
105
92
assert_eq ! ( 4 , all. len( ) ) ;
106
93
107
94
let neighbors = items:: table
108
- . order ( items:: embedding. l2_distance ( HalfVector :: from ( vec ! [
109
- f16:: from_f32( 1.0 ) ,
110
- f16:: from_f32( 1.0 ) ,
111
- f16:: from_f32( 1.0 ) ,
112
- ] ) ) )
95
+ . order ( items:: embedding. l2_distance ( HalfVector :: from_f32_slice ( & [ 1.0 , 1.0 , 1.0 ] ) ) )
113
96
. limit ( 5 )
114
97
. load :: < Item > ( & mut conn) ?;
115
98
assert_eq ! (
116
99
vec![ 1 , 3 , 2 , 4 ] ,
117
100
neighbors. iter( ) . map( |v| v. id) . collect:: <Vec <i32 >>( )
118
101
) ;
119
102
assert_eq ! (
120
- Some ( HalfVector :: from( vec![
121
- f16:: from_f32( 1.0 ) ,
122
- f16:: from_f32( 1.0 ) ,
123
- f16:: from_f32( 1.0 )
124
- ] ) ) ,
103
+ Some ( HalfVector :: from_f32_slice( & [ 1.0 , 1.0 , 1.0 ] ) ) ,
125
104
neighbors. first( ) . unwrap( ) . embedding
126
105
) ;
127
106
128
107
let neighbors = items:: table
129
- . order ( items:: embedding. max_inner_product ( HalfVector :: from ( vec ! [
130
- f16:: from_f32( 1.0 ) ,
131
- f16:: from_f32( 1.0 ) ,
132
- f16:: from_f32( 1.0 ) ,
133
- ] ) ) )
108
+ . order ( items:: embedding. max_inner_product ( HalfVector :: from_f32_slice ( & [ 1.0 , 1.0 , 1.0 ] ) ) )
134
109
. limit ( 5 )
135
110
. load :: < Item > ( & mut conn) ?;
136
111
assert_eq ! (
@@ -139,11 +114,7 @@ mod tests {
139
114
) ;
140
115
141
116
let neighbors = items:: table
142
- . order ( items:: embedding. cosine_distance ( HalfVector :: from ( vec ! [
143
- f16:: from_f32( 1.0 ) ,
144
- f16:: from_f32( 1.0 ) ,
145
- f16:: from_f32( 1.0 ) ,
146
- ] ) ) )
117
+ . order ( items:: embedding. cosine_distance ( HalfVector :: from_f32_slice ( & [ 1.0 , 1.0 , 1.0 ] ) ) )
147
118
. limit ( 5 )
148
119
. load :: < Item > ( & mut conn) ?;
149
120
assert_eq ! (
@@ -152,11 +123,7 @@ mod tests {
152
123
) ;
153
124
154
125
let neighbors = items:: table
155
- . order ( items:: embedding. l1_distance ( HalfVector :: from ( vec ! [
156
- f16:: from_f32( 1.0 ) ,
157
- f16:: from_f32( 1.0 ) ,
158
- f16:: from_f32( 1.0 ) ,
159
- ] ) ) )
126
+ . order ( items:: embedding. l1_distance ( HalfVector :: from_f32_slice ( & [ 1.0 , 1.0 , 1.0 ] ) ) )
160
127
. limit ( 5 )
161
128
. load :: < Item > ( & mut conn) ?;
162
129
assert_eq ! (
@@ -165,11 +132,9 @@ mod tests {
165
132
) ;
166
133
167
134
let distances = items:: table
168
- . select ( items:: embedding. max_inner_product ( HalfVector :: from ( vec ! [
169
- f16:: from_f32( 1.0 ) ,
170
- f16:: from_f32( 1.0 ) ,
171
- f16:: from_f32( 1.0 ) ,
172
- ] ) ) )
135
+ . select (
136
+ items:: embedding. max_inner_product ( HalfVector :: from_f32_slice ( & [ 1.0 , 1.0 , 1.0 ] ) ) ,
137
+ )
173
138
. order ( items:: id)
174
139
. load :: < Option < f64 > > ( & mut conn) ?;
175
140
assert_eq ! ( vec![ Some ( -3.0 ) , Some ( -6.0 ) , Some ( -4.0 ) , None ] , distances) ;
0 commit comments