packages feed

langchain-hs-0.0.5.0: src/Langchain/Embeddings/Core.hs

{-# LANGUAGE FlexibleContexts #-}

{- |
Module      : Langchain.Embeddings.Core
Description : Effect-polymorphic embedding model interface
Copyright   : (c) 2025-2026 Tushar Adhatrao
License     : MIT
Maintainer  : Tushar Adhatrao <tusharadhatrao@gmail.com>
Stability   : experimental

Effect-polymorphic Embeddings typeclass.
-}
module Langchain.Embeddings.Core
  ( Embeddings (..)
  ) where

import Control.Monad.Except (MonadError)
import Control.Monad.IO.Class (MonadIO)
import Data.Text (Text)

import Langchain.Core.Error (LangchainError)
import Langchain.DocumentLoader.Core (Document)

-- | Effect-polymorphic Embeddings typeclass
class Embeddings embed where
  -- | Convert documents to embedding vectors
  embedDocuments ::
    (MonadIO m, MonadError LangchainError m) =>
    embed ->
    [Document] ->
    m [[Float]]

  -- | Convert query text to embedding vector
  embedQuery ::
    (MonadIO m, MonadError LangchainError m) =>
    embed ->
    Text ->
    m [Float]