Skip to content

Commit cfbba46

Browse files
committed
RDBC-889 Tests for different embedding types
1 parent 22c1a2e commit cfbba46

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

ravendb/tests/dotnet_migrated_tests/test_ravenDB_22076.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from ravendb.documents.indexes.vector.embedding import VectorEmbeddingType
77
from ravendb.documents.indexes.vector.options import VectorOptions
88
from ravendb.documents.operations.server_misc import ToggleDatabasesStateOperation
9+
from ravendb.infrastructure.orders import Product
910
from ravendb.tests.test_base import TestBase
1011

1112

@@ -210,3 +211,78 @@ def test_auto_index_creation_with_exact_search(self):
210211

211212
self.assertEqual(1, len(index_definitions))
212213
self.assertEqual("Auto/Dtoes/ByVector.search(embedding_sinlges)", index_definitions[0].name)
214+
215+
def test_auto_index_creation_with_exact_search_quantized_binary(self):
216+
with self.store.open_session() as session:
217+
dto1 = Dto(embedding_binary=[0, 1, 0])
218+
dto2 = Dto(embedding_binary=[0, 0, 1])
219+
queried_embedding = [1, 1, 0]
220+
session.store(dto1)
221+
session.store(dto2)
222+
session.save_changes()
223+
224+
results = list(
225+
session.query(object_type=Dto)
226+
.vector_search_i1("embedding_binary", queried_embedding, is_exact=True)
227+
.order_by_score()
228+
)
229+
230+
self.assertEqual(2, len(results))
231+
self.assertEqual([0, 1, 0], results[0].embedding_binary)
232+
233+
index_definitions = self.store.maintenance.send(GetIndexesOperation(0, 10))
234+
235+
self.assertEqual(1, len(index_definitions))
236+
self.assertEqual("Auto/Dtoes/ByVector.search(embedding.i1(embedding_binary))", index_definitions[0].name)
237+
238+
def test_auto_index_creation_with_exact_search_quantized_int8(self):
239+
with self.store.open_session() as session:
240+
dto1 = Dto(embedding_sbytes=[64, -127, 0, 0, -128, 63])
241+
dto2 = Dto(embedding_sbytes=[91, 127, 51, 51, 51, 63])
242+
queried_embedding = [78, 0, 43, 43, 0, 63]
243+
session.store(dto1)
244+
session.store(dto2)
245+
session.save_changes()
246+
247+
results = list(
248+
session.query(object_type=Dto)
249+
.vector_search_i8("embedding_sbytes", queried_embedding, minimum_similarity=0)
250+
.order_by_score()
251+
)
252+
253+
self.assertEqual(2, len(results))
254+
self.assertEqual([91, 127, 51, 51, 51, 63], results[0].embedding_sbytes)
255+
256+
index_definitions = self.store.maintenance.send(GetIndexesOperation(0, 10))
257+
258+
self.assertEqual(1, len(index_definitions))
259+
self.assertEqual("Auto/Dtoes/ByVector.search(embedding.i8(embedding_sbytes))", index_definitions[0].name)
260+
261+
def test_auto_index_creation_with_exact_search_text(self):
262+
with self.store.open_session() as session:
263+
session.store(Product(name="Bicycle"))
264+
session.store(Product(name="Paddle"))
265+
session.store(Product(name="Sea"))
266+
session.store(Product(name="Sailors"))
267+
session.store(Product(name="Oblivion"))
268+
session.save_changes()
269+
270+
results = list(session.query(object_type=Product).vector_search_text("name", "sea").order_by_score())
271+
self.assertEqual(3, len(results))
272+
self.assertEqual("Sea", results[0].name)
273+
self.assertEqual("Sailors", results[1].name)
274+
self.assertEqual("Paddle", results[2].name)
275+
276+
session.store(Product(name="Scott Steiner"))
277+
session.save_changes()
278+
279+
results = list(
280+
session.query(object_type=Product)
281+
.vector_search_text("name", "sea", minimum_similarity=0.75)
282+
.order_by_score()
283+
)
284+
self.assertEqual(4, len(results))
285+
self.assertEqual("Sea", results[0].name)
286+
self.assertEqual("Sailors", results[1].name)
287+
self.assertEqual("Paddle", results[2].name)
288+
self.assertEqual("Scott Steiner", results[3].name)

0 commit comments

Comments
 (0)