embedder

package
v0.9.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 22, 2026 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const MaxPayloadBytes = 64 * 1024

Variables

View Source
var (
	ErrEmbedderUnavailable = errors.New("embedder unavailable")
	ErrPayloadTooLarge     = errors.New("embedder payload too large")
)
View Source
var ErrPoolFull = &poolFullError{}

Functions

func IsAPIAvailable

func IsAPIAvailable(ctx context.Context, baseURL string) error

IsAPIAvailable probes the Ollama server with a GET on the root URL. Returns nil if reachable, an error otherwise. Used by startup checks.

Types

type Config

type Config struct {
	Provider Provider      `yaml:"provider"`
	Ollama   *OllamaConfig `yaml:"ollama,omitempty"`
	OpenAI   *OpenAIConfig `yaml:"openai,omitempty"`
}

func (Config) Validate

func (c Config) Validate() error

type EmbedOutcome

type EmbedOutcome struct {
	Embedding Embedding
	Err       error
}

EmbedOutcome is what pool.Embed sends back: either a successful Embedding (Err == nil) or an error (Embedding zero-valued). One value, one close — callers can read with `case out := <-ch:` and never have to race between two channels.

type EmbedRequest

type EmbedRequest struct {
	ToolName string
	Args     json.RawMessage
}

func (EmbedRequest) Input

func (r EmbedRequest) Input() string

type Embedder

type Embedder interface {
	Embed(ctx context.Context, req EmbedRequest) (Embedding, error)
	Provider() Provider
	Close() error
}

type Embedding

type Embedding struct {
	Vector []float32
	Model  string
}

type OllamaConfig

type OllamaConfig struct {
	URL   string `yaml:"url"`
	Model string `yaml:"model"`
}

type OllamaEmbedder

type OllamaEmbedder struct {
	// contains filtered or unexported fields
}

func NewOllamaEmbedder

func NewOllamaEmbedder(cfg OllamaConfig, logger *slog.Logger) (*OllamaEmbedder, error)

func (*OllamaEmbedder) Close

func (e *OllamaEmbedder) Close() error

func (*OllamaEmbedder) Embed

func (e *OllamaEmbedder) Embed(ctx context.Context, req EmbedRequest) (Embedding, error)

func (*OllamaEmbedder) Provider

func (e *OllamaEmbedder) Provider() Provider

type OpenAIConfig

type OpenAIConfig struct {
	Model  string `yaml:"model"`
	APIKey string `yaml:"api_key,omitempty"`
}

type OpenAIEmbedder

type OpenAIEmbedder struct {
	// contains filtered or unexported fields
}

func NewOpenAIEmbedder

func NewOpenAIEmbedder(cfg OpenAIConfig, logger *slog.Logger) (*OpenAIEmbedder, error)

func (*OpenAIEmbedder) Close

func (e *OpenAIEmbedder) Close() error

func (*OpenAIEmbedder) Embed

func (e *OpenAIEmbedder) Embed(ctx context.Context, req EmbedRequest) (Embedding, error)

func (*OpenAIEmbedder) Provider

func (e *OpenAIEmbedder) Provider() Provider

type Pool

type Pool struct {
	// contains filtered or unexported fields
}

func NewPool

func NewPool(embedder Embedder, cfg PoolConfig, logger *slog.Logger) *Pool

func (*Pool) Close

func (p *Pool) Close() error

func (*Pool) Embed

func (p *Pool) Embed(ctx context.Context, req EmbedRequest) <-chan EmbedOutcome

func (*Pool) Provider

func (p *Pool) Provider() Provider

Provider returns the underlying embedder's provider (ollama, openai, ...).

func (*Pool) Size

func (p *Pool) Size() int

type PoolConfig

type PoolConfig struct {
	Size  int `yaml:"size"`
	Queue int `yaml:"queue"`
}

type Provider

type Provider string
const (
	ProviderOllama Provider = "ollama"
	ProviderOpenAI Provider = "openai"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL