Jina Embeddings
Jina AI가 개발한 텍스트 임베딩 모델 시리즈. 긴 컨텍스트 지원과 다국어 처리가 강점이며, RAG 파이프라인에 적합하다.
모델 라인업
| 모델 | 차원 | 최대 토큰 | 특징 |
|---|---|---|---|
jina-embeddings-v2-base-en |
768 | 8,192 | 영어 특화, 기본형 |
jina-embeddings-v2-base-multilingual |
768 | 8,192 | 다국어 (한국어 포함) |
jina-embeddings-v3 |
1,024 | 8,192 | 최신, 다국어, Task 특화 지원 |
jina-embeddings-v3이 현재 최신 권장 모델.
주요 특징
긴 컨텍스트 (8,192 토큰)
기존 임베딩 모델(OpenAI ada-002: 8,192, Google: 2,048)과 비교해 긴 문서도 잘라내지 않고 처리 가능.
Task 특화 임베딩 (v3)
task 파라미터로 용도에 맞는 임베딩 생성:
| task | 설명 |
|---|---|
retrieval.query |
검색 쿼리 임베딩 (RAG 질문 측) |
retrieval.passage |
검색 대상 문서 임베딩 (RAG 문서 측) |
text-matching |
유사도 계산, 중복 탐지 |
classification |
텍스트 분류 |
separation |
클러스터링 |
다국어 지원
한국어를 포함한 100개 이상 언어 지원. 한국어 문서 임베딩 시 별도 전처리 불필요.
API 사용법
REST API
curl https://api.jina.ai/v1/embeddings \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jina-embeddings-v3",
"task": "retrieval.passage",
"input": ["임베딩할 텍스트"]
}'Python
import requests
def embed(texts: list[str], task: str = "retrieval.passage") -> list[list[float]]:
response = requests.post(
"https://api.jina.ai/v1/embeddings",
headers={"Authorization": f"Bearer {JINA_API_KEY}"},
json={
"model": "jina-embeddings-v3",
"task": task,
"input": texts,
},
)
return [item["embedding"] for item in response.json()["data"]]
# 문서 인덱싱
doc_embeddings = embed(documents, task="retrieval.passage")
# 쿼리 검색
query_embedding = embed([query], task="retrieval.query")RAG 파이프라인 적용
쿼리와 문서에 다른 task를 지정하는 것이 핵심.
[문서 인덱싱] 텍스트 → embed(task="retrieval.passage") → 벡터 DB 저장
[검색 시] 질문 → embed(task="retrieval.query") → 코사인 유사도 검색
Gemini Embedding과 비교
| 항목 | Jina v3 | Gemini Embedding 2 |
|---|---|---|
| 최대 토큰 | 8,192 | 2,048 |
| 차원 | 1,024 | 768 |
| 다국어 | ✅ | ✅ |
| Task 특화 | ✅ | ❌ |
| 무료 티어 | ✅ (100만 토큰/월) | Google Cloud 과금 |
| 한국어 품질 | 양호 | 양호 |
요금
- 무료: 100만 토큰/월
- 유료: $0.02 / 100만 토큰 (2025년 기준)
- API 키 발급: https://jina.ai
관련 개념
- RAG
- Fine-tuning
- LLM