Skip to content

Commit 567f800

Browse files
committed
tests: add fixture for composite embeds, test
1 parent c71b7fe commit 567f800

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

tests/conftest.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,3 +274,20 @@ def new_embedders():
274274
"default": UserProvidedEmbedder(dimensions=1).model_dump(by_alias=True),
275275
"open_ai": OpenAiEmbedder().model_dump(by_alias=True),
276276
}
277+
278+
279+
@fixture
280+
def enable_composite_embedders():
281+
requests.patch(
282+
f"{common.BASE_URL}/experimental-features",
283+
headers={"Authorization": f"Bearer {common.MASTER_KEY}"},
284+
json={"compositeEmbedders": True},
285+
timeout=10,
286+
)
287+
yield
288+
requests.patch(
289+
f"{common.BASE_URL}/experimental-features",
290+
headers={"Authorization": f"Bearer {common.MASTER_KEY}"},
291+
json={"compositeEmbedders": False},
292+
timeout=10,
293+
)

tests/settings/test_settings_embedders.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# pylint: disable=redefined-outer-name
22

3-
from meilisearch.models.index import OpenAiEmbedder, UserProvidedEmbedder
3+
from meilisearch.models.index import CompositeEmbedder, HuggingFaceEmbedder, OpenAiEmbedder, UserProvidedEmbedder
4+
import pytest
45

56

67
def test_get_default_embedders(empty_index):
@@ -42,3 +43,30 @@ def test_reset_embedders(new_embedders, empty_index):
4243
assert isinstance(response_get.embedders["open_ai"], OpenAiEmbedder)
4344
response_last = index.get_embedders()
4445
assert response_last is None
46+
47+
48+
@pytest.mark.usefixtures("enable_composite_embedders")
49+
def test_composite_embedders_configurable(empty_index):
50+
"""Tests composite embedders."""
51+
index = empty_index()
52+
53+
hf_model = HuggingFaceEmbedder().model_dump(by_alias=True, exclude_none=True)
54+
55+
# create composite embedder
56+
composite_spec = {
57+
"default": {
58+
"source": "composite",
59+
"searchEmbedder": hf_model,
60+
"indexingEmbedder": hf_model,
61+
}
62+
}
63+
64+
response_update = index.update_embedders(composite_spec)
65+
update = index.wait_for_task(response_update.task_uid)
66+
response_get = index.get_embedders()
67+
assert update.status == "succeeded"
68+
69+
embedder = response_get.embedders["default"]
70+
assert isinstance(embedder, CompositeEmbedder)
71+
assert isinstance(embedder.search_embedder, HuggingFaceEmbedder)
72+
assert isinstance(embedder.indexing_embedder, HuggingFaceEmbedder)

0 commit comments

Comments
 (0)