ExLLM.Providers.Gemini.Embeddings (ex_llm v0.8.1)

View Source

Google Gemini Embeddings API implementation.

Provides functionality to generate text embeddings using Gemini embedding models. Supports both single and batch embedding generation with various task types and configuration options.

Summary

Functions

Generates multiple embedding vectors from a batch of content.

Generates a text embedding vector from the input Content.

Convenience function to embed a single text string.

Convenience function to embed multiple text strings.

Types

options()

@type options() :: [{:config_provider, pid() | atom()}]

Functions

batch_embed_contents(model, requests, opts \\ [])

Generates multiple embedding vectors from a batch of content.

Parameters

  • model - The model to use
  • requests - List of EmbedContentRequest
  • opts - Options including :config_provider

Examples

requests = [
  %EmbedContentRequest{
    model: "models/text-embedding-004",
    content: %Content{role: "user", parts: [%Part{text: "First text"}]}
  },
  %EmbedContentRequest{
    model: "models/text-embedding-004",
    content: %Content{role: "user", parts: [%Part{text: "Second text"}]}
  }
]
{:ok, embeddings} = ExLLM.Providers.Gemini.Embeddings.batch_embed_contents("models/text-embedding-004", requests)

embed_content(model, request, opts \\ [])

Generates a text embedding vector from the input Content.

Parameters

  • model - The model to use (e.g., "models/text-embedding-004")
  • request - EmbedContentRequest with content and options
  • opts - Options including :config_provider

Examples

request = %EmbedContentRequest{
  content: %Content{
    role: "user",
    parts: [%Part{text: "Hello world"}]
  },
  task_type: :retrieval_query
}
{:ok, embedding} = ExLLM.Providers.Gemini.Embeddings.embed_content("models/text-embedding-004", request)

embed_text(model, text, opts \\ [])

@spec embed_text(String.t(), String.t(), Keyword.t()) ::
  {:ok, ExLLM.Providers.Gemini.Embeddings.ContentEmbedding.t()}
  | {:error, term()}

Convenience function to embed a single text string.

Examples

{:ok, embedding} = ExLLM.Providers.Gemini.Embeddings.embed_text("models/text-embedding-004", "Hello world")

embed_texts(model, texts, opts \\ [])

@spec embed_texts(String.t(), [String.t()], Keyword.t()) ::
  {:ok, [ExLLM.Providers.Gemini.Embeddings.ContentEmbedding.t()]}
  | {:error, term()}

Convenience function to embed multiple text strings.

Examples

texts = ["First text", "Second text", "Third text"]
{:ok, embeddings} = ExLLM.Providers.Gemini.Embeddings.embed_texts("models/text-embedding-004", texts)