Embeddings
Generate text embeddings with OpenAI, Voyage AI, or Cohere
Basic Usage
from SimplerLLM.language.embeddings import EmbeddingsLLM, EmbeddingsProvider
embeddings = EmbeddingsLLM.create(provider=EmbeddingsProvider.OPENAI)
vector = embeddings.generate_embeddings("What is machine learning?")
print(len(vector)) # 1536
Providers
| Provider | Enum Value | Default Model | Dimensions |
|---|---|---|---|
| OpenAI | EmbeddingsProvider.OPENAI |
text-embedding-3-small |
1536 |
| Voyage AI | EmbeddingsProvider.VOYAGE |
voyage-3 |
1024 |
| Cohere | EmbeddingsProvider.COHERE |
embed-english-v3.0 |
1024 |
Batch Embeddings
Pass a list of strings to embed multiple texts in a single API call:
texts = [
"What is Python?",
"How does machine learning work?",
"Explain neural networks"
]
vectors = embeddings.generate_embeddings(texts)
print(len(vectors)) # 3
print(len(vectors[0])) # 1536
Full Response with Metadata
Set full_response=True to get timing and model info:
response = embeddings.generate_embeddings(
"What is deep learning?",
full_response=True
)
print(len(response.generated_embedding)) # 1536
print(f"Model: {response.model}")
print(f"Time: {response.process_time:.2f}s")
Switching Providers
All providers use the same generate_embeddings() method:
from SimplerLLM.language.embeddings import EmbeddingsLLM, EmbeddingsProvider
# OpenAI
embeddings = EmbeddingsLLM.create(provider=EmbeddingsProvider.OPENAI)
# Voyage AI
embeddings = EmbeddingsLLM.create(provider=EmbeddingsProvider.VOYAGE)
# Cohere
embeddings = EmbeddingsLLM.create(provider=EmbeddingsProvider.COHERE)
To use a specific model:
embeddings = EmbeddingsLLM.create(
provider=EmbeddingsProvider.OPENAI,
model_name="text-embedding-3-large" # 3072 dimensions
)
Voyage AI
Voyage AI supports input type optimization and custom dimensions:
embeddings = EmbeddingsLLM.create(provider=EmbeddingsProvider.VOYAGE)
# Optimize for search queries
query_vector = embeddings.generate_embeddings(
"How does Python async work?",
input_type="query"
)
# Optimize for documents being indexed
doc_vector = embeddings.generate_embeddings(
"Python's asyncio module provides infrastructure for writing...",
input_type="document"
)
| Parameter | Type | Description |
|---|---|---|
input_type |
str |
"query" or "document" — optimizes for retrieval |
output_dimension |
int |
256, 512, 1024, or 2048 |
output_dtype |
str |
"float", "int8", "uint8", "binary", "ubinary" |
Available models: voyage-3, voyage-3-lite, voyage-code-3, voyage-finance-2.
Cohere
Cohere supports multiple input types for different use cases:
embeddings = EmbeddingsLLM.create(provider=EmbeddingsProvider.COHERE)
# For documents being indexed
doc_vector = embeddings.generate_embeddings(
"Python is a programming language...",
input_type="search_document"
)
# For search queries
query_vector = embeddings.generate_embeddings(
"What is Python?",
input_type="search_query"
)
| Parameter | Type | Default | Description |
|---|---|---|---|
input_type |
str |
"search_document" |
"search_document", "search_query", "classification", "clustering" |
truncate |
str |
"END" |
"START", "END", or "NONE" |
Available models: embed-english-v3.0, embed-multilingual-v3.0, embed-v4.0.
Async Usage
import asyncio
from SimplerLLM.language.embeddings import EmbeddingsLLM, EmbeddingsProvider
embeddings = EmbeddingsLLM.create(provider=EmbeddingsProvider.OPENAI)
async def main():
vector = await embeddings.generate_embeddings_async("What is AI?")
print(len(vector))
asyncio.run(main())