Skip to content

Commit b2f7dad

Browse files
committed
Removed support for L1 distance and Jaccard distance from ivfflat due to non-optimal clustering
1 parent 881fbc1 commit b2f7dad

15 files changed

Lines changed: 13 additions & 170 deletions

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
- Added `halfvec` type
44
- Added `sparsevec` type
55
- Added support for indexing `bit` type
6-
- Added support for indexing L1 distance
6+
- Added support for indexing L1 distance with HNSW
77
- Added `binary_quantize` function
88
- Added `hamming_distance` function
99
- Added `jaccard_distance` function

README.md

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -356,24 +356,12 @@ Cosine distance
356356
CREATE INDEX ON items USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
357357
```
358358

359-
L1 distance - unreleased
360-
361-
```sql
362-
CREATE INDEX ON items USING ivfflat (embedding vector_l1_ops) WITH (lists = 100);
363-
```
364-
365359
Hamming distance - unreleased
366360

367361
```sql
368362
CREATE INDEX ON items USING ivfflat (embedding bit_hamming_ops) WITH (lists = 100);
369363
```
370364

371-
Jaccard distance - unreleased
372-
373-
```sql
374-
CREATE INDEX ON items USING ivfflat (embedding bit_jaccard_ops) WITH (lists = 100);
375-
```
376-
377365
Supported types are:
378366

379367
- `vector` - up to 2,000 dimensions

sql/vector--0.6.2--0.7.0.sql

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,6 @@ CREATE OPERATOR || (
2222
LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_concat
2323
);
2424

25-
CREATE OPERATOR CLASS vector_l1_ops
26-
FOR TYPE vector USING ivfflat AS
27-
OPERATOR 1 <+> (vector, vector) FOR ORDER BY float_ops,
28-
FUNCTION 1 l1_distance(vector, vector),
29-
FUNCTION 3 l1_distance(vector, vector);
30-
3125
CREATE OPERATOR CLASS vector_l1_ops
3226
FOR TYPE vector USING hnsw AS
3327
OPERATOR 1 <+> (vector, vector) FOR ORDER BY float_ops,
@@ -55,12 +49,6 @@ CREATE OPERATOR CLASS bit_hamming_ops
5549
FUNCTION 1 hamming_distance(bit, bit),
5650
FUNCTION 3 hamming_distance(bit, bit);
5751

58-
CREATE OPERATOR CLASS bit_jaccard_ops
59-
FOR TYPE bit USING ivfflat AS
60-
OPERATOR 1 <%> (bit, bit) FOR ORDER BY float_ops,
61-
FUNCTION 1 jaccard_distance(bit, bit),
62-
FUNCTION 3 jaccard_distance(bit, bit);
63-
6452
CREATE OPERATOR CLASS bit_hamming_ops
6553
FOR TYPE bit USING hnsw AS
6654
OPERATOR 1 <~> (bit, bit) FOR ORDER BY float_ops,
@@ -340,12 +328,6 @@ CREATE OPERATOR CLASS halfvec_cosine_ops
340328
FUNCTION 3 halfvec_spherical_distance(halfvec, halfvec),
341329
FUNCTION 4 l2_norm(halfvec);
342330

343-
CREATE OPERATOR CLASS halfvec_l1_ops
344-
FOR TYPE halfvec USING ivfflat AS
345-
OPERATOR 1 <+> (halfvec, halfvec) FOR ORDER BY float_ops,
346-
FUNCTION 1 l1_distance(halfvec, halfvec),
347-
FUNCTION 3 l1_distance(halfvec, halfvec);
348-
349331
CREATE OPERATOR CLASS halfvec_l2_ops
350332
FOR TYPE halfvec USING hnsw AS
351333
OPERATOR 1 <-> (halfvec, halfvec) FOR ORDER BY float_ops,

sql/vector.sql

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -293,12 +293,6 @@ CREATE OPERATOR CLASS vector_cosine_ops
293293
FUNCTION 3 vector_spherical_distance(vector, vector),
294294
FUNCTION 4 vector_norm(vector);
295295

296-
CREATE OPERATOR CLASS vector_l1_ops
297-
FOR TYPE vector USING ivfflat AS
298-
OPERATOR 1 <+> (vector, vector) FOR ORDER BY float_ops,
299-
FUNCTION 1 l1_distance(vector, vector),
300-
FUNCTION 3 l1_distance(vector, vector);
301-
302296
CREATE OPERATOR CLASS vector_l2_ops
303297
FOR TYPE vector USING hnsw AS
304298
OPERATOR 1 <-> (vector, vector) FOR ORDER BY float_ops,
@@ -348,12 +342,6 @@ CREATE OPERATOR CLASS bit_hamming_ops
348342
FUNCTION 1 hamming_distance(bit, bit),
349343
FUNCTION 3 hamming_distance(bit, bit);
350344

351-
CREATE OPERATOR CLASS bit_jaccard_ops
352-
FOR TYPE bit USING ivfflat AS
353-
OPERATOR 1 <%> (bit, bit) FOR ORDER BY float_ops,
354-
FUNCTION 1 jaccard_distance(bit, bit),
355-
FUNCTION 3 jaccard_distance(bit, bit);
356-
357345
CREATE OPERATOR CLASS bit_hamming_ops
358346
FOR TYPE bit USING hnsw AS
359347
OPERATOR 1 <~> (bit, bit) FOR ORDER BY float_ops,
@@ -649,12 +637,6 @@ CREATE OPERATOR CLASS halfvec_cosine_ops
649637
FUNCTION 3 halfvec_spherical_distance(halfvec, halfvec),
650638
FUNCTION 4 l2_norm(halfvec);
651639

652-
CREATE OPERATOR CLASS halfvec_l1_ops
653-
FOR TYPE halfvec USING ivfflat AS
654-
OPERATOR 1 <+> (halfvec, halfvec) FOR ORDER BY float_ops,
655-
FUNCTION 1 l1_distance(halfvec, halfvec),
656-
FUNCTION 3 l1_distance(halfvec, halfvec);
657-
658640
CREATE OPERATOR CLASS halfvec_l2_ops
659641
FOR TYPE halfvec USING hnsw AS
660642
OPERATOR 1 <-> (halfvec, halfvec) FOR ORDER BY float_ops,

test/expected/ivfflat_bit_jaccard.out

Lines changed: 0 additions & 21 deletions
This file was deleted.

test/expected/ivfflat_halfvec_l1.out

Lines changed: 0 additions & 21 deletions
This file was deleted.

test/expected/ivfflat_vector_l1.out

Lines changed: 0 additions & 21 deletions
This file was deleted.

test/sql/ivfflat_bit_jaccard.sql

Lines changed: 0 additions & 12 deletions
This file was deleted.

test/sql/ivfflat_halfvec_l1.sql

Lines changed: 0 additions & 12 deletions
This file was deleted.

test/sql/ivfflat_vector_l1.sql

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)