choonkeat/elm-openai/3.0.0

OpenAI.Embeddings

OpenAI’s text embeddings measure the relatedness of text strings. Embeddings are most commonly used for:

  • Search (where results are ranked by relevance to a query string)
  • Clustering (where text strings are grouped by similarity)
  • Recommendations (where items with related text strings are recommended)
  • Anomaly detection (where outliers with little relatedness are identified)
  • Diversity measurement (where similarity distributions are analyzed)
  • Classification (where text strings are classified by their most similar label)

An embedding is a vector (list) of floating point numbers. The distance between two vectors measures their relatedness. Small distances suggest high relatedness and large distances suggest low relatedness.

See https://beta.openai.com/docs/guides/embeddings

create : Input -> TaskInput (Error String) Output

https://beta.openai.com/docs/api-reference/embeddings/create

create
    { model = OpenAI.ModelID.TextEmbeddingAda002
    , input = "The food was delicious and the waiter..."
    , user = Nothing
    }
    |> OpenAI.withConfig cfg
    |> Http.task
-- > Task.succeed
-- >     { data =
-- >         [ { embedding = [0.0023064255,-0.009327292,...,-0.0028842222 ]
-- >           , index = 0
-- >           , object = "embedding"
-- >           }
-- >         ]
-- >     , model = Custom "text-embedding-ada-002-v2"
-- >     , object = "list"
-- >     , usage = { prompt_tokens = 8, total_tokens = 8 }
-- >     }
type alias Input =
{ model : ModelID
, input : String
, user : Maybe String
}
type alias Output =
{ object : String
, data : List Data
, model : ModelID
, usage : Usage
}
type alias Data =
{ object : String
, index : Int
, embedding : List Float
}
type alias Usage =
{ prompt_tokens : Int
, total_tokens : Int
}