pub struct ModelInvocation {
pub model_name: String,
pub output_column: String,
pub feature_exprs: Vec<Expr>,
pub feature_names: Vec<String>,
pub feature_property_refs: Vec<(String, String)>,
pub yield_alias: Option<String>,
pub original_feature_exprs: Vec<Expr>,
pub path_context: Option<PathContextFeature>,
pub embedder_alias: Option<String>,
}Expand description
A single neural-model invocation site extracted from a clause body.
At runtime, after the clause body produces a batch of rows, each
invocation evaluates its feature_exprs per row, packs them into
crate::ClassifyInputs, calls the classifier in one batched
classify call, then appends the result vector as a new column
output_column to the batch.
Fields§
§model_name: StringName of the model from CREATE MODEL <name>.
output_column: StringSynthetic column name where the per-row probabilities are
written. Generated as __model_<name>_<idx> where idx is a
dedup index for repeated invocations of the same model.
feature_exprs: Vec<Expr>Argument expressions from the invocation — one per declared
INPUT binding. Evaluated in clause-body scope to produce the
per-row feature value passed under the binding’s variable name.
feature_names: Vec<String>Names of the model’s INPUT bindings in declaration order, used
as feature keys when building crate::ClassifyInput.
feature_property_refs: Vec<(String, String)>Property-access expressions referenced by feature_exprs,
recorded as (variable, property) pairs (e.g. for
scorer(s.tier) → [("s", "tier")]). The compiler appends a
matching hidden YIELD item for each so the planner’s standard
property-materialization pipeline produces a column named
"<variable>.<property>" in the body batch; runtime then
reads from that column.
yield_alias: Option<String>Phase C B1–B3: when the invocation appears in a YIELD item
(e.g. scorer(s) AS risk), this carries the user-visible
alias (risk) — distinct from the synthetic
output_column (__model_scorer_0). Allows EXPLAIN to look
up the model output by the column name that survives
LocyProject’s projection. None when the invocation lives
only inside an ALONG / FOLD expression and never surfaces
as a user-visible YIELD column.
original_feature_exprs: Vec<Expr>Phase C B1-B3 follow-up: the user-authored feature
expressions BEFORE the InvocationLifter rewrote them to
Variable("__model_<n>_<idx>") references. Preserved so
EXPLAIN can reconstruct ClassifyInput per fact at lookup
time (the rewritten feature_exprs carry synthetic-column
references that can’t be evaluated against a post-projection
fact_row). Same length and ordering as feature_exprs and
feature_names.
path_context: Option<PathContextFeature>Phase D D3: snapshot of the model’s path_context declaration
(if any) carried onto the invocation so the runtime can pull
the named column from the source rule’s derived facts at
classify time without re-consulting the model catalog.
embedder_alias: Option<String>Phase D D2 follow-up: optional embedder alias from the model’s
USING xervo('classify/X', embedder='alias') clause. When
None, the runtime falls back to alias "default" for
semantic_match query-text embedding.
Trait Implementations§
Source§impl Clone for ModelInvocation
impl Clone for ModelInvocation
Source§fn clone(&self) -> ModelInvocation
fn clone(&self) -> ModelInvocation
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ModelInvocation
impl RefUnwindSafe for ModelInvocation
impl Send for ModelInvocation
impl Sync for ModelInvocation
impl Unpin for ModelInvocation
impl UnsafeUnpin for ModelInvocation
impl UnwindSafe for ModelInvocation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more