Documentation
¶
Overview ¶
Package embedder 提供 RAG 系统的文本嵌入生成器
Embedder 用于将文本转换为向量:
- OpenAIEmbedder: 使用 OpenAI Embedding API
- CachedEmbedder: 带缓存的 Embedder 包装器(带 LRU 淘汰和防击穿)
- BatchEmbedder: 批量处理的 Embedder 包装器
Index ¶
- type CacheOption
- type CachedEmbedder
- func (e *CachedEmbedder) CacheHitRate() float64
- func (e *CachedEmbedder) CacheSize() int
- func (e *CachedEmbedder) ClearCache()
- func (e *CachedEmbedder) Dimension() int
- func (e *CachedEmbedder) Embed(ctx context.Context, texts []string) ([][]float32, error)
- func (e *CachedEmbedder) EmbedOne(ctx context.Context, text string) ([]float32, error)
- type EmbeddingProvider
- type FuncEmbedder
- type MockEmbedder
- type ModelEmbeddingProvider
- type OpenAIEmbedder
- type OpenAIOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
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 计数器
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
type MockEmbedder ¶
type MockEmbedder struct {
// contains filtered or unexported fields
}
MockEmbedder 模拟 Embedder(用于测试)
func NewMockEmbedder ¶
func NewMockEmbedder(dimension int) *MockEmbedder
NewMockEmbedder 创建模拟 Embedder
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
Click to show internal directories.
Click to hide internal directories.