Skip to main content

ModelManager

Struct ModelManager 

Source
pub struct ModelManager { /* private fields */ }
Expand description

Manages downloading, caching, and verifying ONNX model files.

Implementations§

Source§

impl ModelManager

Source

pub fn new() -> Result<Self, ModelManagerError>

Create a new ModelManager using the default cache directory (~/.cache/ctxgraph/models/).

Source

pub fn with_cache_dir(cache_dir: PathBuf) -> Result<Self, ModelManagerError>

Create a ModelManager with a custom cache directory (useful for tests).

Source

pub fn default_cache_dir() -> Result<PathBuf, ModelManagerError>

Return the default cache directory (~/.cache/ctxgraph/models/), creating it if it does not exist.

Source

pub fn model_path(&self, spec: &ModelSpec) -> PathBuf

Path where a given model would be stored locally.

Source

pub fn is_cached(&self, spec: &ModelSpec) -> bool

Check whether the model file exists on disk and its size matches the spec.

Source

pub fn verify(&self, spec: &ModelSpec) -> Result<bool, ModelManagerError>

Verify the SHA-256 hash of a cached model file. Returns Ok(true) if the hash matches, Ok(false) if it doesn’t, or an error if the file cannot be read.

If spec.sha256 starts with “pending” or equals “skip”, verification is bypassed and Ok(true) is returned unconditionally.

Source

pub fn download(&self, spec: &ModelSpec) -> Result<PathBuf, ModelManagerError>

Download a model, verify its hash, and return the local path.

Source

pub fn get_or_download( &self, spec: &ModelSpec, ) -> Result<PathBuf, ModelManagerError>

Return the cached model path if it exists and is valid, otherwise download it.

Source§

impl ModelManager

Source

pub fn ensure_ner_models(&self) -> Result<(PathBuf, PathBuf), ModelManagerError>

Download the NER model and tokenizer needed for Tier 1 extraction.

Downloads gliner_large-v2.1 INT8 model + tokenizer to the cache directory.

Source

pub fn ensure_rel_models(&self) -> Option<(PathBuf, PathBuf)>

Download the multitask model and tokenizer needed for relation extraction.

Returns None if the model is not available (needs ONNX conversion).

Source

pub fn ensure_nli_models(&self) -> Result<(PathBuf, PathBuf), ModelManagerError>

Download the NLI cross-encoder model and tokenizer.

Used for zero-shot relation classification via entailment scoring.

Source

pub fn find_nli_model(&self) -> Option<(PathBuf, PathBuf)>

Find locally cached NLI model. Returns None if not downloaded yet.

Source

pub fn find_relation_classifier(&self) -> Option<PathBuf>

Check for a locally available fine-tuned relation classifier model.

Looks for relation_classifier/model_int8.onnx (or model.onnx) and relation_classifier/tokenizer.json in the cache directory.

Returns Some((model_path, tokenizer_path)) if found, None otherwise.

Source

pub fn find_relex_model(&self) -> Option<(PathBuf, PathBuf)>

Check for locally exported gliner-relex ONNX model.

The relex model must be exported manually using: python scripts/export_relex_onnx.py [--quantize]

Returns Some((model_path, tokenizer_path)) if found, None otherwise.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more