barrel_embed_bedrock (barrel_embed v2.3.1)

View Source

AWS Bedrock embedding provider

Uses AWS Bedrock's embedding API for embedding generation. Provides access to Titan and Cohere embedding models on AWS.

Requirements

AWS credentials, either via API key (ABSK format) or IAM credentials.

Option 1: API Key (Recommended)

Uses AWS Bedrock API Key (ABSK format, available since July 2025): - Set BEDROCK_API_KEY environment variable - Or pass api_key => <<"ABSK...">>> in config

Option 2: IAM Credentials

- Set AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and optionally AWS_SESSION_TOKEN environment variables - Or pass access_key_id, secret_access_key in config

Configuration

   %% Using API key (simpler)
   Config = #{
       api_key => <<"ABSK...">>,                       %% API key (or use env var)
       region => <<"us-east-1">>,                      %% AWS region (default)
       model => <<"amazon.titan-embed-text-v2:0">>,    %% Model ID (default)
       timeout => 30000,                               %% Timeout in ms (default)
       dimension => 1024                               %% Vector dimension (default)
   }.
  
   %% Using IAM credentials (requires SigV4 signing)
   Config = #{
       access_key_id => <<"AKIA...">>,
       secret_access_key => <<"...">>,
       session_token => <<"...">>,                     %% Optional, for temporary credentials
       region => <<"us-east-1">>,
       model => <<"amazon.titan-embed-text-v2:0">>
   }.

Supported Models

- <<"amazon.titan-embed-text-v2:0">> - Default, 1024 dims - <<"amazon.titan-embed-text-v1">> - 1536 dims, legacy - <<"cohere.embed-english-v3">> - 1024 dims, Cohere on Bedrock - <<"cohere.embed-multilingual-v3">> - 1024 dims, multilingual

Summary

Functions

Check if Bedrock API is available.

Get dimension for this provider.

Generate embedding for a single text.

Generate embeddings for multiple texts. Bedrock doesn't support native batch, so we process sequentially.

Initialize the provider.

Provider name.

Functions

available(Config)

-spec available(map()) -> boolean().

Check if Bedrock API is available.

dimension(Config)

-spec dimension(map()) -> pos_integer().

Get dimension for this provider.

embed(Text, Config)

-spec embed(binary(), map()) -> {ok, [float()]} | {error, term()}.

Generate embedding for a single text.

embed_batch(Texts, Config)

-spec embed_batch([binary()], map()) -> {ok, [[float()]]} | {error, term()}.

Generate embeddings for multiple texts. Bedrock doesn't support native batch, so we process sequentially.

init(Config)

-spec init(map()) -> {ok, map()} | {error, term()}.

Initialize the provider.

name()

-spec name() -> atom().

Provider name.