Skip to main content

outfox_openai/spec/embeddings/
impls.rs

1use base64::engine::{Engine, general_purpose};
2
3use crate::spec::embeddings::Base64EmbeddingVector;
4
5impl From<Base64EmbeddingVector> for Vec<f32> {
6    fn from(value: Base64EmbeddingVector) -> Self {
7        let bytes = general_purpose::STANDARD
8            .decode(value.0)
9            .expect("openai base64 encoding to be valid");
10        let chunks = bytes.chunks_exact(4);
11        chunks
12            .map(|chunk| f32::from_le_bytes([chunk[0], chunk[1], chunk[2], chunk[3]]))
13            .collect()
14    }
15}