Implementation:FlagOpen FlagEmbedding FlagAutoModel From Finetuned
| Field | Value |
|---|---|
| type | API Doc |
| source | Repo: FlagOpen/FlagEmbedding https://github.com/FlagOpen/FlagEmbedding |
| domains | NLP, Information_Retrieval |
Overview
Concrete tool for loading BGE embedding models provided by the FlagEmbedding library.
Description
FlagAutoModel is a factory class that automatically selects the appropriate embedder implementation. It uses AUTO_EMBEDDER_MAPPING to detect model type from the model name, or accepts an explicit model_class parameter. Returns an instance of an AbsEmbedder subclass.
The mapping resolves to one of four concrete embedder classes:
- BaseEmbedder -- for encoder-only models
- M3Embedder -- for multilingual M3 models (dense + sparse + ColBERT)
- BaseLLMEmbedder -- for decoder-only LLM-based embedders
- ICLLLMEmbedder -- for in-context learning LLM embedders
Usage
Import when loading any BGE embedding model for inference, evaluation, or validation of fine-tuned models.
Code Reference
Source Location: Repository FlagOpen/FlagEmbedding, File: FlagEmbedding/inference/auto_embedder.py, Lines: L23-111
Signature:
@classmethod
def from_finetuned(
cls,
model_name_or_path: str,
model_class: Optional[Union[str, EmbedderModelClass]] = None,
normalize_embeddings: bool = True,
use_fp16: bool = True,
query_instruction_for_retrieval: Optional[str] = None,
devices: Optional[Union[str, List[str]]] = None,
pooling_method: Optional[str] = None,
trust_remote_code: Optional[bool] = None,
query_instruction_format: Optional[str] = None,
**kwargs,
) -> AbsEmbedder:
Import:
from FlagEmbedding import FlagAutoModel
I/O Contract
Inputs:
| Parameter | Type | Required | Description |
|---|---|---|---|
| model_name_or_path | str | Yes | HuggingFace model name or local path |
| model_class | Optional[str] | No | One of: encoder-only-base, encoder-only-m3, decoder-only-base, decoder-only-icl |
| normalize_embeddings | bool | No | Normalize output vectors (default True) |
| use_fp16 | bool | No | Half-precision inference (default True) |
| query_instruction_for_retrieval | Optional[str] | No | Instruction prefix for queries |
| devices | Optional[Union[str, List[str]]] | No | GPU devices for multi-GPU inference |
| pooling_method | Optional[str] | No | cls, mean, or last_token |
| trust_remote_code | Optional[bool] | No | Trust remote code from HuggingFace Hub |
| query_instruction_format | Optional[str] | No | Template for query instruction formatting |
Outputs:
| Name | Type | Description |
|---|---|---|
| return | AbsEmbedder | Instance of BaseEmbedder, M3Embedder, BaseLLMEmbedder, or ICLLLMEmbedder |
Usage Examples
Example 1: Basic loading of an encoder-only model
from FlagEmbedding import FlagAutoModel
model = FlagAutoModel.from_finetuned('BAAI/bge-base-en-v1.5')
Example 2: Explicit model_class specification
from FlagEmbedding import FlagAutoModel
model = FlagAutoModel.from_finetuned(
'BAAI/bge-m3',
model_class='encoder-only-m3'
)
Example 3: Multi-GPU loading
from FlagEmbedding import FlagAutoModel
model = FlagAutoModel.from_finetuned(
'BAAI/bge-base-en-v1.5',
devices=['cuda:0', 'cuda:1']
)