embedder

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Jun 3, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEmptyInput       = errors.New("input is empty")
	ErrInvalidDimension = errors.New("invalid vector dimension")
	ErrInvalidConfig    = errors.New("invalid configuration")
	ErrProviderNotFound = errors.New("provider not found")
	ErrModelNotFound    = errors.New("model not found")
	ErrAPIKeyRequired   = errors.New("API key is required")
	ErrBaseURLRequired  = errors.New("BaseURL is required")
	ErrEmbedFailed      = errors.New("embedding failed")
	ErrConnectionFailed = errors.New("connection failed")
	ErrRateLimited      = errors.New("rate limited")
	ErrInvalidResponse  = errors.New("invalid response")
)

Functions

func List

func List() []string

List 列出所有支持的提供商

func Register

func Register(factory EmbedderFactory) error

Register 向全局工厂注册提供商

func Supports

func Supports(provider string) bool

Supports 检查是否支持该提供商

Types

type BatchEmbedResult

type BatchEmbedResult struct {
	Results   []EmbedResult
	Dimension int
	Duration  int64 // 毫秒
}

BatchEmbedResult 批量向量化结果

type Config

type Config struct {
	// Provider 提供商名称 (openai, nvidia, ollama, local 等)
	Provider string

	// Model 模型名称
	Model string

	// BaseURL API 基础 URL
	BaseURL string

	// APIKey API 密钥
	APIKey string

	// Dimension 向量维度
	Dimension int

	// BatchSize 批处理大小
	BatchSize int

	// Timeout 超时时间(秒)
	Timeout int

	// MaxRetries 最大重试次数
	MaxRetries int

	// CustomConfig 自定义配置(用于特定提供商)
	CustomConfig map[string]interface{}
}

Config 通用 embedder 配置

type DashScopeEmbedder

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

DashScopeEmbedder 阿里 DashScope embedding 实现

func NewDashScopeEmbedder

func NewDashScopeEmbedder(cfg *Config) *DashScopeEmbedder

NewDashScopeEmbedder 创建 DashScope embedder

func (*DashScopeEmbedder) Close

func (e *DashScopeEmbedder) Close() error

func (*DashScopeEmbedder) Dimension

func (e *DashScopeEmbedder) Dimension() int

func (*DashScopeEmbedder) Embed

func (e *DashScopeEmbedder) Embed(ctx context.Context, texts []string) ([][]float32, error)

Embed 批量向量化

func (*DashScopeEmbedder) EmbedSingle

func (e *DashScopeEmbedder) EmbedSingle(ctx context.Context, text string) ([]float32, error)

EmbedSingle 单个文本向量化

func (*DashScopeEmbedder) Name

func (e *DashScopeEmbedder) Name() string

func (*DashScopeEmbedder) Provider

func (e *DashScopeEmbedder) Provider() string

type DashScopeFactory

type DashScopeFactory struct{}

DashScopeFactory DashScope embedder 工厂

func (*DashScopeFactory) Create

func (f *DashScopeFactory) Create(ctx context.Context, cfg *Config) (Embedder, error)

func (*DashScopeFactory) Name

func (f *DashScopeFactory) Name() string

func (*DashScopeFactory) Supports

func (f *DashScopeFactory) Supports(provider string) bool

type DefaultFactory

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

DefaultFactory 默认工厂实现

func GetFactory

func GetFactory() *DefaultFactory

GetFactory 获取全局工厂实例

func NewDefaultFactory

func NewDefaultFactory() *DefaultFactory

NewDefaultFactory 创建默认工厂

func (*DefaultFactory) Create

func (f *DefaultFactory) Create(ctx context.Context, cfg *Config) (Embedder, error)

Create 创建 embedder

func (*DefaultFactory) List

func (f *DefaultFactory) List() []string

List 列出所有支持的提供商

func (*DefaultFactory) Register

func (f *DefaultFactory) Register(factory EmbedderFactory) error

Register 注册工厂

func (*DefaultFactory) Supports

func (f *DefaultFactory) Supports(provider string) bool

Supports 检查是否支持该提供商

type EmbedResult

type EmbedResult struct {
	Text      string
	Vector    []float32
	Dimension int
	Error     error
}

EmbedResult 向量化结果

type Embedder

type Embedder interface {
	// Embed 将文本列表转换为向量
	Embed(ctx context.Context, texts []string) ([][]float32, error)

	// EmbedSingle 将单个文本转换为向量
	EmbedSingle(ctx context.Context, text string) ([]float32, error)

	// Dimension 返回向量维度
	Dimension() int

	// Name 返回 embedder 名称
	Name() string

	// Provider 返回提供商名称
	Provider() string

	// Close 关闭连接
	Close() error
}

Embedder 文本向量化接口

func Create

func Create(ctx context.Context, cfg *Config) (Embedder, error)

Create 使用全局工厂创建 embedder

type EmbedderFactory

type EmbedderFactory interface {
	// Create 创建 embedder 实例
	Create(ctx context.Context, cfg *Config) (Embedder, error)

	// Name 返回工厂名称
	Name() string

	// Supports 检查是否支持该提供商
	Supports(provider string) bool
}

EmbedderFactory 工厂接口

type EmbedderOptions

type EmbedderOptions struct {
	// BatchSize 批处理大小
	BatchSize int

	// Normalize 是否归一化向量
	Normalize bool

	// ReturnTokens 是否返回 token 数
	ReturnTokens bool

	// Timeout 超时时间(秒)
	Timeout int
}

EmbedderOptions 向量化选项

type HealthCheckResult

type HealthCheckResult struct {
	Healthy  bool
	Message  string
	Latency  int64 // 毫秒
	LastErr  error
	Provider string
	Model    string
}

HealthCheckResult 健康检查结果

type LocalEmbedder

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

LocalEmbedder 本地 embedding 实现

func NewLocalEmbedder

func NewLocalEmbedder(cfg *Config) *LocalEmbedder

NewLocalEmbedder 创建本地 embedder

func (*LocalEmbedder) Close

func (e *LocalEmbedder) Close() error

func (*LocalEmbedder) Dimension

func (e *LocalEmbedder) Dimension() int

func (*LocalEmbedder) Embed

func (e *LocalEmbedder) Embed(ctx context.Context, texts []string) ([][]float32, error)

Embed 批量向量化(基于哈希的确定性向量)

func (*LocalEmbedder) EmbedSingle

func (e *LocalEmbedder) EmbedSingle(ctx context.Context, text string) ([]float32, error)

EmbedSingle 单个文本向量化

func (*LocalEmbedder) Name

func (e *LocalEmbedder) Name() string

func (*LocalEmbedder) Provider

func (e *LocalEmbedder) Provider() string

type LocalFactory

type LocalFactory struct{}

LocalFactory 本地 embedder 工厂

func (*LocalFactory) Create

func (f *LocalFactory) Create(ctx context.Context, cfg *Config) (Embedder, error)

func (*LocalFactory) Name

func (f *LocalFactory) Name() string

func (*LocalFactory) Supports

func (f *LocalFactory) Supports(provider string) bool

type NvidiaEmbedder

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

NvidiaEmbedder Nvidia embedding 实现

func NewNvidiaEmbedder

func NewNvidiaEmbedder(cfg *Config) *NvidiaEmbedder

NewNvidiaEmbedder 创建 Nvidia embedder

func (*NvidiaEmbedder) Close

func (e *NvidiaEmbedder) Close() error

func (*NvidiaEmbedder) Dimension

func (e *NvidiaEmbedder) Dimension() int

func (*NvidiaEmbedder) Embed

func (e *NvidiaEmbedder) Embed(ctx context.Context, texts []string) ([][]float32, error)

Embed 批量向量化

func (*NvidiaEmbedder) EmbedSingle

func (e *NvidiaEmbedder) EmbedSingle(ctx context.Context, text string) ([]float32, error)

EmbedSingle 单个文本向量化

func (*NvidiaEmbedder) Name

func (e *NvidiaEmbedder) Name() string

func (*NvidiaEmbedder) Provider

func (e *NvidiaEmbedder) Provider() string

type NvidiaFactory

type NvidiaFactory struct{}

NvidiaFactory Nvidia embedder 工厂

func (*NvidiaFactory) Create

func (f *NvidiaFactory) Create(ctx context.Context, cfg *Config) (Embedder, error)

func (*NvidiaFactory) Name

func (f *NvidiaFactory) Name() string

func (*NvidiaFactory) Supports

func (f *NvidiaFactory) Supports(provider string) bool

type OllamaEmbedder

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

OllamaEmbedder Ollama embedding 实现

func NewOllamaEmbedder

func NewOllamaEmbedder(cfg *Config) *OllamaEmbedder

NewOllamaEmbedder 创建 Ollama embedder

func (*OllamaEmbedder) Close

func (e *OllamaEmbedder) Close() error

func (*OllamaEmbedder) Dimension

func (e *OllamaEmbedder) Dimension() int

func (*OllamaEmbedder) Embed

func (e *OllamaEmbedder) Embed(ctx context.Context, texts []string) ([][]float32, error)

Embed 批量向量化

func (*OllamaEmbedder) EmbedSingle

func (e *OllamaEmbedder) EmbedSingle(ctx context.Context, text string) ([]float32, error)

EmbedSingle 单个文本向量化

func (*OllamaEmbedder) Name

func (e *OllamaEmbedder) Name() string

func (*OllamaEmbedder) Provider

func (e *OllamaEmbedder) Provider() string

type OllamaFactory

type OllamaFactory struct{}

OllamaFactory Ollama embedder 工厂

func (*OllamaFactory) Create

func (f *OllamaFactory) Create(ctx context.Context, cfg *Config) (Embedder, error)

func (*OllamaFactory) Name

func (f *OllamaFactory) Name() string

func (*OllamaFactory) Supports

func (f *OllamaFactory) Supports(provider string) bool

type OpenAIEmbedder

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

OpenAIEmbedder OpenAI embedding 实现

func NewOpenAIEmbedder

func NewOpenAIEmbedder(cfg *Config) *OpenAIEmbedder

NewOpenAIEmbedder 创建 OpenAI embedder

func (*OpenAIEmbedder) Close

func (e *OpenAIEmbedder) Close() error

func (*OpenAIEmbedder) Dimension

func (e *OpenAIEmbedder) Dimension() int

func (*OpenAIEmbedder) Embed

func (e *OpenAIEmbedder) Embed(ctx context.Context, texts []string) ([][]float32, error)

Embed 批量向量化

func (*OpenAIEmbedder) EmbedSingle

func (e *OpenAIEmbedder) EmbedSingle(ctx context.Context, text string) ([]float32, error)

EmbedSingle 单个文本向量化

func (*OpenAIEmbedder) Name

func (e *OpenAIEmbedder) Name() string

func (*OpenAIEmbedder) Provider

func (e *OpenAIEmbedder) Provider() string

type OpenAIFactory

type OpenAIFactory struct{}

OpenAIFactory OpenAI embedder 工厂

func (*OpenAIFactory) Create

func (f *OpenAIFactory) Create(ctx context.Context, cfg *Config) (Embedder, error)

func (*OpenAIFactory) Name

func (f *OpenAIFactory) Name() string

func (*OpenAIFactory) Supports

func (f *OpenAIFactory) Supports(provider string) bool

Jump to

Keyboard shortcuts

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