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:11434를 baseUrl로 주고, 사용할 로컬 임베딩 모델 이름을 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();