45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
"""Explicit construction boundary for Evidence preprocessing."""
|
|
|
|
from typing import Protocol
|
|
|
|
from tht.evidence.contracts import EvidenceSource
|
|
from tht.evidence.corpus.chunk import ChunkPolicy
|
|
from tht.evidence.corpus.pipeline import CorpusPipeline
|
|
from tht.evidence.corpus.store import CorpusStore
|
|
from tht.ports.vector import VectorStore
|
|
|
|
|
|
class EvidenceEmbedder(Protocol):
|
|
def embed_documents(self, texts: list[str]) -> list[list[float]]: ...
|
|
|
|
|
|
def build_preprocessing_pipeline(
|
|
*,
|
|
store: CorpusStore,
|
|
sources: list[EvidenceSource],
|
|
embedder: EvidenceEmbedder,
|
|
vector_store: VectorStore,
|
|
embedding_model: str,
|
|
embedding_dimensions: int,
|
|
chunk_policy: ChunkPolicy,
|
|
pipeline_version: str,
|
|
retain_published_generations: int = 3,
|
|
workspace_id: str | None = None,
|
|
) -> CorpusPipeline:
|
|
"""Construct preprocessing from the bounded infrastructure supplied by core."""
|
|
return CorpusPipeline(
|
|
store=store,
|
|
sources=sources,
|
|
embedder=embedder,
|
|
vector_store=vector_store,
|
|
embedding_model=embedding_model,
|
|
embedding_dimensions=embedding_dimensions,
|
|
chunk_policy=chunk_policy,
|
|
pipeline_version=pipeline_version,
|
|
retain_published_generations=retain_published_generations,
|
|
workspace_id=workspace_id,
|
|
)
|
|
|
|
|
|
__all__ = ["EvidenceEmbedder", "build_preprocessing_pipeline"]
|