def load_pipeline_from_yaml(path: str | Path) -> "Pipeline":
"""Build a :class:`Pipeline` from a YAML config file.
See the module docstring for the schema. Raises ``ValueError`` with
a clear message on unknown component types or missing required keys.
"""
try:
import yaml
except ImportError as exc:
raise ImportError(
"PyYAML is required for YAML config loading. "
"Install with: pip install 'verifiable-rag[yaml]'"
) from exc
from verifiable_rag.chunkers import ContextualChunker, LLMContextualizer
from verifiable_rag.indexers import HybridIndex
from verifiable_rag.parsers._cache import CachingParser
from verifiable_rag.parsers.composite import CompositeParser
from verifiable_rag.pipeline import Pipeline
path = Path(path)
with path.open() as fh:
cfg = yaml.safe_load(fh) or {}
# Required components
parser_obj = _build_parser(cfg.get("parser", {}))
chunker_obj = _build_chunker(cfg.get("chunker", {}))
embedder_obj = _instantiate(
"embedder",
cfg["embedder"]["type"] if "embedder" in cfg else "bge",
cfg.get("embedder", {}).get("config", {}),
)
indexer_obj = _build_indexer(cfg.get("indexer", {}))
generator_obj = _instantiate(
"generator",
cfg["generator"]["type"] if "generator" in cfg else "prompted",
cfg.get("generator", {}).get("config", {}),
)
# Optional components
reranker_obj = None
if "reranker" in cfg and cfg["reranker"].get("type") not in (None, "none"):
reranker_obj = _instantiate(
"reranker",
cfg["reranker"]["type"],
cfg["reranker"].get("config", {}),
)
verifier_obj = None
if "verifier" in cfg and cfg["verifier"].get("type") not in (None, "none"):
verifier_obj = _instantiate(
"verifier",
cfg["verifier"]["type"],
cfg["verifier"].get("config", {}),
)
pipeline_kw = cfg.get("pipeline", {}) or {}
return Pipeline(
parser=parser_obj,
chunker=chunker_obj,
embedder=embedder_obj,
indexer=indexer_obj,
reranker=reranker_obj,
generator=generator_obj,
verifier=verifier_obj,
strictness=pipeline_kw.get("strictness", "balanced"),
top_k_retrieve=pipeline_kw.get("top_k_retrieve", 20),
top_k_rerank=pipeline_kw.get("top_k_rerank", 8),
)