langchain-hs-0.0.1.0: Haskell implementation of Langchain
Copyright(c) 2025 Tushar Adhatrao
LicenseMIT
MaintainerTushar Adhatrao <tusharadhatrao@gmail.com>
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

Langchain.Embeddings.Core

Description

Haskell implementation of LangChain's embedding model abstraction, providing:

  • Document vectorization for semantic search
  • Query embedding for similarity comparisons
  • Integration with document loading pipelines

Example usage:

-- Hypothetical HuggingFace embedding instance
data HuggingFaceEmbeddings = HuggingFaceEmbeddings

instance Embeddings HuggingFaceEmbeddings where
  embedDocuments _ docs = do
    -- Convert documents to vectors using HuggingFace API
    return $ Right [[0.1, 0.3, ...], ...]

  embedQuery _ query = do
    -- Convert query to vector
    return $ Right [0.2, 0.4, ...]

-- Usage with loaded documents
docs <- load (FileLoader "data.txt")
case docs of
  Right documents -> do
    vectors <- embedDocuments HuggingFaceEmbeddings documents
    -- Use vectors for semantic search
  Left err -> print err
Synopsis

Embedding Interface

class Embeddings m where Source #

Typeclass for embedding models following LangChain's pattern. Converts text/documents into numerical vectors for machine learning tasks.

Implementations should handle:

  • Text preprocessing
  • API calls to embedding services
  • Error handling for failed requests
  • Consistent vector dimensionality

Example instance for a test model:

data TestEmbeddings = TestEmbeddings

instance Embeddings TestEmbeddings where
  embedDocuments _ _ = return $ Right [[0.1, 0.2, 0.3]]
  embedQuery _ _ = return $ Right [0.4, 0.5, 0.6]

Methods

embedDocuments :: m -> [Document] -> IO (Either String [[Float]]) Source #

Convert documents to embedding vectors

Example:

>>> let doc = Document "Hello world" mempty
>>> embedDocuments TestEmbeddings [doc]
Right [[0.1, 0.2, 0.3]]

embedQuery :: m -> Text -> IO (Either String [Float]) Source #

Convert query text to embedding vector

Example:

>>> embedQuery TestEmbeddings "Search query"
Right [0.4, 0.5, 0.6]

Instances

Instances details
Embeddings OllamaEmbeddings Source #

Ollama implementation of the Embeddings interface [[6]]. Uses Ollama's embedding API for vector generation. Handles: - Multiple document embedding via batch processing - Query embedding for similarity searches - Error propagation from API responses

Example instance usage: -- Embed multiple documents docs <- load (FileLoader "data.txt") case docs of Right documents -> do vecs <- embedDocuments ollamaEmb documents -- Use vectors for semantic search Left err -> print err

Instance details

Defined in Langchain.Embeddings.Ollama