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.jsonOverview
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 URLEMBEDDINGS_MODEL- Embeddings model nameEMBEDDINGS_DIMENSIONS- Embedding vector dimensions
Dependencies
Packages and shadcn components required by this registry item.