embedder

package
v1.1.10 Latest Latest
Warning

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

Go to latest
Published: May 11, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ViT 标准输入尺寸
	ViTImageSize = 224

	// ImageNet 归一化参数 (CLIP 使用的)
	ImageNetMeanR = 0.48145466
	ImageNetMeanG = 0.45782750
	ImageNetMeanB = 0.40821073
	ImageNetStdR  = 0.26862954
	ImageNetStdG  = 0.26130258
	ImageNetStdB  = 0.27577711
)
View Source
const (
	DefaultMaxLength    = 52  // Chinese-CLIP 默认序列长度
	BGEDefaultMaxLength = 512 // BGE 默认序列长度
)

Variables

This section is empty.

Functions

This section is empty.

Types

type BGEEmbedder

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

BGEEmbedder 使用 onnxruntime-go 进行 BGE ONNX 模型推理

func NewBGEEmbedder

func NewBGEEmbedder(opts ...BGEOption) (*BGEEmbedder, error)

NewBGEEmbedder 创建 BGE 向量化器 默认从 ./models/bge-base-zh-v1.5/onnx/model.onnx 加载模型

func (*BGEEmbedder) Bulk

func (e *BGEEmbedder) Bulk(chunks []*core.Chunk) ([]*core.Vector, error)

Bulk 批量计算 chunks 的向量(只处理非图片 chunk) 图片 chunk 会被忽略(由多模态 embedder 如 ChineseClip 处理)

func (*BGEEmbedder) Calc

func (e *BGEEmbedder) Calc(chunk *core.Chunk) (*core.Vector, error)

Calc 计算单个 chunk 的向量

func (*BGEEmbedder) CalcImage

func (e *BGEEmbedder) CalcImage(data []byte) (*core.Vector, error)

CalcImage BGE 不支持图像向量化

func (*BGEEmbedder) CalcImages

func (e *BGEEmbedder) CalcImages(data [][]byte) ([][]float32, error)

CalcImages BGE 不支持图像向量化

func (*BGEEmbedder) CalcText

func (e *BGEEmbedder) CalcText(text string) (*core.Vector, error)

CalcText 计算文本的向量

func (*BGEEmbedder) Close

func (e *BGEEmbedder) Close() error

Close 释放资源

func (*BGEEmbedder) Dim

func (e *BGEEmbedder) Dim() int

func (*BGEEmbedder) Multimoding

func (e *BGEEmbedder) Multimoding() bool

type BGEOption

type BGEOption func(*bgeConfig)

BGEOption 是 BGEEmbedder 的配置选项

func WithBGAVocab

func WithBGAVocab(path string) BGEOption

WithBGAVocab 设置外部 vocab 文件路径(支持 vocab.txt 或 tokenizer.json)

func WithBGEDimension

func WithBGEDimension(dim int) BGEOption

WithBGEDimension 设置输出向量维度 (base=768, small=384)

func WithBGEModelFile

func WithBGEModelFile(name string) BGEOption

WithBGEModel 设置模型名称 (不含路径)

type ChineseClipEmbedder

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

ChineseClipEmbedder 使用 onnxruntime-go 进行 Chinese-CLIP ONNX 模型推理

func NewChineseClipEmbedder

func NewChineseClipEmbedder(opts ...ChineseClipOption) (*ChineseClipEmbedder, error)

NewChineseClipEmbedder 创建 Chinese-CLIP 向量化器 默认从 ./models/model.onnx 加载模型,可通过 WithModel/WithModelDir 自定义

func (*ChineseClipEmbedder) Bulk

func (e *ChineseClipEmbedder) Bulk(chunks []*core.Chunk) ([]*core.Vector, error)

Bulk 批量计算 chunks 的向量 根据 MIMEType 判断类型:图片使用 imageEncoder,文本使用 textEncoder

func (*ChineseClipEmbedder) Calc

func (e *ChineseClipEmbedder) Calc(chunk *core.Chunk) (*core.Vector, error)

Calc 计算单个 chunk 的向量

func (*ChineseClipEmbedder) CalcImage

func (e *ChineseClipEmbedder) CalcImage(data []byte) (*core.Vector, error)

CalcImage 计算图片的向量

func (*ChineseClipEmbedder) CalcImages

func (e *ChineseClipEmbedder) CalcImages(data [][]byte) ([][]float32, error)

CalcImages 批量计算图片的向量

func (*ChineseClipEmbedder) CalcText

func (e *ChineseClipEmbedder) CalcText(text string) (*core.Vector, error)

CalcText 计算文本的向量

func (*ChineseClipEmbedder) Close

func (e *ChineseClipEmbedder) Close() error

Close 释放资源

func (*ChineseClipEmbedder) Dim

func (e *ChineseClipEmbedder) Dim() int

func (*ChineseClipEmbedder) Multimoding

func (e *ChineseClipEmbedder) Multimoding() bool

type ChineseClipOption

type ChineseClipOption func(*chineseClipConfig)

ChineseClipOption 是 ChineseClipEmbedder 的配置选项

func WithModelFile

func WithModelFile(filePath string) ChineseClipOption

WithModelFile 设置模型目录

func WithVocab

func WithVocab(path string) ChineseClipOption

WithVocab 设置外部 vocab 文件路径(覆盖内嵌 vocab)

type ImageEncoder

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

ImageEncoder 通用图像编码器

func NewImageEncoder

func NewImageEncoder(config ImageEncoderConfig) (*ImageEncoder, error)

NewImageEncoder 创建图像编码器

func (*ImageEncoder) Close

func (e *ImageEncoder) Close() error

Close 释放资源

func (*ImageEncoder) Dim

func (e *ImageEncoder) Dim() int

Dim 返回向量维度

func (*ImageEncoder) Embed

func (e *ImageEncoder) Embed(images [][]float32) ([][]float32, error)

Embed 图像向量化 逐张处理图像,将预处理后的数据写入 session 绑定的 pixel_values 张量, 调用 Run() 推理后从绑定的输出张量读取结果。

type ImageEncoderConfig

type ImageEncoderConfig struct {
	ModelPath   string   // ONNX 模型路径
	InputNames  []string // 输入节点名称
	OutputNames []string // 输出节点名称
	ImageSize   int      // 图像尺寸 (224)
	SeqLength   int      // 文本序列长度 (用于占位符)
	Dimension   int      // 输出向量维度 (512)
}

ImageEncoderConfig 图像编码器配置

type ImageProcessor

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

ImageProcessor 图像预处理器,用于 ViT/CLIP 图像编码

func NewImageProcessor

func NewImageProcessor(imageSize int) *ImageProcessor

NewImageProcessor 创建图像预处理器

func (*ImageProcessor) Preprocess

func (p *ImageProcessor) Preprocess(data []byte) ([]float32, error)

Preprocess 预处理图像:decode + resize + 归一化 输入: 原始图像数据 (JPEG/PNG等) 输出: [3, H, W] 的 float32 数组 (CHW 格式,符合 ViT 输入)

func (*ImageProcessor) PreprocessFromImage

func (p *ImageProcessor) PreprocessFromImage(img image.Image) ([]float32, error)

PreprocessFromImage 直接从 image.Image 预处理

type TextEncoder

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

TextEncoder 通用文本编码器

func NewTextEncoder

func NewTextEncoder(config TextEncoderConfig, tokenizer *VocabTokenizer) (*TextEncoder, error)

NewTextEncoder 创建文本编码器

func (*TextEncoder) Close

func (e *TextEncoder) Close() error

Close 释放资源

func (*TextEncoder) Dim

func (e *TextEncoder) Dim() int

Dim 返回向量维度

func (*TextEncoder) Embed

func (e *TextEncoder) Embed(texts []string) ([][]float32, error)

Embed 文本向量化 逐条处理文本,将 tokenized 数据写入 session 绑定的输入张量, 调用 Run() 推理后从绑定的输出张量读取结果。

type TextEncoderConfig

type TextEncoderConfig struct {
	ModelPath     string   // ONNX 模型路径
	InputNames    []string // 输入节点名称
	OutputNames   []string // 输出节点名称
	SeqLength     int      // 序列长度
	Dimension     int      // 输出向量维度
	ImageSize     int      // 图像尺寸 (0 表示不需要 pixel_values)
	UseCLSPooling bool     // true: 从 [batch, seq, hidden] 提取 CLS; false: 直接使用 [batch, dim]
}

TextEncoderConfig 文本编码器配置

type VocabTokenizer

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

VocabTokenizer 基于 vocab 的 BERT 分词器 支持两种 vocab 格式:

  • vocab.txt: 每行一个 token
  • tokenizer.json: HuggingFace 标准格式

func NewBGEVocabTokenizer

func NewBGEVocabTokenizer(maxLength int) (*VocabTokenizer, error)

NewBGEVocabTokenizer 创建基于内嵌 BGE vocab 的分词器

func NewVocabTokenizer

func NewVocabTokenizer(maxLength int) (*VocabTokenizer, error)

NewVocabTokenizer 创建基于内嵌 Chinese-CLIP vocab 的分词器

func NewVocabTokenizerFromFile

func NewVocabTokenizerFromFile(vocabPath string, maxLength int) (*VocabTokenizer, error)

NewVocabTokenizerFromFile 从外部文件加载 vocab 支持 vocab.txt (每行一个token) 和 HuggingFace tokenizer.json

func (*VocabTokenizer) Close

func (t *VocabTokenizer) Close() error

Close 关闭分词器(用于释放资源)

func (*VocabTokenizer) Tokenize

func (t *VocabTokenizer) Tokenize(text string) (inputIDs []int64, attentionMask []int64, err error)

Tokenize 将文本转换为 BERT 输入特征

func (*VocabTokenizer) VocabSize

func (t *VocabTokenizer) VocabSize() int

VocabSize 返回词汇表大小

Jump to

Keyboard shortcuts

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