Layers

Embedding Layer

An Effect layer that configures an OpenAI-compatible embeddings model from EMBEDDINGS_URL, EMBEDDINGS_MODEL, and EMBEDDINGS_DIMENSIONS.

Install
Add this registry item to your app with shadcn.
bunx --bun shadcn@latest add https://krakstack.net/r/embedding-layer.json

Overview

embedding-layer provides an OpenAI-compatible embedding model layer configured through Effect Config. It reads the embeddings endpoint, model name, and output dimensions from the environment, then wires the OpenAI-compatible client through FetchHttpClient.

Layers

import { OpenAiClient, OpenAiEmbeddingModel } from "@effect/ai-openai-compat";
import { Config, Effect, Layer, Redacted } from "effect";
import { FetchHttpClient } from "effect/unstable/http";

export const EmbeddingLayer = Layer.unwrap(
  Effect.gen(function* () {
    const apiUrl = yield* Config.string("EMBEDDINGS_URL");
    const embeddingModel = yield* Config.string("EMBEDDINGS_MODEL");
    const embeddingDimensions = yield* Config.number("EMBEDDINGS_DIMENSIONS");

    const embeddingClientLayer = OpenAiClient.layer({
      apiKey: Redacted.make("embedding"),
      apiUrl,
    });

    return OpenAiEmbeddingModel.layer({
      model: embeddingModel,
      config: {
        dimensions: embeddingDimensions,
        encoding_format: "float",
      },
    }).pipe(
      Layer.provide(embeddingClientLayer),
      Layer.provide(FetchHttpClient.layer),
    );
  }),
);

Environment Variables

  • EMBEDDINGS_URL - OpenAI-compatible embeddings API URL
  • EMBEDDINGS_MODEL - Embeddings model name
  • EMBEDDINGS_DIMENSIONS - Embedding vector dimensions
Dependencies
Packages and shadcn components required by this registry item.