Skip to main content

Embeddings models

Embeddings typeclass provides interface over various Embeddings models.

As of now, below models are provided out of the box:

  • OllamaEmbeddings
  • OpenAIEmbeddings

Example for OpenAI Embeddings

{-# LANGUAGE OverloadedStrings #-}

module LangchainLib (runApp) where

import Langchain.Embeddings.OpenAI
import Langchain.Embeddings.Core
import Langchain.DocumentLoader.Core
import Langchain.DocumentLoader.PdfLoader

runApp :: IO ()
runApp = do
let oEmbed = defaultOpenAIEmbeddings {
apiKey = "api-key"
}
let p = PdfLoader "/home/user/Documents/langchain/SOP.pdf"
eDocs <- load p
case eDocs of
Left err -> error err
Right docs -> do
eRes <- embedDocuments oEmbed docs
print eRes

Custom embedding model

It is also possible to create your own type and implement Embeddings typeclass.

for e.g

data DeepseekEmbedding = DeepseekEmbedding {
apiKey :: Text,
apiUrl :: Text,
model :: Text
}

instance Embeddings Deepseek where
embedDocuments OpenAIEmbedding docs = do
-- Your implementation here
return $ Right []
embedQuery OpenAIEmbedding{..} query = do
-- Your implementation here
return $ Right []