@@ -259,13 +259,19 @@ Use `vector_ip_ops` for inner product and `vector_cosine_ops` for cosine distanc
259259
260260Use the ` serde `  feature to enable serialization
261261
262- ## Half Vectors  
262+ ## Reference  
263263
264- Use the  ` halfvec `  feature to enable half vectors 
264+ ###  Vectors 
265265
266- ##  Reference 
266+ Create a vector 
267267
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> ` 
269275
270276``` rust 
271277let  f32_vec :  Vec <f32 > =  vec . into ();
@@ -277,6 +283,101 @@ Get a slice
277283let  slice  =  vec . as_slice ();
278284``` 
279285
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+ 
280381## History  
281382
282383View the [ changelog] ( https://github.com/pgvector/pgvector-rust/blob/master/CHANGELOG.md ) 
0 commit comments