% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/gpt3_embeddings.R
\name{gpt3_embeddings}
\alias{gpt3_embeddings}
\title{Retrieves text embeddings for character input from a vector from the GPT-3 API}
\usage{
gpt3_embeddings(input_var, id_var, param_model = "text-similarity-ada-001")
}
\arguments{
\item{input_var}{character vector that contains the texts for which you want to obtain text embeddings from the GPT-3 model
#' @param id_var (optional) character vector that contains the user-defined ids of the prompts. See details.}

\item{param_model}{a character vector that indicates the \href{https://beta.openai.com/docs/guides/embeddings/similarity-embeddings}{similarity embedding model}; one of "text-similarity-ada-001" (default), "text-similarity-curie-001", "text-similarity-babbage-001", "text-similarity-davinci-001"}
}
\value{
A data.table with the embeddings as separate columns; one row represents one input text. See details.
}
\description{
\code{gpt3_embeddings()} extends the single embeddings function \code{gpt3_single_embedding()} to allow for the processing of a whole vector
}
\details{
The returned data.table contains the column \code{id} which indicates the text id (or its generic alternative if not specified) and the columns \code{dim_1} ... \verb{dim_\{max\}}, where \code{max} is the length of the text embeddings vector that the four different models return. For the default "Ada" model, these are 1024 dimensions (i.e., \code{dim_1}... \code{dim_1024}).

The function supports the text similarity embeddings for the four GPT-3 models as specified in the parameter list. The main difference between the four models is the sophistication of the embedding representation as indicated by the vector embedding size.
\itemize{
\item Ada (1024 dimensions)
\item Babbage (2048 dimensions)
\item Curie (4096 dimensions)
\item Davinci (12288 dimensions)
}

Note that the dimension size (= vector length), speed and \href{https://openai.com/api/pricing/}{associated costs} differ considerably.

These vectors can be used for downstream tasks such as (vector) similarity calculations.
}
\examples{
# First authenticate with your API key via `gpt3_authenticate('pathtokey')`

# Use example data:
## The data below were generated with the `gpt3_single_request()` function as follows:
##### DO NOT RUN #####
# travel_blog_data = gpt3_single_request(prompt_input = "Write a travel blog about a dog's journey through the UK:", temperature = 0.8, n = 10, max_tokens = 200)[[1]]
##### END DO NOT RUN #####

# You can load these data with:
data("travel_blog_data") # the dataset contains 10 completions for the above request

## Obtain text embeddings for the completion texts:
emb_travelblogs = gpt3_embeddings(input_var = travel_blog_data$gpt3)
dim(emb_travelblogs)
}
