Method: Langchain::LLM::OpenAI#embed

Defined in:
lib/langchain/llm/openai.rb

#embed(text:, model: , encoding_format: nil, user: nil, dimensions: ) ⇒ Langchain::LLM::OpenAIResponse

Generate an embedding for a given text

Parameters:

  • text (String)

    The text to generate an embedding for

  • model (String) (defaults to: )

    ID of the model to use

  • encoding_format (String) (defaults to: nil)

    The format to return the embeddings in. Can be either float or base64.

  • user (String) (defaults to: nil)

    A unique identifier representing your end-user

Returns:

Raises:

  • (ArgumentError)


61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/langchain/llm/openai.rb', line 61

def embed(
  text:,
  model: defaults[:embedding_model],
  encoding_format: nil,
  user: nil,
  dimensions: @defaults[:dimensions]
)
  raise ArgumentError.new("text argument is required") if text.empty?
  raise ArgumentError.new("model argument is required") if model.empty?
  raise ArgumentError.new("encoding_format must be either float or base64") if encoding_format && %w[float base64].include?(encoding_format)

  parameters = {
    input: text,
    model: model
  }
  parameters[:encoding_format] = encoding_format if encoding_format
  parameters[:user] = user if user

  if dimensions
    parameters[:dimensions] = dimensions
  elsif EMBEDDING_SIZES.key?(model)
    parameters[:dimensions] = EMBEDDING_SIZES[model]
  end

  # dimensions parameter not supported by text-embedding-ada-002 model
  parameters.delete(:dimensions) if model == "text-embedding-ada-002"

  response = with_api_error_handling do
    client.embeddings(parameters: parameters)
  end

  Langchain::LLM::OpenAIResponse.new(response)
end