ef.segmenter_adapters¶
The segmenter dependency-injection seam and the imbed registry bridge.
as_segmenter() is the single place ef coerces a user-supplied
segmenter argument into a well-behaved Segmenter — the
exact mirror of as_embedder() for the embed layer.
imbed_segmenter() builds a segmenter from imbed’s segmenter registry
(imbed.components.segmentation); imbed is imported lazily, so importing
this module costs nothing extra and ef works without imbed installed.
Example — the DI seam in action (no imbed needed):
>>> from ef.segmenters import Segmenter, RecursiveCharacterSegmenter
>>> seg = as_segmenter('recursive', chunk_size=256)
>>> isinstance(seg, RecursiveCharacterSegmenter)
True
>>> as_segmenter(seg) is seg # a ready segmenter passes straight through
True
>>> custom = as_segmenter(lambda text: text.split('|'))
>>> [s['text'] for s in custom('a|b|c')]
['a', 'b', 'c']
Functions
|
Normalize |
|
Build a |
- ef.segmenter_adapters.as_segmenter(x=None, /, **kwargs)[source]¶
Normalize
xinto aSegmenter— the DI seam.The single place every
efentry point coerces a user-supplied segmenter argument. Accepts, in order:Noneor"default"/"recursive"— aRecursiveCharacterSegmenter(the default);"lines"—line_segmenter();any other string — looked up in
imbed’s registry viaimbed_segmenter();a ready-made segmenter (a
BaseSegmenteror a callable marked byef) — returned unchanged;a bare callable — wrapped in
FunctionSegmenter.
Extra
**kwargsare forwarded to the chosen factory (ignored whenxis already a segmenter).>>> seg = as_segmenter(chunk_size=256, chunk_overlap=32) >>> (seg.chunk_size, seg.chunk_overlap) (256, 32)- Return type:
- ef.segmenter_adapters.imbed_segmenter(name='default', /, **kwargs)[source]¶
Build a
Segmenterfromimbed’s segmenter registry.imbed’s registered segmenters are baretext -> Iterable[str]callables; this wraps the named one in aFunctionSegmenterso it emits well-formedSegmentpieces.- Parameters:
name (
str) – A key inimbed.components.segmentation.segmenters("default"resolves toimbed’s configured default segmenter).**kwargs (
Any) – Forwarded toFunctionSegmenter.
- Raises:
ImportError – if
imbedis not installed.ValueError – if
nameis not a registered segmenter.
- Return type:
Requires the
imbedpackage (pip install 'ef[imbed]').