DocsGPU ServicesJina Embeddings

Jina Embeddings

Multimodal embedding service using Jina Embeddings v4. Generates embeddings for text, images, or mixed content.

Port: 8080
Model: jinaai/jina-embeddings-v4

What it Does

Jina Embeddings generates dense vectors for:

  • Text embeddings - Queries and passages
  • Image embeddings - Visual content
  • Multimodal - Combined text and image inputs

Use cases:

  • Semantic text search
  • Image similarity search
  • Cross-modal retrieval (text → image)

API Endpoints

Text Embeddings

Endpoint: POST /embeddings/text

curl -X POST "http://jina-embeddings:8080/embeddings/text" \
  -H "Content-Type: application/json" \
  -d '{
    "texts": ["What is climate change?", "Global warming effects"],
    "input_type": "query",
    "normalize": true
  }'

Request:

ParameterTypeDescription
textsarrayList of texts
input_typestringquery or passage
normalizebooleanL2 normalize (default: true)

Response:

{
  "embeddings": [[0.1, 0.2, ...], [0.15, 0.18, ...]],
  "dimensions": 1024,
  "model": "jinaai/jina-embeddings-v4",
  "normalized": true
}

Image Embeddings

Endpoint: POST /embeddings/image

curl -X POST "http://jina-embeddings:8080/embeddings/image" \
  -H "Content-Type: application/json" \
  -d '{
    "images": ["<base64-encoded-image>"],
    "normalize": true
  }'

Multimodal Embeddings

Endpoint: POST /embeddings/multimodal

curl -X POST "http://jina-embeddings:8080/embeddings/multimodal" \
  -H "Content-Type: application/json" \
  -d '{
    "inputs": [
      {"type": "text", "content": "Describe this", "text_type": "query"},
      {"type": "image", "content": "<base64-image>"}
    ],
    "normalize": true
  }'

Health Check

curl http://jina-embeddings:8080/health

Usage Example

import requests
 
# Text embeddings
response = requests.post(
    "http://jina-embeddings:8080/embeddings/text",
    json={
        "texts": ["machine learning basics", "deep neural networks"],
        "input_type": "passage",
        "normalize": True
    }
)
 
result = response.json()
print(f"Embedding dimensions: {result['dimensions']}")
print(f"First embedding: {result['embeddings'][0][:5]}...")

Query vs Passage

Use the right input_type for best results:

  • query - For search queries (short, question-like)
  • passage - For documents being indexed (longer text)
# Indexing documents
doc_embeddings = requests.post(
    "http://jina-embeddings:8080/embeddings/text",
    json={"texts": documents, "input_type": "passage"}
).json()
 
# Searching
query_embedding = requests.post(
    "http://jina-embeddings:8080/embeddings/text",
    json={"texts": [user_query], "input_type": "query"}
).json()

Configuration

VariableDefaultDescription
MODEL_NAMEjinaai/jina-embeddings-v4Model identifier
MAX_MODEL_LEN8192Maximum input length
GPU_MEMORY_UTILIZATION0.95GPU memory usage