23
23
final class InMemoryStoreTest extends TestCase
24
24
{
25
25
#[Test]
26
- public function storeCanSearchUsingCosineSimilarity (): void
26
+ public function storeCanSearchUsingCosineDistance (): void
27
27
{
28
28
$ store = new InMemoryStore ();
29
29
$ store ->add (
@@ -32,19 +32,44 @@ public function storeCanSearchUsingCosineSimilarity(): void
32
32
new VectorDocument (Uuid::v4 (), new Vector ([0.3 , 0.7 , 0.1 ])),
33
33
);
34
34
35
- self ::assertCount (3 , $ store ->query (new Vector ([0.0 , 0.1 , 0.6 ])));
35
+ $ result = $ store ->query (new Vector ([0.0 , 0.1 , 0.6 ]));
36
+ self ::assertCount (3 , $ result );
37
+ self ::assertSame ([0.1 , 0.1 , 0.5 ], $ result [0 ]->vector ->getData ());
36
38
37
39
$ store ->add (
38
40
new VectorDocument (Uuid::v4 (), new Vector ([0.1 , 0.1 , 0.5 ])),
39
41
new VectorDocument (Uuid::v4 (), new Vector ([0.7 , -0.3 , 0.0 ])),
40
42
new VectorDocument (Uuid::v4 (), new Vector ([0.3 , 0.7 , 0.1 ])),
41
43
);
42
44
43
- self ::assertCount (6 , $ store ->query (new Vector ([0.0 , 0.1 , 0.6 ])));
45
+ $ result = $ store ->query (new Vector ([0.0 , 0.1 , 0.6 ]));
46
+ self ::assertCount (6 , $ result );
47
+ self ::assertSame ([0.1 , 0.1 , 0.5 ], $ result [0 ]->vector ->getData ());
44
48
}
45
49
46
50
#[Test]
47
- public function storeCanSearchUsingCosineSimilarityWithMaxItems (): void
51
+ public function storeCanSearchUsingCosineDistanceAndReturnCorrectOrder (): void
52
+ {
53
+ $ store = new InMemoryStore ();
54
+ $ store ->add (
55
+ new VectorDocument (Uuid::v4 (), new Vector ([0.1 , 0.1 , 0.5 ])),
56
+ new VectorDocument (Uuid::v4 (), new Vector ([0.7 , -0.3 , 0.0 ])),
57
+ new VectorDocument (Uuid::v4 (), new Vector ([0.3 , 0.7 , 0.1 ])),
58
+ new VectorDocument (Uuid::v4 (), new Vector ([0.3 , 0.1 , 0.6 ])),
59
+ new VectorDocument (Uuid::v4 (), new Vector ([0.0 , 0.1 , 0.6 ])),
60
+ );
61
+
62
+ $ result = $ store ->query (new Vector ([0.0 , 0.1 , 0.6 ]));
63
+ self ::assertCount (5 , $ result );
64
+ self ::assertSame ([0.0 , 0.1 , 0.6 ], $ result [0 ]->vector ->getData ());
65
+ self ::assertSame ([0.1 , 0.1 , 0.5 ], $ result [1 ]->vector ->getData ());
66
+ self ::assertSame ([0.3 , 0.1 , 0.6 ], $ result [2 ]->vector ->getData ());
67
+ self ::assertSame ([0.3 , 0.7 , 0.1 ], $ result [3 ]->vector ->getData ());
68
+ self ::assertSame ([0.7 , -0.3 , 0.0 ], $ result [4 ]->vector ->getData ());
69
+ }
70
+
71
+ #[Test]
72
+ public function storeCanSearchUsingCosineDistanceWithMaxItems (): void
48
73
{
49
74
$ store = new InMemoryStore ();
50
75
$ store ->add (
0 commit comments