Skip to main content

CachedEmbeddingService

Struct CachedEmbeddingService 

Source
pub struct CachedEmbeddingService<S> { /* private fields */ }
Expand description

Unstable: caching strategy and constructor API may change; foundation-internal use only.

Caching wrapper around an embedding service.

Wraps any EmbeddingService implementation with LRU caching. Identical texts (with the same model) will return cached embeddings instead of recomputing.

§Example

use lattice_embed::{
    CachedEmbeddingService, NativeEmbeddingService, EmbeddingService,
    EmbeddingModel, EmbeddingCache,
};
use std::sync::Arc;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let inner = Arc::new(NativeEmbeddingService::new());
    let cached = CachedEmbeddingService::new(inner, 1000);

    // First call - computes and caches
    let emb1 = cached.embed_one("Hello", EmbeddingModel::default()).await?;

    // Second call - returns from cache
    let emb2 = cached.embed_one("Hello", EmbeddingModel::default()).await?;

    assert_eq!(emb1, emb2);
    Ok(())
}

Implementations§

Source§

impl<S: EmbeddingService> CachedEmbeddingService<S>

Source

pub fn new(inner: Arc<S>, cache_capacity: usize) -> Self

Unstable: constructor signature may change when cache config becomes a struct.

§Arguments
  • inner - The underlying embedding service
  • cache_capacity - Maximum number of embeddings to cache
Source

pub fn with_default_cache(inner: Arc<S>) -> Self

Unstable: constructor signature may change when cache config becomes a struct.

Source

pub fn cache_stats(&self) -> CacheStats

Unstable: returns internal CacheStats type which is itself Unstable.

Source

pub fn clear_cache(&self)

Unstable: internal cache management; API subject to change.

Trait Implementations§

Source§

impl<S: EmbeddingService + 'static> EmbeddingService for CachedEmbeddingService<S>

Source§

fn embed<'life0, 'life1, 'async_trait>( &'life0 self, texts: &'life1 [String], model: EmbeddingModel, ) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<f32>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Stable: generate embeddings for multiple texts. Read more
Source§

fn supports_model(&self, model: EmbeddingModel) -> bool

Stable: check if the service supports a given model.
Source§

fn name(&self) -> &'static str

Stable: get the name/identifier of this service.
Source§

fn embed_one<'life0, 'life1, 'async_trait>( &'life0 self, text: &'life1 str, model: EmbeddingModel, ) -> Pin<Box<dyn Future<Output = Result<Vec<f32>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Stable: generate an embedding for a single text. Read more
Source§

fn model_config(&self, model: EmbeddingModel) -> ModelConfig

Unstable: returns the effective ModelConfig for a given model on this service. Read more

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> 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<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