effect-io-ai

Package: @effect/ai
Module: EmbeddingModel

EmbeddingModel.EmbeddingModel

The EmbeddingModel service tag for dependency injection.

This tag provides access to vector embedding functionality throughout your application, enabling conversion of text to high-dimensional vectors for semantic analysis.

Example

import { EmbeddingModel } from "@effect/ai"
import * as Effect from "effect/Effect"

const cosineSimilarity = (a: ReadonlyArray<number>, b: ReadonlyArray<number>): number => {
  const dot = a.reduce((sum, ai, i) => sum + ai * (b[i] ?? 0), 0)
  const normA = Math.sqrt(a.reduce((sum, ai) => sum + ai * ai, 0))
  const normB = Math.sqrt(b.reduce((sum, bi) => sum + bi * bi, 0))
  return normA === 0 || normB === 0 ? 0 : dot / (normA * normB)
}

const useEmbeddings = Effect.gen(function* () {
  const embedder = yield* EmbeddingModel.EmbeddingModel

  const documentVector = yield* embedder.embed("This is a sample document")
  const queryVector = yield* embedder.embed("sample query")

  const similarity = cosineSimilarity(documentVector, queryVector)
  return similarity
})

Signature

declare class EmbeddingModel

Source

Since v1.0.0