use anyhow::Result;
use async_trait::async_trait;
use std::fmt::Debug;
#[derive(Debug, Clone)]
pub struct EmbeddingResult {
pub embedding: Vec<f32>,
#[allow(dead_code)]
pub token_count: Option<usize>,
}
#[async_trait]
pub trait EmbeddingProvider: Send + Sync + Debug {
#[allow(dead_code)]
fn dimensions(&self) -> usize;
async fn embed(&self, text: &str) -> Result<EmbeddingResult>;
async fn embed_batch(&self, texts: &[String]) -> Result<Vec<EmbeddingResult>>;
#[allow(dead_code)]
fn model_name(&self) -> &str;
}