Improved precision for cosine distance [skip ci]

This commit is contained in:
Andrew Kane
2024-09-23 18:53:23 -07:00
parent 22efa8ec22
commit 044f0c6441
2 changed files with 5 additions and 6 deletions

View File

@@ -911,8 +911,7 @@ CREATE OPERATOR CLASS minivec_ip_ops
CREATE OPERATOR CLASS minivec_cosine_ops CREATE OPERATOR CLASS minivec_cosine_ops
FOR TYPE minivec USING ivfflat AS FOR TYPE minivec USING ivfflat AS
OPERATOR 1 <=> (minivec, minivec) FOR ORDER BY float_ops, OPERATOR 1 <=> (minivec, minivec) FOR ORDER BY float_ops,
FUNCTION 1 minivec_negative_inner_product(minivec, minivec), FUNCTION 1 cosine_distance(minivec, minivec),
FUNCTION 2 l2_norm(minivec),
FUNCTION 3 minivec_spherical_distance(minivec, minivec), FUNCTION 3 minivec_spherical_distance(minivec, minivec),
FUNCTION 4 l2_norm(minivec), FUNCTION 4 l2_norm(minivec),
FUNCTION 5 ivfflat_minivec_support(internal); FUNCTION 5 ivfflat_minivec_support(internal);

View File

@@ -102,7 +102,7 @@ for my $i (0 .. $#operators)
)); ));
# Test approximate results # Test approximate results
if ($operator eq "<->") if ($operator ne "<#>")
{ {
# TODO Fix test (uniform random vectors all have similar inner product) # TODO Fix test (uniform random vectors all have similar inner product)
test_recall(1, 0.33, $operator); test_recall(1, 0.33, $operator);
@@ -112,7 +112,7 @@ for my $i (0 .. $#operators)
# Test probes equals lists # Test probes equals lists
if ($operator eq "<=>") if ($operator eq "<=>")
{ {
test_recall(100, 0.30, $operator); test_recall(100, 0.98, $operator);
} }
else else
{ {
@@ -131,7 +131,7 @@ for my $i (0 .. $#operators)
like($stderr, qr/using \d+ parallel workers/); like($stderr, qr/using \d+ parallel workers/);
# Test approximate results # Test approximate results
if ($operator eq "<->") if ($operator ne "<#>")
{ {
# TODO Fix test (uniform random vectors all have similar inner product) # TODO Fix test (uniform random vectors all have similar inner product)
test_recall(1, 0.33, $operator); test_recall(1, 0.33, $operator);
@@ -141,7 +141,7 @@ for my $i (0 .. $#operators)
# Test probes equals lists # Test probes equals lists
if ($operator eq "<=>") if ($operator eq "<=>")
{ {
test_recall(100, 0.30, $operator); test_recall(100, 0.98, $operator);
} }
else else
{ {