@@ -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