Embedding - OpenAI

Overview

OpenAI embedder is an implementation of Eino’s Embedding interface that converts text into vector representations. It follows [🚧]Eino: Embedding Guide and is typically used for:

  • Converting text into high‑dimensional vectors
  • Using OpenAI’s embedding models
  • Using Azure OpenAI Service embedding models

Usage

Initialization

Initialize via NewEmbedder with key configuration options:

import "github.com/cloudwego/eino-ext/components/embedding/openai"

embedder, err := openai.NewEmbedder(ctx, &openai.EmbeddingConfig{
    // OpenAI API config
    APIKey:  "your-api-key",
    Model:   "text-embedding-ada-002",
    Timeout: 30 * time.Second,

    // Optional: Azure OpenAI Service config
    ByAzure:    true,
    BaseURL:    "https://your-resource.openai.azure.com",
    APIVersion: "2023-05-15",

    EncodingFormat: &format,    // encoding format
    Dimensions:     &dimension, // vector dimension
    User:           &user,      // user identifier
})

Generate Embeddings

Vectorization is done via EmbedStrings:

embeddings, err := embedder.EmbedStrings(ctx, []string{
    "First text",
    "Second text",
})

Complete Example

Basic Usage

package main

import (
    "context"
    "time"

    "github.com/cloudwego/eino-ext/components/embedding/openai"
)

func main() {
    ctx := context.Background()

    // init embedder
    embedder, err := openai.NewEmbedder(ctx, &openai.EmbeddingConfig{
        APIKey:  "your-api-key",
        Model:   "text-embedding-ada-002",
        Timeout: 30 * time.Second,
    })
    if err != nil {
        panic(err)
    }

    // generate embeddings
    texts := []string{
        "This is the first sample text",
        "This is the second sample text",
    }

    embeddings, err := embedder.EmbedStrings(ctx, texts)
    if err != nil {
        panic(err)
    }

    // use vectors
    for i, embedding := range embeddings {
        println("text", i+1, "vector dim:", len(embedding))
    }
}

References