Source code for lalandre_rag.retrieval.context.models

"""
Context Models
Clean separation between act-level metadata, document metadata, and content slices.
"""

from dataclasses import dataclass
from typing import Any, Dict, List, Optional


[docs] @dataclass class DocumentMeta: """ Document-level metadata for a retrieved slice. """ source_kind: str # subdivision | chunk subdivision_id: int subdivision_type: str sequence_order: int chunk_id: Optional[int] = None chunk_index: Optional[int] = None char_start: Optional[int] = None char_end: Optional[int] = None payload: Optional[Dict[str, Any]] = None
[docs] @dataclass class ActContext: """ Act-level metadata, shared across multiple slices. """ act_id: int celex: str title: str act_type: str regulatory_level: Optional[str] = None # L1, L2, L3 url_eurlex: Optional[str] = None relations: Optional[List[Dict[str, Any]]] = None subjects: Optional[List[str]] = None adoption_date: Optional[str] = None force_date: Optional[str] = None
[docs] @dataclass class ContextSlice: """ A context slice used by the LLM, with explicit act + doc metadata separation. """ content: str score: float act: ActContext doc: DocumentMeta trace: Optional[Dict[str, Any]] = None