sentence-transformers-haystack 0.2.0__tar.gz → 2.0.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.
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/CHANGELOG.md +18 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/PKG-INFO +2 -3
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/pyproject.toml +1 -2
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/embedders/sentence_transformers/sentence_transformers_text_embedder.py +9 -11
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_sentence_transformers_text_embedder.py +8 -24
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/.gitignore +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/LICENSE.txt +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/README.md +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/pydoc/config_docusaurus.yml +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/embedders/py.typed +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/embedders/sentence_transformers/__init__.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/embedders/sentence_transformers/embedding_backend/__init__.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/embedders/sentence_transformers/embedding_backend/backend.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/embedders/sentence_transformers/embedding_backend/sparse_backend.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/embedders/sentence_transformers/sentence_transformers_doc_image_embedder.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/embedders/sentence_transformers/sentence_transformers_document_embedder.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/embedders/sentence_transformers/sentence_transformers_sparse_document_embedder.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/embedders/sentence_transformers/sentence_transformers_sparse_text_embedder.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/rankers/py.typed +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/rankers/sentence_transformers/__init__.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/rankers/sentence_transformers/sentence_transformers_diversity.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/src/haystack_integrations/components/rankers/sentence_transformers/sentence_transformers_similarity.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/__init__.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/conftest.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_files/images/apple.jpg +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_files/images/haystack-logo.png +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_files/images/image_metadata.png +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_files/pdf/sample_pdf_1.pdf +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_hybrid_rag_e2e.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_sentence_transformers_diversity.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_sentence_transformers_doc_image_embedder.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_sentence_transformers_document_embedder.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_sentence_transformers_embedding_backend.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_sentence_transformers_similarity.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_sentence_transformers_sparse_document_embedder.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_sentence_transformers_sparse_embedding_backend.py +0 -0
- {sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/test_sentence_transformers_sparse_text_embedder.py +0 -0
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [integrations/sentence_transformers-v1.0.0] - 2026-10-16
|
|
4
|
+
|
|
5
|
+
### 🧹 Chores
|
|
6
|
+
|
|
7
|
+
- [**breaking**] Drop Python 3.10 support (#4105)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## [integrations/sentence_transformers-v0.2.0] - 2026-10-01
|
|
11
|
+
|
|
12
|
+
### 🐛 Bug Fixes
|
|
13
|
+
|
|
14
|
+
- Sentence Transformers - raise sentence-transformers floor to >=5.6.0 (CVE-2026-68770) (#4036)
|
|
15
|
+
|
|
16
|
+
### 📚 Documentation
|
|
17
|
+
|
|
18
|
+
- Clarify tokenizer_kwargs forwarding in Sentence Transformers components (#4012)
|
|
19
|
+
|
|
20
|
+
|
|
3
21
|
## [integrations/sentence_transformers-v0.1.2] - 2026-09-23
|
|
4
22
|
|
|
5
23
|
### 🐛 Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sentence-transformers-haystack
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.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
|
|
@@ -12,14 +12,13 @@ Keywords: embeddings,haystack,reranking,sentence-transformers
|
|
|
12
12
|
Classifier: Development Status :: 4 - Beta
|
|
13
13
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
14
14
|
Classifier: Programming Language :: Python
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.14
|
|
20
19
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
21
20
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
22
|
-
Requires-Python: >=3.
|
|
21
|
+
Requires-Python: >=3.11
|
|
23
22
|
Requires-Dist: haystack-ai>=2.24.0
|
|
24
23
|
Requires-Dist: pillow>=11.3.0
|
|
25
24
|
Requires-Dist: pypdfium2>=4.0.0
|
{sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/pyproject.toml
RENAMED
|
@@ -7,7 +7,7 @@ name = "sentence-transformers-haystack"
|
|
|
7
7
|
dynamic = ["version"]
|
|
8
8
|
description = "Haystack integration for sentence_transformers"
|
|
9
9
|
readme = "README.md"
|
|
10
|
-
requires-python = ">=3.
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
11
|
license = "Apache-2.0"
|
|
12
12
|
keywords = ["haystack", "sentence-transformers", "embeddings", "reranking"]
|
|
13
13
|
authors = [{ name = "deepset GmbH", email = "info@deepset.ai" }]
|
|
@@ -15,7 +15,6 @@ classifiers = [
|
|
|
15
15
|
"License :: OSI Approved :: Apache Software License",
|
|
16
16
|
"Development Status :: 4 - Beta",
|
|
17
17
|
"Programming Language :: Python",
|
|
18
|
-
"Programming Language :: Python :: 3.10",
|
|
19
18
|
"Programming Language :: Python :: 3.11",
|
|
20
19
|
"Programming Language :: Python :: 3.12",
|
|
21
20
|
"Programming Language :: Python :: 3.13",
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
from typing import Any, Literal
|
|
6
6
|
|
|
7
|
-
from haystack import component, default_from_dict, default_to_dict
|
|
7
|
+
from haystack import component, default_from_dict, default_to_dict
|
|
8
8
|
from haystack.utils import ComponentDevice, Secret
|
|
9
9
|
from haystack.utils.hf import deserialize_hf_model_kwargs, serialize_hf_model_kwargs
|
|
10
10
|
|
|
@@ -13,8 +13,6 @@ from haystack_integrations.components.embedders.sentence_transformers.embedding_
|
|
|
13
13
|
_SentenceTransformersEmbeddingBackendFactory,
|
|
14
14
|
)
|
|
15
15
|
|
|
16
|
-
logger = logging.getLogger(__name__)
|
|
17
|
-
|
|
18
16
|
|
|
19
17
|
@component
|
|
20
18
|
class SentenceTransformersTextEmbedder:
|
|
@@ -122,9 +120,10 @@ class SentenceTransformersTextEmbedder:
|
|
|
122
120
|
:param quantization_ranges:
|
|
123
121
|
Calibration ranges to use when `precision` is "int8" or "uint8", with shape `(2, embedding_dim)`:
|
|
124
122
|
minimum values in the first row and maximum values in the second.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
123
|
+
Required for "int8" and "uint8" because ranges cannot be inferred from a single text.
|
|
124
|
+
Compute ranges from a representative sample of embeddings.
|
|
125
|
+
:raises ValueError:
|
|
126
|
+
`precision` is "int8" or "uint8" and `quantization_ranges` is not provided.
|
|
128
127
|
"""
|
|
129
128
|
|
|
130
129
|
self.model = model
|
|
@@ -148,12 +147,11 @@ class SentenceTransformersTextEmbedder:
|
|
|
148
147
|
self.backend = backend
|
|
149
148
|
self.quantization_ranges = quantization_ranges
|
|
150
149
|
if precision in ("int8", "uint8") and quantization_ranges is None:
|
|
151
|
-
|
|
152
|
-
"
|
|
153
|
-
"
|
|
154
|
-
"Pass `quantization_ranges` computed from a representative sample of embeddings.",
|
|
155
|
-
precision=precision,
|
|
150
|
+
msg = (
|
|
151
|
+
f"Precision '{precision}' requires `quantization_ranges` computed from "
|
|
152
|
+
"a representative sample of embeddings."
|
|
156
153
|
)
|
|
154
|
+
raise ValueError(msg)
|
|
157
155
|
|
|
158
156
|
def _get_telemetry_data(self) -> dict[str, Any]:
|
|
159
157
|
"""
|
|
@@ -64,10 +64,10 @@ class TestSentenceTransformersTextEmbedder:
|
|
|
64
64
|
assert embedder.precision == "int8"
|
|
65
65
|
assert embedder.quantization_ranges == [[-1.0, -1.0], [1.0, 1.0]]
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
@pytest.mark.parametrize("precision", ["int8", "uint8"])
|
|
68
|
+
def test_init_quantized_precision_without_ranges_raises(self, precision):
|
|
69
|
+
with pytest.raises(ValueError, match="requires `quantization_ranges`"):
|
|
70
|
+
SentenceTransformersTextEmbedder(model="model", precision=precision)
|
|
71
71
|
|
|
72
72
|
def test_to_dict(self):
|
|
73
73
|
component = SentenceTransformersTextEmbedder(model="model", device=ComponentDevice.from_str("cpu"))
|
|
@@ -114,6 +114,7 @@ class TestSentenceTransformersTextEmbedder:
|
|
|
114
114
|
tokenizer_kwargs={"model_max_length": 512},
|
|
115
115
|
config_kwargs={"use_memory_efficient_attention": False},
|
|
116
116
|
precision="int8",
|
|
117
|
+
quantization_ranges=[[-1.0] * 256, [1.0] * 256],
|
|
117
118
|
encode_kwargs={"task": "clustering"},
|
|
118
119
|
)
|
|
119
120
|
data = component.to_dict()
|
|
@@ -138,7 +139,7 @@ class TestSentenceTransformersTextEmbedder:
|
|
|
138
139
|
"precision": "int8",
|
|
139
140
|
"encode_kwargs": {"task": "clustering"},
|
|
140
141
|
"backend": "torch",
|
|
141
|
-
"quantization_ranges":
|
|
142
|
+
"quantization_ranges": [[-1.0] * 256, [1.0] * 256],
|
|
142
143
|
},
|
|
143
144
|
}
|
|
144
145
|
|
|
@@ -223,6 +224,7 @@ class TestSentenceTransformersTextEmbedder:
|
|
|
223
224
|
"local_files_only": False,
|
|
224
225
|
"truncate_dim": 256,
|
|
225
226
|
"precision": "int8",
|
|
227
|
+
"quantization_ranges": [[-1.0] * 256, [1.0] * 256],
|
|
226
228
|
},
|
|
227
229
|
}
|
|
228
230
|
component = SentenceTransformersTextEmbedder.from_dict(data)
|
|
@@ -239,6 +241,7 @@ class TestSentenceTransformersTextEmbedder:
|
|
|
239
241
|
assert component.local_files_only is False
|
|
240
242
|
assert component.truncate_dim == 256
|
|
241
243
|
assert component.precision == "int8"
|
|
244
|
+
assert component.quantization_ranges == [[-1.0] * 256, [1.0] * 256]
|
|
242
245
|
|
|
243
246
|
@patch(
|
|
244
247
|
"haystack_integrations.components.embedders.sentence_transformers.sentence_transformers_text_embedder._SentenceTransformersEmbeddingBackendFactory"
|
|
@@ -432,24 +435,6 @@ class TestSentenceTransformersTextEmbedder:
|
|
|
432
435
|
# without truncation, the embedding has 128 length
|
|
433
436
|
assert len(embedding_trunc) == 64
|
|
434
437
|
|
|
435
|
-
@pytest.mark.integration
|
|
436
|
-
def test_run_quantization(self, del_hf_env_vars_if_empty):
|
|
437
|
-
"""
|
|
438
|
-
sentence-transformers-testing/stsb-bert-tiny-safetensors maps sentences & paragraphs to a 128 dimensional dense
|
|
439
|
-
vector space
|
|
440
|
-
"""
|
|
441
|
-
checkpoint = "sentence-transformers-testing/stsb-bert-tiny-safetensors"
|
|
442
|
-
text = "a nice text to embed"
|
|
443
|
-
|
|
444
|
-
embedder_def = SentenceTransformersTextEmbedder(
|
|
445
|
-
model=checkpoint, precision="int8", device=ComponentDevice.from_str("cpu")
|
|
446
|
-
)
|
|
447
|
-
result_def = embedder_def.run(text=text)
|
|
448
|
-
embedding_def = result_def["embedding"]
|
|
449
|
-
|
|
450
|
-
assert len(embedding_def) == 128
|
|
451
|
-
assert all(isinstance(el, int) for el in embedding_def)
|
|
452
|
-
|
|
453
438
|
@pytest.mark.integration
|
|
454
439
|
def test_run_quantization_with_ranges(self, del_hf_env_vars_if_empty):
|
|
455
440
|
"""
|
|
@@ -466,5 +451,4 @@ class TestSentenceTransformersTextEmbedder:
|
|
|
466
451
|
|
|
467
452
|
assert len(embedding) == 128
|
|
468
453
|
assert all(isinstance(el, int) for el in embedding)
|
|
469
|
-
# without explicit ranges, a single text produces a degenerate all-equal embedding
|
|
470
454
|
assert len(set(embedding)) > 1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/__init__.py
RENAMED
|
File without changes
|
{sentence_transformers_haystack-0.2.0 → sentence_transformers_haystack-2.0.0}/tests/conftest.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|