Skip to content

Commit 02c07cc

Browse files
committed
Improved reference section [skip ci]
1 parent 8e1d6ca commit 02c07cc

File tree

1 file changed

+105
-4
lines changed

1 file changed

+105
-4
lines changed

README.md

Lines changed: 105 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,13 +259,19 @@ Use `vector_ip_ops` for inner product and `vector_cosine_ops` for cosine distanc
259259

260260
Use 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
271277
let f32_vec: Vec<f32> = vec.into();
@@ -277,6 +283,101 @@ Get a slice
277283
let 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

282383
View the [changelog](https://github.com/pgvector/pgvector-rust/blob/master/CHANGELOG.md)

0 commit comments

Comments
 (0)