OptimumTextEmbedder
OptimumTextEmbedder
Hugging Face Optimum 라이브러리로 로드한 모델을 사용해 텍스트를 임베딩하는 컴포넌트예요.
출처: 문서
본문
OptimumTextEmbedder는 HuggingFace Optimum 라이브러리로 로드한 모델로 텍스트 문자열을 임베딩해요. 고속 추론을 위해 ONNX runtime을 사용하죠.
기본 모델은 sentence-transformers/all-mpnet-base-v2예요.
다른 임베더와 마찬가지로 이 컴포넌트는 지시사항을 포함하기 위해 접두사(와 접미사)를 추가할 수 있어요. 자세한 내용은 컴포넌트의 API 참조를 확인하세요.
다양한 모드로 제어할 수 있는 Optimum Embedder 특유의 유용한 파라미터가 세 가지 있어요.
- Pooling: 가변 크기의 문장 임베딩에서 고정 크기의 문장 임베딩을 생성해요.
- Optimization: 모델에 그래프 최적화를 적용하고 추론 속도를 높여요.
- Quantization: 계산 및 메모리 비용을 줄여요.
사용 가능한 모든 모드의 세부 내용은 Optimum API 참조에서 확인할 수 있어요.
인증
Hugging Face API 토큰 인증은 Serverless Inference API나 Inference Endpoints를 통해 비공개 또는 gated 모델에 접근할 때만 필요해요.
이 컴포넌트는 HF_API_TOKEN 또는 HF_TOKEN 환경 변수를 사용하고, 초기화할 때 Hugging Face API 토큰을 넘길 수도 있어요. 자세한 내용은 Secret Management 페이지를 참고하세요.
더 알아보기 (Learn more)
Haystack에서 이 통합을 쓰려면 설치해요.
pip install optimum-haystack
단독으로 쓰기
from haystack_integrations.components.embedders.optimum import OptimumTextEmbedder
text_to_embed = "I love pizza!"
text_embedder = OptimumTextEmbedder(model="sentence-transformers/all-mpnet-base-v2")
print(text_embedder.run(text_to_embed))
# {'embedding': [-0.07804739475250244, 0.1498992145061493, ...]}
파이프라인에서 쓰기
이 예제는 실행하려면 GPU 지원이 필요하다는 점을 참고하세요.
from haystack import Pipeline
from haystack_integrations.components.embedders.optimum import (
OptimumTextEmbedder,
OptimumEmbedderPooling,
OptimumEmbedderOptimizationConfig,
OptimumEmbedderOptimizationMode,
)
pipeline = Pipeline()
embedder = OptimumTextEmbedder(
model="intfloat/e5-base-v2",
normalize_embeddings=True,
onnx_execution_provider="CUDAExecutionProvider",
optimizer_settings=OptimumEmbedderOptimizationConfig(
mode=OptimumEmbedderOptimizationMode.O4,
for_gpu=True,
),
working_dir="/tmp/optimum",
pooling_mode=OptimumEmbedderPooling.MEAN,
)
pipeline.add_component("embedder", embedder)
results = pipeline.run(
{
"embedder": {
"text": "Ex profunditate antique doctrinae, Ad caelos supra semper, Hoc incantamentum evoco, draco apparet, Incantamentum iam transactum est",
},
},
)
print(results["embedder"]["embedding"])