5b. ollama_embed.py

ollama_embed.py

OllamaEmbeddings Class Breakdown

Custom embedding class for LangChain, using Ollama’s /api/embeddings endpoint to generate vector embeddings for documents and queries.


Purpose

Provides a drop-in replacement for LangChain-compatible embedding models, allowing use of local Ollama models for efficient, private embedding.


Class: OllamaEmbeddings

Initialization

def __init__(self, model: str = "nomic-embed-text", endpoint: str = None)
Parameter Description
model Ollama model name (default: "nomic-embed-text")
endpoint Custom embedding endpoint (defaults to OLLAMA_EMBEDDING_URL from .env or http://localhost:11434/api/embeddings)

Method: embed_documents()

def embed_documents(self, texts: List[str]) -> List[List[float]]
Purpose Embeds a list of text chunks for use in vector search
Input List of strings (text chunks)
Output List of vector embeddings (each embedding is a list of floats)
Logging Logs the total number of documents being embedded

Method: embed_query()

def embed_query(self, text: str) -> List[float]
Purpose Embeds a single query string
Input Single string
Output A single embedding vector (list of floats)

Internal Method: _embed()

def _embed(self, text: str) -> List[float]
Purpose Core API call to Ollama’s embedding endpoint
Request Sends a POST request with
Response Expects JSON response with "embedding" field
Error Handling Logs error and returns empty list if the request fails

Environment Variables

Variable Purpose
OLLAMA_EMBEDDING_URL Used to override the default embedding endpoint (http://localhost:11434/api/embeddings)

Summary Table

Method Role
init() Configure model and endpoint
embed_documents() Embed a batch of text chunks
embed_query() Embed a single query string
_embed() Perform actual API request to Ollama