@@ -66,60 +66,60 @@ var _ = Describe("Redis VectorSet commands", Label("vectorset"), func() {
66
66
67
67
It ("basic" , func () {
68
68
SkipBeforeRedisVersion (8.0 , "Redis 8.0 introduces support for VectorSet" )
69
- vecName := "basic"
69
+ vecSetName := "basic"
70
70
val := & redis.VectorValues {
71
71
Val : []float64 {1.5 , 2.4 , 3.3 , 4.2 },
72
72
}
73
- ok , err := client .VAdd (ctx , vecName , "k1" , val ).Result ()
73
+ ok , err := client .VAdd (ctx , vecSetName , "k1" , val ).Result ()
74
74
expectNil (err )
75
75
expectTrue (ok )
76
76
77
77
fp32 := "\x8f \xc2 \xf9 \x3e \xcb \xbe \xe9 \xbe \xb0 \x1e \xca \x3f \x5e \x06 \x9e \x3f "
78
78
val2 := & redis.VectorFP32 {
79
79
Val : []byte (fp32 ),
80
80
}
81
- ok , err = client .VAdd (ctx , vecName , "k2" , val2 ).Result ()
81
+ ok , err = client .VAdd (ctx , vecSetName , "k2" , val2 ).Result ()
82
82
expectNil (err )
83
83
expectTrue (ok )
84
84
85
- dim , err := client .VDim (ctx , vecName ).Result ()
85
+ dim , err := client .VDim (ctx , vecSetName ).Result ()
86
86
expectNil (err )
87
87
expectEqual (dim , 4 )
88
88
89
- count , err := client .VCard (ctx , vecName ).Result ()
89
+ count , err := client .VCard (ctx , vecSetName ).Result ()
90
90
expectNil (err )
91
91
expectEqual (count , 2 )
92
92
93
- ok , err = client .VRem (ctx , vecName , "k1" ).Result ()
93
+ ok , err = client .VRem (ctx , vecSetName , "k1" ).Result ()
94
94
expectNil (err )
95
95
expectTrue (ok )
96
96
97
- count , err = client .VCard (ctx , vecName ).Result ()
97
+ count , err = client .VCard (ctx , vecSetName ).Result ()
98
98
expectNil (err )
99
99
expectEqual (count , 1 )
100
100
})
101
101
102
102
It ("basic similarity" , func () {
103
103
SkipBeforeRedisVersion (8.0 , "Redis 8.0 introduces support for VectorSet" )
104
- vecName := "basic_similarity"
104
+ vecSetName := "basic_similarity"
105
105
106
- ok , err := client .VAdd (ctx , vecName , "k1" , & redis.VectorValues {
106
+ ok , err := client .VAdd (ctx , vecSetName , "k1" , & redis.VectorValues {
107
107
Val : []float64 {1 , 0 , 0 , 0 },
108
108
}).Result ()
109
109
expectNil (err )
110
110
expectTrue (ok )
111
- ok , err = client .VAdd (ctx , vecName , "k2" , & redis.VectorValues {
111
+ ok , err = client .VAdd (ctx , vecSetName , "k2" , & redis.VectorValues {
112
112
Val : []float64 {0.99 , 0.01 , 0 , 0 },
113
113
}).Result ()
114
114
expectNil (err )
115
115
expectTrue (ok )
116
- ok , err = client .VAdd (ctx , vecName , "k3" , & redis.VectorValues {
116
+ ok , err = client .VAdd (ctx , vecSetName , "k3" , & redis.VectorValues {
117
117
Val : []float64 {0.1 , 1 , - 1 , 0.5 },
118
118
}).Result ()
119
119
expectNil (err )
120
120
expectTrue (ok )
121
121
122
- sim , err := client .VSimWithScores (ctx , vecName , & redis.VectorValues {
122
+ sim , err := client .VSimWithScores (ctx , vecSetName , & redis.VectorValues {
123
123
Val : []float64 {1 , 0 , 0 , 0 },
124
124
}).Result ()
125
125
expectNil (err )
@@ -135,18 +135,18 @@ var _ = Describe("Redis VectorSet commands", Label("vectorset"), func() {
135
135
136
136
It ("dimension operation" , func () {
137
137
SkipBeforeRedisVersion (8.0 , "Redis 8.0 introduces support for VectorSet" )
138
- vecName := "dimension_op"
138
+ vecSetName := "dimension_op"
139
139
originalDim := 100
140
140
reducedDim := 50
141
141
142
142
v1 := generateRandomVector (originalDim )
143
- ok , err := client .VAddWithArgs (ctx , vecName , "k1" , & v1 , & redis.VAddArgs {
143
+ ok , err := client .VAddWithArgs (ctx , vecSetName , "k1" , & v1 , & redis.VAddArgs {
144
144
Reduce : int64 (reducedDim ),
145
145
}).Result ()
146
146
expectNil (err )
147
147
expectTrue (ok )
148
148
149
- info , err := client .VInfo (ctx , vecName ).Result ()
149
+ info , err := client .VInfo (ctx , vecSetName ).Result ()
150
150
expectNil (err )
151
151
dim := info ["vector-dim" ].(int64 )
152
152
oriDim := info ["projection-input-dim" ].(int64 )
@@ -155,13 +155,13 @@ var _ = Describe("Redis VectorSet commands", Label("vectorset"), func() {
155
155
156
156
wrongDim := 80
157
157
wrongV := generateRandomVector (wrongDim )
158
- _ , err = client .VAddWithArgs (ctx , vecName , "kw" , & wrongV , & redis.VAddArgs {
158
+ _ , err = client .VAddWithArgs (ctx , vecSetName , "kw" , & wrongV , & redis.VAddArgs {
159
159
Reduce : int64 (reducedDim ),
160
160
}).Result ()
161
161
expectTrue (err != nil )
162
162
163
163
v2 := generateRandomVector (originalDim )
164
- ok , err = client .VAddWithArgs (ctx , vecName , "k2" , & v2 , & redis.VAddArgs {
164
+ ok , err = client .VAddWithArgs (ctx , vecSetName , "k2" , & v2 , & redis.VAddArgs {
165
165
Reduce : int64 (reducedDim ),
166
166
}).Result ()
167
167
expectNil (err )
@@ -170,28 +170,28 @@ var _ = Describe("Redis VectorSet commands", Label("vectorset"), func() {
170
170
171
171
It ("remove" , func () {
172
172
SkipBeforeRedisVersion (8.0 , "Redis 8.0 introduces support for VectorSet" )
173
- vecName := "remove"
173
+ vecSetName := "remove"
174
174
v1 := generateRandomVector (5 )
175
- ok , err := client .VAdd (ctx , vecName , "k1" , & v1 ).Result ()
175
+ ok , err := client .VAdd (ctx , vecSetName , "k1" , & v1 ).Result ()
176
176
expectNil (err )
177
177
expectTrue (ok )
178
178
179
- exist , err := client .Exists (ctx , vecName ).Result ()
179
+ exist , err := client .Exists (ctx , vecSetName ).Result ()
180
180
expectNil (err )
181
181
expectEqual (exist , 1 )
182
182
183
- ok , err = client .VRem (ctx , vecName , "k1" ).Result ()
183
+ ok , err = client .VRem (ctx , vecSetName , "k1" ).Result ()
184
184
expectNil (err )
185
185
expectTrue (ok )
186
186
187
- exist , err = client .Exists (ctx , vecName ).Result ()
187
+ exist , err = client .Exists (ctx , vecSetName ).Result ()
188
188
expectNil (err )
189
189
expectEqual (exist , 0 )
190
190
})
191
191
192
192
It ("all operations" , func () {
193
193
SkipBeforeRedisVersion (8.0 , "Redis 8.0 introduces support for VectorSet" )
194
- vecName := "commands"
194
+ vecSetName := "commands"
195
195
vals := []struct {
196
196
name string
197
197
v redis.VectorValues
@@ -224,102 +224,111 @@ var _ = Describe("Redis VectorSet commands", Label("vectorset"), func() {
224
224
}
225
225
226
226
// If the key doesn't exist, return null error
227
- _ , err := client .VRandMember (ctx , vecName ).Result ()
227
+ _ , err := client .VRandMember (ctx , vecSetName ).Result ()
228
228
expectEqual (err .Error (), proto .Nil .Error ())
229
229
230
230
// If the key doesn't exist, return an empty array
231
- res , err := client .VRandMemberCount (ctx , vecName , 3 ).Result ()
231
+ res , err := client .VRandMemberCount (ctx , vecSetName , 3 ).Result ()
232
232
expectNil (err )
233
233
expectEqual (len (res ), 0 )
234
234
235
235
for _ , v := range vals {
236
- ok , err := client .VAdd (ctx , vecName , v .name , & v .v ).Result ()
236
+ ok , err := client .VAdd (ctx , vecSetName , v .name , & v .v ).Result ()
237
237
expectNil (err )
238
238
expectTrue (ok )
239
239
if len (v .attr ) > 0 {
240
- ok , err = client .VSetAttr (ctx , vecName , v .name , & v .attr ).Result ()
240
+ ok , err = client .VSetAttr (ctx , vecSetName , v .name , & v .attr ).Result ()
241
241
expectNil (err )
242
242
expectTrue (ok )
243
243
}
244
244
}
245
245
246
246
// VGetAttr
247
- attr , err := client .VGetAttr (ctx , vecName , vals [1 ].name ).Result ()
247
+ attr , err := client .VGetAttr (ctx , vecSetName , vals [1 ].name ).Result ()
248
248
expectNil (err )
249
- expectEqual (attr , vals [1 ].attr )
249
+ expectEqual (attr , vals [1 ].attr . Marshall () )
250
250
251
251
// VRandMember
252
- _ , err = client .VRandMember (ctx , vecName ).Result ()
252
+ _ , err = client .VRandMember (ctx , vecSetName ).Result ()
253
253
expectNil (err )
254
254
255
- res , err = client .VRandMemberCount (ctx , vecName , 3 ).Result ()
255
+ res , err = client .VRandMemberCount (ctx , vecSetName , 3 ).Result ()
256
256
expectNil (err )
257
257
expectEqual (len (res ), 3 )
258
258
259
- res , err = client .VRandMemberCount (ctx , vecName , 10 ).Result ()
259
+ res , err = client .VRandMemberCount (ctx , vecSetName , 10 ).Result ()
260
260
expectNil (err )
261
261
expectEqual (len (res ), len (vals ))
262
262
263
263
// test equality
264
- sim , err := client .VSimWithArgs (ctx , vecName , & vals [0 ].v , & redis.VSimArgs {
264
+ sim , err := client .VSimWithArgs (ctx , vecSetName , & vals [0 ].v , & redis.VSimArgs {
265
265
Filter : `.age == 25` ,
266
266
}).Result ()
267
267
expectNil (err )
268
268
expectEqual (len (sim ), 1 )
269
269
expectEqual (sim [0 ], vals [0 ].name )
270
270
271
271
// test greater than
272
- sim , err = client .VSimWithArgs (ctx , vecName , & vals [0 ].v , & redis.VSimArgs {
272
+ sim , err = client .VSimWithArgs (ctx , vecSetName , & vals [0 ].v , & redis.VSimArgs {
273
273
Filter : `.age > 25` ,
274
274
}).Result ()
275
275
expectNil (err )
276
276
expectEqual (len (sim ), 2 )
277
277
278
278
// test less than or equal
279
- sim , err = client .VSimWithArgs (ctx , vecName , & vals [0 ].v , & redis.VSimArgs {
279
+ sim , err = client .VSimWithArgs (ctx , vecSetName , & vals [0 ].v , & redis.VSimArgs {
280
280
Filter : `.age <= 30` ,
281
281
}).Result ()
282
282
expectNil (err )
283
283
expectEqual (len (sim ), 2 )
284
284
285
285
// test string equality
286
- sim , err = client .VSimWithArgs (ctx , vecName , & vals [0 ].v , & redis.VSimArgs {
286
+ sim , err = client .VSimWithArgs (ctx , vecSetName , & vals [0 ].v , & redis.VSimArgs {
287
287
Filter : `.name == "Alice"` ,
288
288
}).Result ()
289
289
expectNil (err )
290
290
expectEqual (len (sim ), 1 )
291
291
expectEqual (sim [0 ], vals [0 ].name )
292
292
293
293
// test string inequality
294
- sim , err = client .VSimWithArgs (ctx , vecName , & vals [0 ].v , & redis.VSimArgs {
294
+ sim , err = client .VSimWithArgs (ctx , vecSetName , & vals [0 ].v , & redis.VSimArgs {
295
295
Filter : `.name != "Alice"` ,
296
296
}).Result ()
297
297
expectNil (err )
298
298
expectEqual (len (sim ), 2 )
299
299
300
300
// test bool
301
- sim , err = client .VSimWithArgs (ctx , vecName , & vals [0 ].v , & redis.VSimArgs {
301
+ sim , err = client .VSimWithArgs (ctx , vecSetName , & vals [0 ].v , & redis.VSimArgs {
302
302
Filter : `.active` ,
303
303
}).Result ()
304
304
expectNil (err )
305
305
expectEqual (len (sim ), 1 )
306
306
expectEqual (sim [0 ], vals [0 ].name )
307
307
308
308
// test logical add
309
- sim , err = client .VSimWithArgs (ctx , vecName , & vals [0 ].v , & redis.VSimArgs {
309
+ sim , err = client .VSimWithArgs (ctx , vecSetName , & vals [0 ].v , & redis.VSimArgs {
310
310
Filter : `.age > 20 and .age < 30` ,
311
311
}).Result ()
312
312
expectNil (err )
313
313
expectEqual (len (sim ), 1 )
314
314
expectEqual (sim [0 ], vals [0 ].name )
315
315
316
316
// test logical or
317
- sim , err = client .VSimWithArgs (ctx , vecName , & vals [0 ].v , & redis.VSimArgs {
317
+ sim , err = client .VSimWithArgs (ctx , vecSetName , & vals [0 ].v , & redis.VSimArgs {
318
318
Filter : `.age < 30 or .age > 35` ,
319
319
}).Result ()
320
320
expectNil (err )
321
321
expectEqual (len (sim ), 1 )
322
322
expectEqual (sim [0 ], vals [0 ].name )
323
+
324
+ // VClearAttributes
325
+ ok , err := client .VClearAttributes (ctx , vecSetName , vals [1 ].name ).Result ()
326
+ expectNil (err )
327
+ expectTrue (ok )
328
+
329
+ // VGetAttr
330
+ _ , err = client .VGetAttr (ctx , vecSetName , vals [1 ].name ).Result ()
331
+ expectEqual (err , proto .Nil )
323
332
})
324
333
})
325
334
}
0 commit comments