LiteLLM에서 임베딩(Embedding) 사용하기
LiteLLM에서 임베딩(Embedding) 사용하기
검색이나 RAG를 만들 때 텍스트를 벡터로 바꾸는 임베딩은 필수예요. LiteLLM의 embedding() 함수는 OpenAI 규격의 임베딩 인터페이스를 그대로 써서, 공급자가 달라도 동일한 방식으로 호출할 수 있게 해줘요. 여기서는 기본 사용법부터 비동기, 프록시 사용, 그리고 이미지 임베딩까지 핵심 패턴을 살펴볼게요.
출처: 공식문서
퀵 스타트
embedding에 모델과 input(벡터로 바꿀 텍스트 리스트)을 넘기면 돼요. 가장 간단한 형태예요.
from litellm import embedding
import os
os.environ['OPENAI_API_KEY'] = ""
response = embedding(model='text-embedding-ada-002', input=["good morning from litellm"])
input에 문자열 여러 개를 넣으면 한 번의 호출로 여러 입력을 각각 임베딩할 수 있어요.
비동기 사용법 — aembedding()
embedding의 비동기 버전인 aembedding도 제공돼요. 대량 텍스트를 처리할 때 비동기로 동시에 호출하면 속도를 크게 올릴 수 있어요.
from litellm import aembedding
import asyncio
async def get_embedding():
response = await aembedding(
model='text-embedding-ada-002',
input=["good morning from litellm"]
)
return response
response = asyncio.run(get_embedding())
print(response)
프록시(Proxy)에서 사용하기
LiteLLM Proxy를 쓰면 /embeddings 엔드포인트로도 임베딩을 호출할 수 있어요. 먼저 config에 모델을 등록하고 프록시를 띄운 뒤, OpenAI 규격 curl로 호출하면 됩니다.
model_list:
- model_name: textembedding-gecko
litellm_params:
model: vertex_ai/textembedding-gecko
general_settings:
master_key: sk-1234
litellm --config /path/to/config.yaml
# RUNNING on http://0.0.0.0:4000
curl --location 'http://0.0.0.0:4000/embeddings' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data '{"input": ["Academia.edu uses"], "model": "textembedding-gecko", "encoding_format": "base64"}'
이미지 임베딩
embedding으로 텍스트만 다루는 건 아니에요. 이미지 임베딩을 지원하는 모델이라면, input에 base64로 인코딩한 이미지 문자열을 넘기면 이미지도 벡터로 바꿀 수 있어요. 멀티모달 검색을 만들 때 유용해요.
from litellm import embedding
import os
# set your api key
os.environ["COHERE_API_KEY"] = ""
response = embedding(model="cohere/embed-english-v3.0", input=["<base64 encoded image>"])
주요 입력 파라미터
litellm.embedding()에 넘기는 필수 필드와 주요 옵션을 정리하면 이렇게 돼요.
필수 필드
model: string— 사용할 모델 ID (예:model='text-embedding-ada-002')input: string or array— 임베딩할 텍스트. 여러 입력을 한 번에 처리하려면 문자열 배열이나 토큰 배열 배열을 넘겨요. 모델의 최대 입력 토큰을 넘으면 안 되고(예:text-embedding-ada-002는 8192 토큰), 빈 문자열이면 안 되며, 배열은 2048 차원 이하여야 해요.
input=["good morning from litellm"]
선택 필드 (LiteLLM 고유)
dimensions: integer— 결과 임베딩의 차원 수. OpenAI/Azure의text-embedding-3이후 모델에서만 지원돼요.encoding_format: string— 임베딩 반환 형식."float"또는"base64". 기본값은"float".user: string— 최종 사용자를 식별하는 고유 ID.
LiteLLM이 인식하지 못하는 파라미터는 공급자별 파라미터로 취급되어 요청 본문의 kwargs로 전달된다는 점을 기억해 두면 좋아요.
출력 형태
출력은 OpenAI 규격의 리스트 객체를 반환해요. data 배열 안에 임베딩 벡터가, usage에 토큰 사용량이 담겨요.
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [
-0.0022326677571982145,
0.010749882087111473,
...
]
}
],
"model": "text-embedding-ada-002-v2",
"usage": {
"prompt_tokens": 10,
"total_tokens": 10
}
}
더 알아보기
- 임베딩을 벡터 스토어에 저장하고 검색하는 방법은 LiteLLM의 벡터 스토어(지식 베이스) 가이드를 참고해요.
- 공급자별 임베딩 모델 목록은 해당 공급자 문서(Vertex AI, Bedrock 등)를 함께 봐요.