Skip to content

Commit

Permalink
update docs and example
Browse files Browse the repository at this point in the history
  • Loading branch information
ewfian committed Sep 20, 2023
1 parent 8c0fc9e commit 2fabf92
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 17 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,11 @@ ipIndex.add([1, 0]);
// Serialize an index
const index_buf = newIndex.toBuffer();
const deserializedIndex = Index.fromBuffer(index_buf);
console.log(deserializedIndex.ntotal()); // 3

// Factory index
const hnswIndex = Index.fromFactory(2, 'HNSW,Flat', MetricType.METRIC_INNER_PRODUCT);
const x = [1,0,0,1];
const x = [1, 0, 0, 1];
hnswIndex.train(x);
hnswIndex.add(x);
```
Expand Down
54 changes: 38 additions & 16 deletions examples/index.js
Original file line number Diff line number Diff line change
@@ -1,38 +1,60 @@
const { IndexFlatL2 } = require('../');
const { IndexFlatL2, Index, IndexFlatIP, MetricType } = require('../');

const dimension = 2;
const index = new IndexFlatL2(dimension);

console.log(index.getDimension());
console.log(index.isTrained());
console.log(index.ntotal());
console.log(index.getDimension()); // 2
console.log(index.isTrained()); // true
console.log(index.ntotal()); // 0

// inserting data into index.
index.add([1, 0]);
index.add([1, 2]);
index.add([1, 3]);
index.add([1, 1]);
console.log(index.ntotal());

console.log(index.ntotal()); // 4

const k = 4;
const results = index.search([1, 0], k);
console.log(results.labels);
console.log(results.distances);
console.log(results.labels); // [ 0, 3, 1, 2 ]
console.log(results.distances); // [ 0, 1, 4, 9 ]

// Save index
const fname = 'faiss.index';
index.write(fname);

// Load saved index
const index_loaded = IndexFlatL2.read(fname);
console.log(index_loaded.getDimension());
console.log(index_loaded.ntotal());
console.log(index_loaded.getDimension()); //2
console.log(index_loaded.ntotal()); //4
const results1 = index_loaded.search([1, 1], 4);
console.log(results1.labels);
console.log(results1.distances);
console.log(results1.labels); // [ 3, 0, 1, 2 ]
console.log(results1.distances); // [ 0, 1, 1, 4 ]

// Merge index
const newIndex = new IndexFlatL2(dimension);
newIndex.mergeFrom(index);
console.log(newIndex.ntotal());
console.log(newIndex.ntotal()); // 4

console.log(newIndex.search([1, 2], 1));
// Remove items
console.log(newIndex.search([1, 2], 1)); // { distances: [ 0 ], labels: [ 1 ] }
const removedCount = newIndex.removeIds([0]);
console.log(removedCount);
console.log(newIndex.ntotal());
console.log(newIndex.search([1, 2], 1));
console.log(removedCount); // 1
console.log(newIndex.ntotal()); // 3
console.log(newIndex.search([1, 2], 1)); // { distances: [ 0 ], labels: [ 0 ] }

// IndexFlatIP
const ipIndex = new IndexFlatIP(2);
ipIndex.add([1, 0]);

// Serialize an index
const index_buf = newIndex.toBuffer();
const deserializedIndex = Index.fromBuffer(index_buf);
console.log(deserializedIndex.ntotal()); // 3

// Factory index
const hnswIndex = Index.fromFactory(2, 'HNSW,Flat', MetricType.METRIC_INNER_PRODUCT);
const x = [1, 0, 0, 1];
hnswIndex.train(x);
hnswIndex.add(x);

0 comments on commit 2fabf92

Please sign in to comment.