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: DeviceThe device (CPU or GPU) on which the model is loaded.
Implementations§
Source§impl ColBERT
impl ColBERT
Sourcepub 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>
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.
Sourcepub fn from(repo_id: &str) -> ColbertBuilder
pub fn from(repo_id: &str) -> ColbertBuilder
Creates a ColbertBuilder to construct a ColBERT model from a Hugging Face repository.
Sourcepub fn document_token_lengths(
&mut self,
sentences: &[String],
) -> Result<Vec<u32>, ColbertError>
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.
Sourcepub fn encode_documents_with_lengths(
&mut self,
sentences: &[String],
) -> Result<(Tensor, Vec<u32>), ColbertError>
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.
Sourcepub fn encode(
&mut self,
sentences: &[String],
is_query: bool,
) -> Result<Tensor, ColbertError>
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.
Sourcepub fn similarity(
&self,
queries_embeddings: &Tensor,
documents_embeddings: &Tensor,
) -> Result<Similarities, ColbertError>
pub fn similarity( &self, queries_embeddings: &Tensor, documents_embeddings: &Tensor, ) -> Result<Similarities, ColbertError>
Calculates the similarity scores between query and document embeddings.
Sourcepub fn raw_similarity(
&self,
queries_embeddings: &Tensor,
documents_embeddings: &Tensor,
) -> Result<Tensor, ColbertError>
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
impl TryFrom<ColbertBuilder> for ColBERT
Source§fn try_from(builder: ColbertBuilder) -> Result<Self, Self::Error>
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
type Error = ColbertError
Auto Trait Implementations§
impl !Freeze for ColBERT
impl !RefUnwindSafe for ColBERT
impl Send for ColBERT
impl Sync for ColBERT
impl Unpin for ColBERT
impl UnsafeUnpin for ColBERT
impl !UnwindSafe for ColBERT
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
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