feat(oss): port v3 pipeline with hybrid search, entity extraction, and additive scoring (#4805)
Co-authored-by: Soumil Rathi <soumilrathi@gmail.com> Co-authored-by: Saket Aryan <saketaryan2002@gmail.com> Co-authored-by: chaithanyak42 <chaithanya.kumar42a@gmail.com> Co-authored-by: kartik-mem0 <kartik.labhshetwar@mem0.ai>
This commit is contained in:
co-authored by
Soumil Rathi
Saket Aryan
chaithanyak42
kartik-mem0
parent
57f944e18a
commit
a488e19044
@@ -42,9 +42,12 @@ def test_initalize_create_col(mongo_vector_fixture):
|
||||
mock_collection.insert_one.assert_called_once_with({"_id": 0, "placeholder": True})
|
||||
mock_collection.delete_one.assert_called_once_with({"_id": 0})
|
||||
assert mongo_vector.index_name == "test_collection_vector_index"
|
||||
mock_collection.list_search_indexes.assert_called_once_with(name="test_collection_vector_index")
|
||||
mock_collection.create_search_index.assert_called_once()
|
||||
args, _ = mock_collection.create_search_index.call_args
|
||||
mock_collection.list_search_indexes.assert_any_call(name="test_collection_vector_index")
|
||||
mock_collection.list_search_indexes.assert_any_call(name="test_collection_text_search_index")
|
||||
assert mock_collection.list_search_indexes.call_count == 2
|
||||
# Two indexes created: vector search + text search
|
||||
assert mock_collection.create_search_index.call_count == 2
|
||||
args, _ = mock_collection.create_search_index.call_args_list[0]
|
||||
search_index_model = args[0].document
|
||||
assert search_index_model == {
|
||||
"name": "test_collection_vector_index",
|
||||
|
||||
@@ -4,7 +4,7 @@ import unittest
|
||||
import uuid
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from qdrant_client import QdrantClient
|
||||
from qdrant_client import QdrantClient, models
|
||||
from qdrant_client.models import (
|
||||
DatetimeRange,
|
||||
Distance,
|
||||
@@ -18,6 +18,7 @@ from qdrant_client.models import (
|
||||
PointStruct,
|
||||
PointVectors,
|
||||
Range,
|
||||
SparseVectorParams,
|
||||
VectorParams,
|
||||
)
|
||||
|
||||
@@ -59,8 +60,14 @@ class TestQdrant(unittest.TestCase):
|
||||
|
||||
expected_config = VectorParams(size=128, distance=Distance.COSINE, on_disk=True)
|
||||
|
||||
expected_sparse_config = {
|
||||
"bm25": SparseVectorParams(modifier=models.Modifier.IDF),
|
||||
}
|
||||
|
||||
self.client_mock.create_collection.assert_called_with(
|
||||
collection_name="test_collection", vectors_config=expected_config
|
||||
collection_name="test_collection",
|
||||
vectors_config=expected_config,
|
||||
sparse_vectors_config=expected_sparse_config,
|
||||
)
|
||||
|
||||
def test_insert(self):
|
||||
@@ -231,7 +238,9 @@ class TestQdrant(unittest.TestCase):
|
||||
self.client_mock.upsert.assert_called_once()
|
||||
point = self.client_mock.upsert.call_args[1]["points"][0]
|
||||
self.assertEqual(point.id, vector_id)
|
||||
self.assertEqual(point.vector, updated_vector)
|
||||
# v3 uses named vectors: dense vector stored under "" key
|
||||
self.assertIn("", point.vector)
|
||||
self.assertEqual(point.vector[""], updated_vector)
|
||||
self.assertEqual(point.payload, updated_payload)
|
||||
|
||||
def test_update_with_none_vector_uses_set_payload(self):
|
||||
|
||||
Reference in New Issue
Block a user