embedding

package
v0.2.3 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Embedding

type Embedding interface {
	// Embed 把单段查询文本转成向量(语义视为 query)
	Embed(ctx context.Context, text string) ([]float32, error)

	// EmbedBatch 批量向量化(语义视为 document,索引时用)
	EmbedBatch(ctx context.Context, texts []string) ([][]float32, error)

	// EmbedTyped 显式指定 task type 的批量调用。supplier 不支持 task type
	// 时退化为普通 EmbedBatch;支持的供应商(Gemini/Voyage)会按 task 优化。
	EmbedTyped(ctx context.Context, texts []string, task TaskType) ([][]float32, error)

	Dimension() int
	Name() string
}

Embedding 向量化接口,抽象不同 Embedding 供应商

type GeminiConfig

type GeminiConfig struct {
	APIKey string
	Model  string // 默认 text-embedding-004
	// 限额覆盖(0 = 用 paid tier 默认;用 free tier 时调小,如 RPM=100 TPM=30000)
	RPM int
	TPM int
}

GeminiConfig Gemini 配置

type GeminiEmbedding

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

GeminiEmbedding Google Gemini Embedding 实现

func NewGeminiEmbedding

func NewGeminiEmbedding(cfg GeminiConfig) *GeminiEmbedding

NewGeminiEmbedding 创建 Gemini Embedding 实例

func (*GeminiEmbedding) Dimension

func (e *GeminiEmbedding) Dimension() int

func (*GeminiEmbedding) Embed

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

func (*GeminiEmbedding) EmbedBatch

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

func (*GeminiEmbedding) EmbedTyped

func (e *GeminiEmbedding) EmbedTyped(ctx context.Context, texts []string, task TaskType) ([][]float32, error)

EmbedTyped 带 task_type 的批量调用,Gemini 据此选择最合适的向量空间。

func (*GeminiEmbedding) Name

func (e *GeminiEmbedding) Name() string

type OllamaConfig

type OllamaConfig struct {
	Model   string // 默认 nomic-embed-text
	BaseURL string // 默认 http://localhost:11434
	Dim     int    // 向量维度(不同模型不同)
}

OllamaConfig Ollama 配置

type OllamaEmbedding

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

OllamaEmbedding Ollama 本地 Embedding 实现

func NewOllamaEmbedding

func NewOllamaEmbedding(cfg OllamaConfig) *OllamaEmbedding

NewOllamaEmbedding 创建 Ollama Embedding 实例

func (*OllamaEmbedding) Dimension

func (e *OllamaEmbedding) Dimension() int

func (*OllamaEmbedding) Embed

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

func (*OllamaEmbedding) EmbedBatch

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

func (*OllamaEmbedding) EmbedTyped

func (e *OllamaEmbedding) EmbedTyped(ctx context.Context, texts []string, _ TaskType) ([][]float32, error)

EmbedTyped Ollama 没有 task type 概念,退化为 EmbedBatch

func (*OllamaEmbedding) Name

func (e *OllamaEmbedding) Name() string

type OpenAIConfig

type OpenAIConfig struct {
	APIKey  string
	Model   string // OpenAI 默认 text-embedding-3-small;自托管按服务实际 model id 填
	BaseURL string // 默认 https://api.openai.com/v1;LM Studio 一般是 http://host:1234/v1
	Dim     int    // 当未知模型或自托管时手动指定;0 = 用内置映射(仅 OpenAI 已知模型)
}

OpenAIConfig OpenAI(及兼容服务,如 LM Studio / vLLM / TEI)配置

type OpenAIEmbedding

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

OpenAIEmbedding OpenAI Embedding 实现

func NewOpenAIEmbedding

func NewOpenAIEmbedding(cfg OpenAIConfig) *OpenAIEmbedding

NewOpenAIEmbedding 创建 OpenAI 兼容 Embedding 实例

func (*OpenAIEmbedding) Dimension

func (e *OpenAIEmbedding) Dimension() int

func (*OpenAIEmbedding) Embed

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

func (*OpenAIEmbedding) EmbedBatch

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

func (*OpenAIEmbedding) EmbedTyped

func (e *OpenAIEmbedding) EmbedTyped(ctx context.Context, texts []string, _ TaskType) ([][]float32, error)

EmbedTyped OpenAI 兼容协议没有 task type 概念,退化为 EmbedBatch

func (*OpenAIEmbedding) Name

func (e *OpenAIEmbedding) Name() string

type TaskType

type TaskType int

TaskType 标识 embedding 调用的语义场景,让支持非对称编码的供应商 (如 Gemini 的 RETRIEVAL_DOCUMENT/CODE_RETRIEVAL_QUERY、VoyageAI 的 input_type) 能用更优的向量空间。

const (
	TaskUnspecified TaskType = iota
	TaskDocument             // 索引代码片段时使用
	TaskCodeQuery            // 用户用自然语言查代码时使用
)

type VoyageAIConfig

type VoyageAIConfig struct {
	APIKey string
	Model  string // 默认 voyage-code-3
}

VoyageAIConfig VoyageAI 配置

type VoyageAIEmbedding

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

VoyageAIEmbedding VoyageAI Embedding 实现

func NewVoyageAIEmbedding

func NewVoyageAIEmbedding(cfg VoyageAIConfig) *VoyageAIEmbedding

NewVoyageAIEmbedding 创建 VoyageAI Embedding 实例

func (*VoyageAIEmbedding) Dimension

func (e *VoyageAIEmbedding) Dimension() int

func (*VoyageAIEmbedding) Embed

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

func (*VoyageAIEmbedding) EmbedBatch

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

func (*VoyageAIEmbedding) EmbedTyped

func (e *VoyageAIEmbedding) EmbedTyped(ctx context.Context, texts []string, task TaskType) ([][]float32, error)

EmbedTyped 把 hce TaskType 映射到 VoyageAI 的 input_type

func (*VoyageAIEmbedding) Name

func (e *VoyageAIEmbedding) Name() string

Jump to

Keyboard shortcuts

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