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 |