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 | 
 
- Internally calls _embed() on each string.
 
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) | 
 
- Useful for semantic similarity search against embedded chunks.
 
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
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 |