sentence-transformers-haystack 2.0.0__tar.gz → 2.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/CHANGELOG.md +7 -0
  2. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/PKG-INFO +1 -1
  3. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/pyproject.toml +2 -0
  4. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/embedders/sentence_transformers/embedding_backend/backend.py +28 -1
  5. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/embedders/sentence_transformers/embedding_backend/sparse_backend.py +6 -1
  6. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/embedders/sentence_transformers/sentence_transformers_doc_image_embedder.py +3 -0
  7. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/embedders/sentence_transformers/sentence_transformers_document_embedder.py +3 -0
  8. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/embedders/sentence_transformers/sentence_transformers_sparse_document_embedder.py +3 -0
  9. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/embedders/sentence_transformers/sentence_transformers_sparse_text_embedder.py +3 -0
  10. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/embedders/sentence_transformers/sentence_transformers_text_embedder.py +3 -0
  11. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/rankers/sentence_transformers/sentence_transformers_diversity.py +11 -1
  12. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/rankers/sentence_transformers/sentence_transformers_similarity.py +11 -1
  13. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_sentence_transformers_diversity.py +21 -0
  14. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_sentence_transformers_embedding_backend.py +25 -0
  15. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_sentence_transformers_similarity.py +21 -0
  16. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_sentence_transformers_sparse_embedding_backend.py +14 -0
  17. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/.gitignore +0 -0
  18. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/LICENSE.txt +0 -0
  19. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/README.md +0 -0
  20. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/pydoc/config_docusaurus.yml +0 -0
  21. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/embedders/py.typed +0 -0
  22. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/embedders/sentence_transformers/__init__.py +0 -0
  23. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/embedders/sentence_transformers/embedding_backend/__init__.py +0 -0
  24. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/rankers/py.typed +0 -0
  25. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/src/haystack_integrations/components/rankers/sentence_transformers/__init__.py +0 -0
  26. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/__init__.py +0 -0
  27. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/conftest.py +0 -0
  28. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_files/images/apple.jpg +0 -0
  29. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_files/images/haystack-logo.png +0 -0
  30. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_files/images/image_metadata.png +0 -0
  31. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_files/pdf/sample_pdf_1.pdf +0 -0
  32. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_hybrid_rag_e2e.py +0 -0
  33. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_sentence_transformers_doc_image_embedder.py +0 -0
  34. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_sentence_transformers_document_embedder.py +0 -0
  35. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_sentence_transformers_sparse_document_embedder.py +0 -0
  36. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_sentence_transformers_sparse_text_embedder.py +0 -0
  37. {sentence_transformers_haystack-2.0.0 → sentence_transformers_haystack-2.1.0}/tests/test_sentence_transformers_text_embedder.py +0 -0
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [integrations/sentence_transformers-v2.0.0] - 2026-10-23
4
+
5
+ ### 🚜 Refactor
6
+
7
+ - [**breaking**] SentenceTransformersTextEmbedder - always require quantization_ranges for int8/uint8 precision (#4154)
8
+
9
+
3
10
  ## [integrations/sentence_transformers-v1.0.0] - 2026-10-16
4
11
 
5
12
  ### 🧹 Chores
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sentence-transformers-haystack
3
- Version: 2.0.0
3
+ Version: 2.1.0
4
4
  Summary: Haystack integration for sentence_transformers
5
5
  Project-URL: Documentation, https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/sentence_transformers#readme
6
6
  Project-URL: Issues, https://github.com/deepset-ai/haystack-core-integrations/issues
@@ -57,6 +57,7 @@ dependencies = [
57
57
  "pytest-rerunfailures",
58
58
  "mypy",
59
59
  "pip",
60
+ "onnxruntime",
60
61
  ]
61
62
 
62
63
  [tool.hatch.envs.test.scripts]
@@ -78,6 +79,7 @@ disallow_incomplete_defs = true
78
79
  module = [
79
80
  # these libraries do not ship type stubs
80
81
  "PIL.*",
82
+ "onnxruntime",
81
83
  ]
82
84
  ignore_missing_imports = true
83
85
 
@@ -6,11 +6,36 @@ import json
6
6
  from typing import Any, ClassVar, Literal
7
7
 
8
8
  import numpy as np
9
+ from haystack.lazy_imports import LazyImport
9
10
  from haystack.utils.auth import Secret
10
11
  from PIL.Image import Image
11
12
 
12
13
  from sentence_transformers import SentenceTransformer, quantize_embeddings
13
14
 
15
+ with LazyImport(message="Run 'pip install \"sentence-transformers[onnx]\"'") as onnxruntime_import:
16
+ import onnxruntime as ort
17
+
18
+
19
+ def _resolve_onnx_session_options(model_kwargs: dict[str, Any] | None) -> dict[str, Any] | None:
20
+ """
21
+ Build an `onnxruntime.SessionOptions` object from a `session_options` dict in `model_kwargs`.
22
+
23
+ Each key of the dict is set as an attribute of the `SessionOptions`, e.g. `{"intra_op_num_threads": 1}`.
24
+
25
+ :param model_kwargs: The model kwargs passed to the Sentence Transformers model.
26
+ :returns: A copy of `model_kwargs` with `session_options` replaced by the built `SessionOptions` object, or
27
+ `model_kwargs` itself when it has no `session_options` dict.
28
+ :raises ImportError: If `model_kwargs` has a `session_options` dict and `onnxruntime` is not installed.
29
+ """
30
+ if not model_kwargs or not isinstance(model_kwargs.get("session_options"), dict):
31
+ return model_kwargs
32
+
33
+ onnxruntime_import.check()
34
+ session_options = ort.SessionOptions()
35
+ for name, value in model_kwargs["session_options"].items():
36
+ setattr(session_options, name, value)
37
+ return {**model_kwargs, "session_options": session_options}
38
+
14
39
 
15
40
  class _SentenceTransformersEmbeddingBackendFactory:
16
41
  """
@@ -99,7 +124,9 @@ class _SentenceTransformersEmbeddingBackend:
99
124
  revision=revision,
100
125
  local_files_only=local_files_only,
101
126
  truncate_dim=truncate_dim,
102
- model_kwargs=model_kwargs,
127
+ model_kwargs=_resolve_onnx_session_options(model_kwargs=model_kwargs)
128
+ if backend == "onnx"
129
+ else model_kwargs,
103
130
  # `tokenizer_kwargs` was renamed to `processor_kwargs` in sentence-transformers 5.4.0
104
131
  processor_kwargs=tokenizer_kwargs,
105
132
  config_kwargs=config_kwargs,
@@ -8,6 +8,9 @@ from typing import Any, ClassVar, Literal
8
8
  from haystack.dataclasses.sparse_embedding import SparseEmbedding
9
9
  from haystack.utils.auth import Secret
10
10
 
11
+ from haystack_integrations.components.embedders.sentence_transformers.embedding_backend.backend import (
12
+ _resolve_onnx_session_options,
13
+ )
11
14
  from sentence_transformers import SparseEncoder
12
15
 
13
16
 
@@ -93,7 +96,9 @@ class _SentenceTransformersSparseEncoderEmbeddingBackend:
93
96
  trust_remote_code=trust_remote_code,
94
97
  revision=revision,
95
98
  local_files_only=local_files_only,
96
- model_kwargs=model_kwargs,
99
+ model_kwargs=_resolve_onnx_session_options(model_kwargs=model_kwargs)
100
+ if backend == "onnx"
101
+ else model_kwargs,
97
102
  # `tokenizer_kwargs` was renamed to `processor_kwargs` in sentence-transformers 5.4.0
98
103
  processor_kwargs=tokenizer_kwargs,
99
104
  config_kwargs=config_kwargs,
@@ -113,6 +113,9 @@ class SentenceTransformersDocumentImageEmbedder:
113
113
  :param model_kwargs:
114
114
  Additional keyword arguments for `AutoModelForSequenceClassification.from_pretrained`
115
115
  when loading the model. Refer to specific model documentation for available kwargs.
116
+ With `backend="onnx"`, a `session_options` dict is turned into an `onnxruntime.SessionOptions` with
117
+ those attributes set, for example `{"session_options": {"intra_op_num_threads": 1}}` to limit
118
+ the threads each inference call uses.
116
119
  :param tokenizer_kwargs:
117
120
  Additional keyword arguments forwarded as `processor_kwargs` to the Sentence Transformers model
118
121
  when loading it. Refer to the
@@ -106,6 +106,9 @@ class SentenceTransformersDocumentEmbedder:
106
106
  :param model_kwargs:
107
107
  Additional keyword arguments for `AutoModelForSequenceClassification.from_pretrained`
108
108
  when loading the model. Refer to specific model documentation for available kwargs.
109
+ With `backend="onnx"`, a `session_options` dict is turned into an `onnxruntime.SessionOptions` with
110
+ those attributes set, for example `{"session_options": {"intra_op_num_threads": 1}}` to limit
111
+ the threads each inference call uses.
109
112
  :param tokenizer_kwargs:
110
113
  Additional keyword arguments forwarded as `processor_kwargs` to the Sentence Transformers model
111
114
  when loading it. Refer to the
@@ -94,6 +94,9 @@ class SentenceTransformersSparseDocumentEmbedder:
94
94
  :param model_kwargs:
95
95
  Additional keyword arguments for `AutoModelForSequenceClassification.from_pretrained`
96
96
  when loading the model. Refer to specific model documentation for available kwargs.
97
+ With `backend="onnx"`, a `session_options` dict is turned into an `onnxruntime.SessionOptions` with
98
+ those attributes set, for example `{"session_options": {"intra_op_num_threads": 1}}` to limit
99
+ the threads each inference call uses.
97
100
  :param tokenizer_kwargs:
98
101
  Additional keyword arguments forwarded as `processor_kwargs` to the Sentence Transformers model
99
102
  when loading it. Refer to the
@@ -75,6 +75,9 @@ class SentenceTransformersSparseTextEmbedder:
75
75
  :param model_kwargs:
76
76
  Additional keyword arguments for `AutoModelForSequenceClassification.from_pretrained`
77
77
  when loading the model. Refer to specific model documentation for available kwargs.
78
+ With `backend="onnx"`, a `session_options` dict is turned into an `onnxruntime.SessionOptions` with
79
+ those attributes set, for example `{"session_options": {"intra_op_num_threads": 1}}` to limit
80
+ the threads each inference call uses.
78
81
  :param tokenizer_kwargs:
79
82
  Additional keyword arguments forwarded as `processor_kwargs` to the Sentence Transformers model
80
83
  when loading it. Refer to the
@@ -94,6 +94,9 @@ class SentenceTransformersTextEmbedder:
94
94
  :param model_kwargs:
95
95
  Additional keyword arguments for `AutoModelForSequenceClassification.from_pretrained`
96
96
  when loading the model. Refer to specific model documentation for available kwargs.
97
+ With `backend="onnx"`, a `session_options` dict is turned into an `onnxruntime.SessionOptions` with
98
+ those attributes set, for example `{"session_options": {"intra_op_num_threads": 1}}` to limit
99
+ the threads each inference call uses.
97
100
  :param tokenizer_kwargs:
98
101
  Additional keyword arguments forwarded as `processor_kwargs` to the Sentence Transformers model
99
102
  when loading it. Refer to the
@@ -11,6 +11,9 @@ from haystack.utils import ComponentDevice, Secret
11
11
  from haystack.utils.hf import deserialize_hf_model_kwargs, serialize_hf_model_kwargs
12
12
  from haystack.utils.misc import _deduplicate_documents
13
13
 
14
+ from haystack_integrations.components.embedders.sentence_transformers.embedding_backend.backend import (
15
+ _resolve_onnx_session_options,
16
+ )
14
17
  from sentence_transformers import SentenceTransformer
15
18
 
16
19
 
@@ -162,6 +165,9 @@ class SentenceTransformersDiversityRanker:
162
165
  :param model_kwargs:
163
166
  Additional keyword arguments for `AutoModelForSequenceClassification.from_pretrained`
164
167
  when loading the model. Refer to specific model documentation for available kwargs.
168
+ With `backend="onnx"`, a `session_options` dict is turned into an `onnxruntime.SessionOptions` with
169
+ those attributes set, for example `{"session_options": {"intra_op_num_threads": 1}}` to limit
170
+ the threads each inference call uses.
165
171
  :param tokenizer_kwargs:
166
172
  Additional keyword arguments forwarded as `processor_kwargs` to the Sentence Transformers model
167
173
  when loading it. Refer to the
@@ -206,7 +212,11 @@ class SentenceTransformersDiversityRanker:
206
212
  model_name_or_path=self.model_name_or_path,
207
213
  device=self.device.to_torch_str(),
208
214
  token=self.token.resolve_value() if self.token else None,
209
- model_kwargs=self.model_kwargs,
215
+ model_kwargs=(
216
+ _resolve_onnx_session_options(model_kwargs=self.model_kwargs)
217
+ if self.backend == "onnx"
218
+ else self.model_kwargs
219
+ ),
210
220
  # `tokenizer_kwargs` was renamed to `processor_kwargs` in sentence-transformers 5.4.0
211
221
  processor_kwargs=self.tokenizer_kwargs,
212
222
  config_kwargs=self.config_kwargs,
@@ -12,6 +12,9 @@ from haystack.utils.hf import deserialize_hf_model_kwargs, serialize_hf_model_kw
12
12
  from haystack.utils.misc import _deduplicate_documents
13
13
  from torch.nn import Identity, Sigmoid
14
14
 
15
+ from haystack_integrations.components.embedders.sentence_transformers.embedding_backend.backend import (
16
+ _resolve_onnx_session_options,
17
+ )
15
18
  from sentence_transformers import CrossEncoder
16
19
 
17
20
 
@@ -97,6 +100,9 @@ class SentenceTransformersSimilarityRanker:
97
100
  :param model_kwargs:
98
101
  Additional keyword arguments for `AutoModelForSequenceClassification.from_pretrained`
99
102
  when loading the model. Refer to specific model documentation for available kwargs.
103
+ With `backend="onnx"`, a `session_options` dict is turned into an `onnxruntime.SessionOptions` with
104
+ those attributes set, for example `{"session_options": {"intra_op_num_threads": 1}}` to limit
105
+ the threads each inference call uses.
100
106
  :param tokenizer_kwargs:
101
107
  Additional keyword arguments forwarded as `processor_kwargs` to the Sentence Transformers model
102
108
  when loading it. Refer to the
@@ -155,7 +161,11 @@ class SentenceTransformersSimilarityRanker:
155
161
  device=self.device.to_torch_str(),
156
162
  token=self.token.resolve_value() if self.token else None,
157
163
  trust_remote_code=self.trust_remote_code,
158
- model_kwargs=self.model_kwargs,
164
+ model_kwargs=(
165
+ _resolve_onnx_session_options(model_kwargs=self.model_kwargs)
166
+ if self.backend == "onnx"
167
+ else self.model_kwargs
168
+ ),
159
169
  # `tokenizer_kwargs` was renamed to `processor_kwargs` in sentence-transformers 5.4.0
160
170
  processor_kwargs=self.tokenizer_kwargs,
161
171
  config_kwargs=self.config_kwargs,
@@ -4,6 +4,7 @@
4
4
 
5
5
  from unittest.mock import MagicMock, call, patch
6
6
 
7
+ import onnxruntime as ort
7
8
  import pytest
8
9
  import torch
9
10
  from haystack import Document, Pipeline
@@ -741,6 +742,26 @@ class TestSentenceTransformersDiversityRanker:
741
742
  backend="onnx",
742
743
  )
743
744
 
745
+ @patch(
746
+ "haystack_integrations.components.rankers.sentence_transformers.sentence_transformers_diversity.SentenceTransformer"
747
+ )
748
+ def test_from_dict_warm_up_onnx_session_options(self, mocked_sentence_transformer):
749
+ ranker = SentenceTransformersDiversityRanker.from_dict(
750
+ {
751
+ "type": "haystack_integrations.components.rankers.sentence_transformers.sentence_transformers_diversity.SentenceTransformersDiversityRanker",
752
+ "init_parameters": {
753
+ "backend": "onnx",
754
+ "model_kwargs": {"session_options": {"intra_op_num_threads": 1}},
755
+ },
756
+ }
757
+ )
758
+ ranker.warm_up()
759
+
760
+ session_options = mocked_sentence_transformer.call_args.kwargs["model_kwargs"]["session_options"]
761
+ assert isinstance(session_options, ort.SessionOptions)
762
+ assert session_options.intra_op_num_threads == 1
763
+ assert ranker.to_dict()["init_parameters"]["model_kwargs"]["session_options"] == {"intra_op_num_threads": 1}
764
+
744
765
  @patch(
745
766
  "haystack_integrations.components.rankers.sentence_transformers.sentence_transformers_diversity.SentenceTransformer"
746
767
  )
@@ -5,9 +5,11 @@
5
5
  from unittest.mock import patch
6
6
 
7
7
  import numpy as np
8
+ import onnxruntime as ort
8
9
  from haystack.utils.auth import Secret
9
10
 
10
11
  from haystack_integrations.components.embedders.sentence_transformers.embedding_backend.backend import (
12
+ _resolve_onnx_session_options,
11
13
  _SentenceTransformersEmbeddingBackendFactory,
12
14
  )
13
15
 
@@ -58,6 +60,29 @@ def test_model_initialization(mock_sentence_transformer):
58
60
  )
59
61
 
60
62
 
63
+ def test_resolve_onnx_session_options():
64
+ model_kwargs = {"file_name": "onnx/model.onnx", "session_options": {"intra_op_num_threads": 1}}
65
+
66
+ resolved = _resolve_onnx_session_options(model_kwargs=model_kwargs)
67
+
68
+ assert isinstance(resolved["session_options"], ort.SessionOptions)
69
+ assert resolved["session_options"].intra_op_num_threads == 1
70
+ assert resolved["file_name"] == "onnx/model.onnx"
71
+ # the component's own model_kwargs stay serializable
72
+ assert model_kwargs["session_options"] == {"intra_op_num_threads": 1}
73
+
74
+
75
+ @patch("haystack_integrations.components.embedders.sentence_transformers.embedding_backend.backend.SentenceTransformer")
76
+ def test_model_initialization_onnx_session_options(mock_sentence_transformer):
77
+ _SentenceTransformersEmbeddingBackendFactory.get_embedding_backend(
78
+ model="onnx_session_model", model_kwargs={"session_options": {"intra_op_num_threads": 2}}, backend="onnx"
79
+ )
80
+
81
+ session_options = mock_sentence_transformer.call_args.kwargs["model_kwargs"]["session_options"]
82
+ assert isinstance(session_options, ort.SessionOptions)
83
+ assert session_options.intra_op_num_threads == 2
84
+
85
+
61
86
  @patch("haystack_integrations.components.embedders.sentence_transformers.embedding_backend.backend.SentenceTransformer")
62
87
  def test_embedding_function_with_kwargs(mock_sentence_transformer):
63
88
  embedding_backend = _SentenceTransformersEmbeddingBackendFactory.get_embedding_backend(model="model")
@@ -5,6 +5,7 @@
5
5
  from unittest.mock import MagicMock, patch
6
6
 
7
7
  import numpy as np
8
+ import onnxruntime as ort
8
9
  import pytest
9
10
  import torch
10
11
  from haystack import Document
@@ -68,6 +69,26 @@ class TestSentenceTransformersSimilarityRanker:
68
69
  backend="onnx",
69
70
  )
70
71
 
72
+ @patch(
73
+ "haystack_integrations.components.rankers.sentence_transformers.sentence_transformers_similarity.CrossEncoder"
74
+ )
75
+ def test_from_dict_warm_up_onnx_session_options(self, mocked_cross_encoder):
76
+ ranker = SentenceTransformersSimilarityRanker.from_dict(
77
+ {
78
+ "type": "haystack_integrations.components.rankers.sentence_transformers.sentence_transformers_similarity.SentenceTransformersSimilarityRanker",
79
+ "init_parameters": {
80
+ "backend": "onnx",
81
+ "model_kwargs": {"session_options": {"intra_op_num_threads": 1}},
82
+ },
83
+ }
84
+ )
85
+ ranker.warm_up()
86
+
87
+ session_options = mocked_cross_encoder.call_args.kwargs["model_kwargs"]["session_options"]
88
+ assert isinstance(session_options, ort.SessionOptions)
89
+ assert session_options.intra_op_num_threads == 1
90
+ assert ranker.to_dict()["init_parameters"]["model_kwargs"]["session_options"] == {"intra_op_num_threads": 1}
91
+
71
92
  @patch(
72
93
  "haystack_integrations.components.rankers.sentence_transformers.sentence_transformers_similarity.CrossEncoder"
73
94
  )
@@ -4,6 +4,7 @@
4
4
 
5
5
  from unittest.mock import patch
6
6
 
7
+ import onnxruntime as ort
7
8
  import pytest
8
9
  import torch
9
10
  from haystack.dataclasses.sparse_embedding import SparseEmbedding
@@ -62,6 +63,19 @@ def test_sparse_model_initialization(mock_sparse_encoder):
62
63
  )
63
64
 
64
65
 
66
+ @patch(
67
+ "haystack_integrations.components.embedders.sentence_transformers.embedding_backend.sparse_backend.SparseEncoder"
68
+ )
69
+ def test_sparse_model_initialization_onnx_session_options(mock_sparse_encoder):
70
+ _SentenceTransformersSparseEmbeddingBackendFactory.get_embedding_backend(
71
+ model="onnx_session_model", model_kwargs={"session_options": {"intra_op_num_threads": 2}}, backend="onnx"
72
+ )
73
+
74
+ session_options = mock_sparse_encoder.call_args.kwargs["model_kwargs"]["session_options"]
75
+ assert isinstance(session_options, ort.SessionOptions)
76
+ assert session_options.intra_op_num_threads == 2
77
+
78
+
65
79
  @patch(
66
80
  "haystack_integrations.components.embedders.sentence_transformers.embedding_backend.sparse_backend.SparseEncoder"
67
81
  )