Embeddings API

Types and functions for the Embeddings API.

Embeddings Object

UniLM.EmbeddingsType
Embeddings(input::String)
Embeddings(input::Vector{String})

Create an embedding request for one or more text inputs. Uses the text-embedding-3-small model (1536-dimensional embeddings) by default.

The embeddings field is pre-allocated and filled in-place by embeddingrequest!.

Fields

  • model::String: The embedding model name.
  • input::Union{String,Vector{String}}: Text(s) to embed.
  • embeddings::Union{Vector{Float64},Vector{Vector{Float64}}}: Pre-allocated embedding vector(s).
  • user::Union{String,Nothing}: Optional end-user identifier.

Example

emb = Embeddings("Julia is a great language")
embeddingrequest!(emb)
emb.embeddings  # => Float64[...] (1536 dims)
source

Construction

using UniLM

# Single input
emb = Embeddings("Julia is a great language")
println("Model: ", emb.model)
println("Embedding dims: ", length(emb.embeddings))

# Batch input
batch = Embeddings(["Hello", "World", "Julia"])
println("Batch size: ", length(batch.input))
println("Each embedding dims: ", length(batch.embeddings[1]))
Model: text-embedding-3-small
Embedding dims: 1536
Batch size: 3
Each embedding dims: 1536

Request Function

UniLM.embeddingrequest!Function
embeddingrequest!(emb::Embedding)

Send a request to the OpenAI API to generate an embedding for the `input` in `emb`.

Resulting embedding is stored in the preallocated `embedding` field.  

@kwdef struct Embedding
    model::String = "text-embedding-3-small"
    input::Union{String,Vector{String}}
    embedding::Vector{Float64} = zeros(Float64, 1536)
    user::Union{String,Nothing} = nothing
end
source

Model Constants

println("Default embedding model: ", UniLM.GPTTextEmbedding3Small)
Default embedding model: text-embedding-3-small

Usage Example

julia> emb = Embeddings("Julia is a high-performance programming language for technical computing.")

julia> embeddingrequest!(emb)

julia> emb.embeddings[1:5]  # first 5 dimensions
5-element Vector{Float64}:
  -0.039474
  -0.009283
  0.001706
  -0.028087
  0.063363

julia> sqrt(sum(x^2 for x in emb.embeddings))  # L2 norm ≈ 1.0
1.0