Ollama 임베딩 모델 통합

Ollama 임베딩 모델 통합

Ollama의 로컬 임베딩 모델을 LangChain4j에서 쓰는 방법이에요. Ollama를 로컬에 띄워 두면 인터넷 없이도 텍스트를 벡터로 바꿔서 검색(RAG)에 쓸 수 있어요. OllamaEmbeddingModel 하나로 충분히 간단하게 연결돼요.

출처: 공식문서

Maven 의존성

<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-ollama</artifactId>
    <version>1.20.0</version>
</dependency>

APIs

  • OllamaEmbeddingModel

사용법

EmbeddingModel embeddingModel = OllamaEmbeddingModel.builder()
    .baseUrl("http://localhost:11434")
    .modelName("all-minilm")
    .build();

Response<Embedding> response = embeddingModel.embed("Hello, world!");
Embedding embedding = response.content();

기본 포트인 http://localhost:11434baseUrl로 주고, 사용할 로컬 임베딩 모델 이름을 modelName으로 지정하면 돼요.

요청/응답 API와 관찰 가능성 (Observability)

OllamaEmbeddingModel은 편의 메서드 외에 embed(EmbeddingRequest)도 지원해요. Ollama의 임베딩 API는 텍스트 전용이라, 입력 타입이나 이미지 입력을 설정한 요청은 UnsupportedFeatureException으로 즉시 실패해요. 토큰 사용량(prompt_eval_count)은 응답 메타데이터로 보고돼요.

Ollama의 선택적 출력 dimensions는 모델에 따라 달라져서(출력 크기 축소를 지원하는 모델만) 호출별 파라미터가 아니라 빌더에서 .dimensions(...)로 구성해요.

요청·응답·오류를 관찰하려면 listeners를 붙여요:

EmbeddingModel embeddingModel = OllamaEmbeddingModel.builder()
    .baseUrl("http://localhost:11434")
    .modelName("all-minilm")
    .listeners(List.of(myEmbeddingModelListener))
    .build();

예시

더 알아보기