Skip to content

Jina AI Provider

Embedding generation using Jina AI's Embeddings API. Jina provides multilingual embeddings with 8K context length.

Requirements

  • Jina AI API key from jina.ai/api (free tier available)

Configuration

{ok, State} = barrel_embed:init(#{
    embedder => {jina, #{
        api_key => <<"...">>,                    % or use env var
        model => <<"jina-embeddings-v3">>        % default
    }}
}).

Options

Option Type Default Description
api_key binary JINA_API_KEY env var API key
model binary <<"jina-embeddings-v3">> Model name
url binary <<"https://api.jina.ai/v1">> API endpoint

Using Environment Variable

Set JINA_API_KEY instead of passing in config:

export JINA_API_KEY=jina_...
{ok, State} = barrel_embed:init(#{
    embedder => {jina, #{}}  % uses env var
}).

Supported Models

Model Dimensions Notes
jina-embeddings-v3 1024 Default, 8K context, multilingual
jina-embeddings-v2-base-en 768 English
jina-embeddings-v2-base-de 768 German
jina-embeddings-v2-base-es 768 Spanish
jina-embeddings-v2-base-zh 768 Chinese
jina-colbert-v2 128 Late interaction (per token)
jina-clip-v1 768 Multimodal (text + images)

Language-Specific Models

For single-language use cases, language-specific models may perform better:

%% German documents
{ok, State} = barrel_embed:init(#{
    embedder => {jina, #{model => <<"jina-embeddings-v2-base-de">>}}
}).

%% Chinese documents
{ok, State} = barrel_embed:init(#{
    embedder => {jina, #{model => <<"jina-embeddings-v2-base-zh">>}}
}).

Example

%% Initialize
{ok, State} = barrel_embed:init(#{
    embedder => {jina, #{
        api_key => <<"jina_...">>,
        model => <<"jina-embeddings-v3">>
    }}
}).

%% Generate embeddings
{ok, Vec} = barrel_embed:embed(<<"Machine learning is fascinating">>, State).

%% Batch (more efficient for multiple texts)
{ok, Vecs} = barrel_embed:embed_batch([
    <<"Document about AI">>,
    <<"Document about databases">>,
    <<"Document about networking">>
], State).

Why Jina AI?

  • 8K context length (longest among embedding providers)
  • Free tier available (1M tokens/month)
  • Multilingual support (100+ languages)
  • Language-specific models available
  • OpenAI-compatible API format

Pricing

Jina offers a generous free tier. See jina.ai/api for pricing details.