embedder

package
v0.5.13 Latest Latest
Warning

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

Go to latest
Published: Aug 13, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package embedder 提供 RAG 系统的文本嵌入生成器

Embedder 用于将文本转换为向量:

  • OpenAIEmbedder: 使用 OpenAI Embedding API
  • CachedEmbedder: 带缓存的 Embedder 包装器(带 LRU 淘汰和防击穿)
  • BatchEmbedder: 批量处理的 Embedder 包装器

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CacheOption

type CacheOption func(*CachedEmbedder)

CacheOption CachedEmbedder 选项

func WithMaxCacheSize

func WithMaxCacheSize(size int) CacheOption

WithMaxCacheSize 设置最大缓存大小

type CachedEmbedder

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

CachedEmbedder 带 LRU 缓存的 Embedder

特性:

  • LRU 淘汰策略:当缓存满时自动淘汰最久未使用的条目
  • 防缓存击穿:使用 singleflight 确保相同文本并发请求只调用一次底层 Embedder
  • 线程安全:所有方法都是并发安全的

func NewCachedEmbedder

func NewCachedEmbedder(embedder vector.Embedder, opts ...CacheOption) *CachedEmbedder

NewCachedEmbedder 创建带缓存的 Embedder

func (*CachedEmbedder) CacheHitRate

func (e *CachedEmbedder) CacheHitRate() float64

CacheHitRate 返回缓存命中率(调试用,需要额外跟踪) 注意:当前实现不跟踪命中率,如需要可添加 hits/misses 计数器

func (*CachedEmbedder) CacheSize

func (e *CachedEmbedder) CacheSize() int

CacheSize 返回缓存大小

func (*CachedEmbedder) ClearCache

func (e *CachedEmbedder) ClearCache()

ClearCache 清空缓存

func (*CachedEmbedder) Dimension

func (e *CachedEmbedder) Dimension() int

Dimension 返回向量维度

func (*CachedEmbedder) Embed

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

Embed 将文本列表转换为向量(带 LRU 缓存和防击穿)

func (*CachedEmbedder) EmbedOne

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

EmbedOne 将单个文本转换为向量

type EmbeddingProvider

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

EmbeddingProvider 嵌入提供者接口 通常由 ai-core 的 llm.Provider 实现

type FuncEmbedder

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

FuncEmbedder 函数式 Embedder

func NewFuncEmbedder

func NewFuncEmbedder(dimension int, fn func(ctx context.Context, texts []string) ([][]float32, error)) *FuncEmbedder

NewFuncEmbedder 创建函数式 Embedder

func (*FuncEmbedder) Dimension

func (e *FuncEmbedder) Dimension() int

Dimension 返回向量维度

func (*FuncEmbedder) Embed

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

Embed 调用函数生成向量

func (*FuncEmbedder) EmbedOne

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

EmbedOne 嵌入单个文本

type MockEmbedder

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

MockEmbedder 模拟 Embedder(用于测试)

func NewMockEmbedder

func NewMockEmbedder(dimension int) *MockEmbedder

NewMockEmbedder 创建模拟 Embedder

func (*MockEmbedder) Dimension

func (e *MockEmbedder) Dimension() int

Dimension 返回向量维度

func (*MockEmbedder) Embed

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

Embed 模拟嵌入

func (*MockEmbedder) EmbedOne

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

EmbedOne 模拟嵌入单个文本

type ModelEmbeddingProvider

type ModelEmbeddingProvider interface {
	EmbeddingProvider
	EmbedWithModel(ctx context.Context, model string, texts []string) ([][]float32, error)
}

ModelEmbeddingProvider 支持指定模型的嵌入提供者(可选接口)

type OpenAIEmbedder

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

OpenAIEmbedder OpenAI Embedding 生成器

func NewOpenAIEmbedder

func NewOpenAIEmbedder(provider EmbeddingProvider, opts ...OpenAIOption) *OpenAIEmbedder

NewOpenAIEmbedder 创建 OpenAI Embedder

func (*OpenAIEmbedder) Dimension

func (e *OpenAIEmbedder) Dimension() int

Dimension 返回向量维度

func (*OpenAIEmbedder) Embed

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

Embed 将文本列表转换为向量

func (*OpenAIEmbedder) EmbedOne

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

EmbedOne 将单个文本转换为向量

type OpenAIOption

type OpenAIOption func(*OpenAIEmbedder)

OpenAIOption OpenAIEmbedder 选项

func WithBatchSize

func WithBatchSize(size int) OpenAIOption

WithBatchSize 设置批量大小

func WithDimension

func WithDimension(dim int) OpenAIOption

WithDimension 设置向量维度

func WithModel

func WithModel(model string) OpenAIOption

WithModel 设置模型

Jump to

Keyboard shortcuts

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