OpenVINO 로컬 임베딩
OpenVINO 로컬 임베딩
OpenVINO™는 AI 추론을 최적화하고 배포하기 위한 오픈소스 툴킷이에요. OpenVINO™ Runtime은 x86/ARM CPU와 Intel GPU를 포함한 다양한 하드웨어 장치를 지원해요. 컴퓨터 비전, 자동 음성 인식, 자연어 처리 등 일반적인 작업에서 딥러닝 성능을 높이는 데 도움을 줘요.
Hugging Face 임베딩 모델은 OpenVINOEmbedding 또는 OpenVINOGENAIEmbedding 클래스를 통해 OpenVINO가 지원할 수 있고, OpenClip 모델은 OpenVINOClipEmbedding 클래스를 통해 지원해요.
Colab에서 이 노트북을 여는 경우라면 LlamaIndex 🦙 설치가 필요할 거예요.
%pip install llama-index-embeddings-openvino
!pip install llama-index
출처: 문서
본문
모델 내보내기 (Model Exporter)
create_and_save_openvino_model 함수로 모델을 OpenVINO IR 포맷으로 내보내고, 로컬 폴더에서 모델을 로드할 수 있어요.
from llama_index.embeddings.huggingface_openvino import OpenVINOEmbedding
OpenVINOEmbedding.create_and_save_openvino_model(
"BAAI/bge-small-en-v1.5", "./bge_ov"
)
/home2/ethan/intel/llama_index/llama_test/lib/python3.10/site-packages/openvino/runtime/__init__.py:10: DeprecationWarning: The `openvino.runtime` module is deprecated and will be removed in the 2026.0 release. Please replace `openvino.runtime` with `openvino`.
warnings.warn(
Saved OpenVINO model to ./bge_ov. Use it with `embed_model = OpenVINOEmbedding(model_id_or_path='./bge_ov')`.
모델 로드 (Model Loading)
Intel GPU가 있다면 device="gpu"를 지정해서 GPU에서 추론을 실행할 수 있어요.
ov_embed_model = OpenVINOEmbedding(model_id_or_path="./bge_ov", device="cpu")
embeddings = ov_embed_model.get_text_embedding("Hello World!")
print(len(embeddings))
print(embeddings[:5])
384
[-0.0030246784444898367, -0.012189766392111778, 0.04163273051381111, -0.037758368998765945, 0.02439723163843155]
OpenVINO GenAI로 모델 로드
런타임에서 PyTorch 의존성을 피하고 싶다면 OpenVINOGENAIEmbedding 클래스로 로컬 임베딩 모델을 로드할 수 있어요.
%pip install llama-index-embeddings-openvino-genai
from llama_index.embeddings.openvino_genai import OpenVINOGENAIEmbedding
ov_embed_model = OpenVINOGENAIEmbedding(model_path="./bge_ov", device="CPU")
/home2/ethan/intel/llama_index/llama_test/lib/python3.10/site-packages/openvino/runtime/__init__.py:10: DeprecationWarning: The `openvino.runtime` module is deprecated and will be removed in the 2026.0 release. Please replace `openvino.runtime` with `openvino`.
warnings.warn(
embeddings = ov_embed_model.get_text_embedding("Hello World!")
print(len(embeddings))
print(embeddings[:5])
384
[-0.0030246784444898367, -0.012189766392111778, 0.04163273051381111, -0.037758368998765945, 0.02439723163843155]
OpenClip 모델 내보내기
OpenVINOClipEmbedding 클래스는 OpenVINO 런타임에서 open_clip 모델을 내보내고 로드하는 것을 지원해요.
%pip install open_clip_torch
from llama_index.embeddings.huggingface_openvino import (
OpenVINOClipEmbedding,
)
OpenVINOClipEmbedding.create_and_save_openvino_model(
"laion/CLIP-ViT-B-32-laion2B-s34B-b79K",
"ViT-B-32-ov",
)
멀티모달 모델 로드 (MultiModal Model Loading)
Intel GPU가 있다면 device="GPU"를 지정해서 GPU에서 추론을 실행할 수 있어요.
ov_clip_model = OpenVINOClipEmbedding(
model_id_or_path="./ViT-B-32-ov", device="CPU"
)
OpenVINO로 이미지와 쿼리 임베딩하기
from PIL import Image
import requests
from numpy import dot
from numpy.linalg import norm
image_url = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcStMP8S3VbNCqOQd7QQQcbvC_FLa1HlftCiJw&s"
im = Image.open(requests.get(image_url, stream=True).raw)
print("Image:")
display(im)
im.save("logo.jpg")
image_embeddings = ov_clip_model.get_image_embedding("logo.jpg")
print("Image dim:", len(image_embeddings))
print("Image embed:", image_embeddings[:5])
text_embeddings = ov_clip_model.get_text_embedding(
"Logo of a pink blue llama on dark background"
)
print("Text dim:", len(text_embeddings))
print("Text embed:", text_embeddings[:5])
cos_sim = dot(image_embeddings, text_embeddings) / (
norm(image_embeddings) * norm(text_embeddings)
)
print("Cosine similarity:", cos_sim)
Image:

Image dim: 512
Image embed: [-0.03019799292087555, -0.09727513045072556, -0.6659489274024963, -0.025658488273620605, 0.05379948765039444]
Text dim: 512
Text embed: [-0.15816599130630493, -0.25564345717430115, 0.22376027703285217, -0.34983670711517334, 0.31968361139297485]
Cosine similarity: 0.27307014923203976
자세한 내용을 보려면 아래를 참고하세요.