@@ -259,13 +259,19 @@ Use `vector_ip_ops` for inner product and `vector_cosine_ops` for cosine distanc
259
259
260
260
Use the ` serde ` feature to enable serialization
261
261
262
- ## Half Vectors
262
+ ## Reference
263
263
264
- Use the ` halfvec ` feature to enable half vectors
264
+ ### Vectors
265
265
266
- ## Reference
266
+ Create a vector
267
267
268
- Convert a vector to a ` Vec<f32> `
268
+ ``` rust
269
+ use pgvector :: Vector ;
270
+
271
+ let vec = Vector :: from (vec! [1.0 , 2.0 , 3.0 ]);
272
+ ```
273
+
274
+ Convert to a ` Vec<f32> `
269
275
270
276
``` rust
271
277
let f32_vec : Vec <f32 > = vec . into ();
@@ -277,6 +283,101 @@ Get a slice
277
283
let slice = vec . as_slice ();
278
284
```
279
285
286
+ ### Half Vectors
287
+
288
+ Note: Use the ` halfvec ` feature to enable half vectors
289
+
290
+ Create a half vector
291
+
292
+ ``` rust
293
+ use pgvector :: HalfVector ;
294
+
295
+ let vec = HalfVector :: from (vec! [f16 :: from_f32 (1.0 ), f16 :: from_f32 (2.0 ), f16 :: from_f32 (3.0 )]);
296
+ ```
297
+
298
+ Convert to a ` Vec<f16> `
299
+
300
+ ``` rust
301
+ let f16_vec : Vec <f16 > = vec . into ();
302
+ ```
303
+
304
+ Get a slice
305
+
306
+ ``` rust
307
+ let slice = vec . as_slice ();
308
+ ```
309
+
310
+ ### Binary Vectors
311
+
312
+ Create a binary vector from a slice of bits
313
+
314
+ ``` rust
315
+ use pgvector :: Bit ;
316
+
317
+ let vec = Bit :: new (& [true , false , true ]);
318
+ ```
319
+
320
+ or a slice of bytes
321
+
322
+ ``` rust
323
+ let vec = Bit :: from_bytes (& [0b00000000 , 0b11111111 ]);
324
+ ```
325
+
326
+ Get the number of bits
327
+
328
+ ``` rust
329
+ let len = vec . len ();
330
+ ```
331
+
332
+ Get a slice of bytes
333
+
334
+ ``` rust
335
+ let bytes = vec . as_bytes ();
336
+ ```
337
+
338
+ ### Sparse Vectors
339
+
340
+ Create a sparse vector from a dense vector
341
+
342
+ ``` rust
343
+ use pgvector :: SparseVector ;
344
+
345
+ let vec = SparseVector :: from_dense (vec! [1.0 , 0.0 , 2.0 , 0.0 , 3.0 , 0.0 ]);
346
+ ```
347
+
348
+ or a map of non-zero elements
349
+
350
+ ``` rust
351
+ let map = HashMap :: from ([(0 , 1.0 ), (2 , 2.0 ), (4 , 3.0 )]);
352
+ let vec = SparseVector :: from_map (& map , 6 );
353
+ ```
354
+
355
+ Note: Indices start at 0
356
+
357
+ Get the number of dimensions
358
+
359
+ ``` rust
360
+ let dim = vec . dimensions ();
361
+ ```
362
+
363
+ Get the indices of non-zero elements
364
+
365
+ ``` rust
366
+ let indices = vec . indices ();
367
+ ```
368
+
369
+ Get the values of non-zero elements
370
+
371
+ ``` rust
372
+ let values = vec . values ();
373
+ ```
374
+
375
+ Get a dense vector
376
+
377
+ ``` rust
378
+ let f32_vec = vec . to_vec ();
379
+ ```
380
+
280
381
## History
281
382
282
383
View the [ changelog] ( https://github.com/pgvector/pgvector-rust/blob/master/CHANGELOG.md )
0 commit comments