임베딩 생성하기
임베딩 생성하기 (Generate embeddings)
RAG 같은 검색 기반 기능을 만들 때는 텍스트를 벡터 임베딩(embedding) 으로 바꿔야 해요. Ollama의 POST /api/embed 엔드포인트는 입력 텍스트를 나타내는 벡터 임베딩을 생성해 줘요. 문장 하나는 물론, 여러 텍스트를 한 번에 보내 각각의 임베딩을 얻을 수 있어요.
엔드포인트
- 경로:
POST /api/embed - 요약: 입력 텍스트를 나타내는 벡터 임베딩을 생성합니다.
- operationId:
embed
요청 본문의 필수 필드는 model 과 input 이에요. input 은 문자열 하나 또는 문자열 배열로, 임베딩을 만들 텍스트를 담아요.
기본 요청
curl http://localhost:11434/api/embed -d '{
"model": "embeddinggemma",
"input": "Generate embeddings for this text"
}'
응답에는 model, 그리고 입력 텍스트별 벡터 배열인 embeddings 가 담겨요. 각 벡터는 실수 배열로 표현돼요.
{
"model": "embeddinggemma",
"embeddings": [
[0.010071029, -0.0017594862]
]
}
차원 줄이기
dimensions 필드로 생성할 임베딩의 차원 수를 지정할 수 있어요. 예를 들어 128차원으로 줄여서 저장 공간을 아끼고 싶다면 이렇게 요청해요.
curl http://localhost:11434/api/embed -d '{
"model": "embeddinggemma",
"input": "Generate embeddings for this text",
"dimensions": 128
}'
컨텍스트 초과 처리
truncate 필드는 입력이 컨텍스트 윈도우를 넘어설 때의 동작을 정해요. true(기본값)면 초과 입력을 잘라내고, false 면 오류를 반환해요.
응답 필드
응답에는 model 과 embeddings 외에 total_duration(총 생성 시간, 나노초), load_duration(로드 시간), prompt_eval_count(임베딩 생성에 처리된 입력 토큰 수) 같은 메타 정보가 포함돼요.