Skip to main content

ColBERT

Struct ColBERT 

Source
pub struct ColBERT {
    pub device: Device,
    /* private fields */
}
Expand description

The main ColBERT model structure.

This struct encapsulates the language model, the chain of Dense projection layers declared in modules.json, the tokenizer, and all necessary configuration for performing encoding and similarity calculations based on the ColBERT architecture.

Fields§

§device: Device

The device (CPU or GPU) on which the model is loaded.

Implementations§

Source§

impl ColBERT

Source

pub fn new( weights: Vec<u8>, dense_modules: Vec<DenseModuleData>, tokenizer_bytes: Vec<u8>, config_bytes: Vec<u8>, query_prefix: String, document_prefix: String, query_prompt: String, document_prompt: String, mask_token: String, do_query_expansion: bool, attend_to_expansion_tokens: bool, query_length: Option<usize>, document_length: Option<usize>, batch_size: Option<usize>, device: &Device, ) -> Result<Self, ColbertError>

Creates a new instance of the ColBERT model from byte buffers.

dense_modules carries the ordered list of Dense projection layers declared in modules.json. They are applied left-to-right after the transformer, with the last layer’s out_features as the final stored embedding dimension.

Source

pub fn from(repo_id: &str) -> ColbertBuilder

Creates a ColbertBuilder to construct a ColBERT model from a Hugging Face repository.

Source

pub fn document_token_lengths( &mut self, sentences: &[String], ) -> Result<Vec<u32>, ColbertError>

Compute the post-truncation token count for each document sentence.

Mirrors the prefix + prompt + tokenization pipeline used inside [encode] for documents so the returned lengths match the per-row valid-token count of the encoded tensor exactly. Used by callers that need to slice the padded output tensor without scanning for all-zero rows on the host.

Source

pub fn encode_documents_with_lengths( &mut self, sentences: &[String], ) -> Result<(Tensor, Vec<u32>), ColbertError>

Encode documents and return (Tensor, per_doc_valid_token_counts).

The lengths are returned in the caller-supplied order and index directly into the returned 3D tensor’s axis=1: row i has the first lengths[i] rows populated with L2-normalized embeddings, and the remaining rows (up to the batch’s padded length) zeroed by [finalize_embeddings].

Intended for the docbert indexing path, which slices the tensor per-doc before serializing embeddings. Returning real counts lets callers skip the previous O(padded_tokens · dim) per-doc all-zero scan.

Source

pub fn encode( &mut self, sentences: &[String], is_query: bool, ) -> Result<Tensor, ColbertError>

Encodes a batch of sentences (queries or documents) into embeddings.

On CPU, this method leverages Rayon for parallel batch processing to accelerate encoding. On accelerators (GPU), it processes batches sequentially.

Source

pub fn similarity( &self, queries_embeddings: &Tensor, documents_embeddings: &Tensor, ) -> Result<Similarities, ColbertError>

Calculates the similarity scores between query and document embeddings.

Source

pub fn raw_similarity( &self, queries_embeddings: &Tensor, documents_embeddings: &Tensor, ) -> Result<Tensor, ColbertError>

Computes the raw, un-reduced similarity matrix between query and document embeddings.

Trait Implementations§

Source§

impl TryFrom<ColbertBuilder> for ColBERT

Source§

fn try_from(builder: ColbertBuilder) -> Result<Self, Self::Error>

Builds the ColBERT model by downloading files from the hub and initializing the model.

Source§

type Error = ColbertError

The type returned in the event of a conversion error.

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

impl<T> ErasedDestructor for T
where T: 'static,