Embedding Agent
Specialized agent for generating text embeddings, batch processing, and similarity calculations.
Turn text into vectors for semantic search, similarity, and RAG with the EmbeddingAgent.
from praisonaiagents import EmbeddingAgent
agent = EmbeddingAgent()
embedding = agent.embed("Hello world")
print(f"Dimension: {len(embedding)}")How It Works
Quick Start
- Install
bash pip install praisonaiagents litellm export OPENAI_API_KEY="your-key" - Create Agent
python from praisonaiagents import EmbeddingAgent agent = EmbeddingAgent() - Generate Embedding
python embedding = agent.embed("Hello world") print(f"Dimension: {len(embedding)}")
Methods
embed()
Generate embedding for a single text.
from praisonaiagents import EmbeddingAgent
agent = EmbeddingAgent()
embedding = agent.embed("Hello world")
print(f"Dimension: {len(embedding)}")
# Output: Dimension: 1536strText to embed
strOverride model for this call
List[float]Embedding vector
embed_batch()
Generate embeddings for multiple texts efficiently.
embeddings = agent.embed_batch([
"First document",
"Second document",
"Third document"
])
print(f"Generated {len(embeddings)} embeddings")List[str]List of texts to embed
similarity()
Calculate cosine similarity between two texts.
score = agent.similarity("Hello", "Hi there")
print(f"Similarity: {score:.2f}")
# Output: Similarity: 0.85strFirst text
strSecond text
floatCosine similarity score (0.0 to 1.0)
find_most_similar()
Find most similar texts to a query.
results = agent.find_most_similar(
query="What is machine learning?",
candidates=[
"ML is a subset of AI",
"Python is a programming language",
"Deep learning uses neural networks"
],
top_k=2
)
for r in results:
print(f"{r['score']:.2f}: {r['text']}")strQuery text
List[str]List of candidate texts
intNumber of results to return
Configuration
Basic
from praisonaiagents import EmbeddingAgent
agent = EmbeddingAgent(
name="MyEmbedder",
llm="text-embedding-3-large",
verbose=True
)With Config
from praisonaiagents import EmbeddingAgent, EmbeddingConfig
config = EmbeddingConfig(
dimensions=1024,
encoding_format="float"
)
agent = EmbeddingAgent(embedding=config)Dict Config
agent = EmbeddingAgent(
embedding={
"dimensions": 512
}
)EmbeddingConfig Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
dimensions | int | None | Output dimensions (model-specific) |
encoding_format | str | "float" | Format: float or base64 |
timeout | int | 60 | Request timeout in seconds |
Supported Models
text-embedding-3-small(default)text-embedding-3-largetext-embedding-ada-002
cohere/embed-english-v3.0cohere/embed-multilingual-v3.0
voyage/voyage-3voyage/voyage-3-lite
mistral/mistral-embed
Examples
Semantic Search
from praisonaiagents import EmbeddingAgent
agent = EmbeddingAgent()
# Document corpus
documents = [
"Python is a programming language",
"Machine learning uses algorithms",
"Neural networks are inspired by the brain",
"Data science combines statistics and programming"
]
# Find relevant documents
results = agent.find_most_similar(
query="How do computers learn?",
candidates=documents,
top_k=2
)
for r in results:
print(f"Score: {r['score']:.3f} | {r['text']}")Document Similarity Matrix
from praisonaiagents import EmbeddingAgent
agent = EmbeddingAgent()
docs = ["Doc A content", "Doc B content", "Doc C content"]
embeddings = agent.embed_batch(docs)
# Calculate pairwise similarities
for i, emb1 in enumerate(embeddings):
for j, emb2 in enumerate(embeddings):
if i < j:
score = agent._cosine_similarity(emb1, emb2)
print(f"Doc {i+1} vs Doc {j+1}: {score:.3f}")RAG Retrieval
from praisonaiagents import EmbeddingAgent
agent = EmbeddingAgent(llm="text-embedding-3-large")
# Knowledge base
knowledge = [
"The capital of France is Paris",
"Python was created by Guido van Rossum",
"The Earth orbits the Sun"
]
# User query
query = "Who created Python?"
# Find relevant context
results = agent.find_most_similar(query, knowledge, top_k=1)
context = results[0]["text"]
print(f"Retrieved: {context}")
# Output: Retrieved: Python was created by Guido van RossumAsync Usage
import asyncio
from praisonaiagents import EmbeddingAgent
async def main():
agent = EmbeddingAgent()
# Async embedding
embedding = await agent.aembed("Hello world")
print(f"Dimension: {len(embedding)}")
# Async batch
embeddings = await agent.aembed_batch(["Text 1", "Text 2"])
print(f"Generated: {len(embeddings)}")
asyncio.run(main())Use Cases
Find documents by meaning, not keywords
RAGRetrieve relevant context for LLM prompts
ClusteringGroup similar documents together
DeduplicationFind and remove duplicate content
Best Practices
Batch embeddings for throughput
Use the batch method over a loop of single embed() calls. One batched request is far cheaper and faster than many round trips for large corpora.
Keep the model consistent across a corpus
Vectors from different models aren’t comparable. Embed queries and documents with the same model, or similarity scores become meaningless.
Normalise before cosine similarity
Normalise vectors when your similarity metric assumes unit length. Skipping this skews rankings, especially across texts of very different lengths.
Pair with a vector store for RAG
The agent produces vectors; a vector database stores and searches them. Combine the two to build retrieval-augmented generation pipelines.