임베딩 생성하기

임베딩 생성하기 (Generate embeddings)

RAG 같은 검색 기반 기능을 만들 때는 텍스트를 벡터 임베딩(embedding) 으로 바꿔야 해요. Ollama의 POST /api/embed 엔드포인트는 입력 텍스트를 나타내는 벡터 임베딩을 생성해 줘요. 문장 하나는 물론, 여러 텍스트를 한 번에 보내 각각의 임베딩을 얻을 수 있어요.

출처: Ollama 공식 문서 — Generate embeddings

엔드포인트

  • 경로: POST /api/embed
  • 요약: 입력 텍스트를 나타내는 벡터 임베딩을 생성합니다.
  • operationId: embed

요청 본문의 필수 필드는 modelinput 이에요. 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 면 오류를 반환해요.

응답 필드

응답에는 modelembeddings 외에 total_duration(총 생성 시간, 나노초), load_duration(로드 시간), prompt_eval_count(임베딩 생성에 처리된 입력 토큰 수) 같은 메타 정보가 포함돼요.

더 알아보기