Services

Embeddings

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.
bash
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

typescript
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.