Files
ai-operator/internal/embedding/provider.go
T

36 lines
820 B
Go

package embedding
import (
"context"
"fmt"
"ai-operator/internal/config"
)
type Vector []float32
type Provider interface {
Embed(ctx context.Context, input []string) ([]Vector, error)
Dimensions() int
Model() string
ProviderName() string
}
func NewProvider(cfg config.Config, override string) (Provider, error) {
name := cfg.Embedding.Provider
if override != "" {
name = override
}
switch name {
case "fake":
return NewFakeProvider(cfg.Embedding.Dimensions, cfg.Embedding.Model), nil
case "openai":
if cfg.OpenAI.APIKey == "" {
return nil, fmt.Errorf("OPENAI_API_KEY is required for openai embedding provider")
}
return NewOpenAIProvider(cfg.OpenAI.APIKey, cfg.Embedding.Model, cfg.Embedding.Dimensions), nil
default:
return nil, fmt.Errorf("unknown embedding provider: %s", name)
}
}