OpenAI Embedder
Embed documents with OpenAIEmbedder. The default model is text-embedding-3-small.
OpenAIEmbedder uses the OpenAI Embeddings API. The default model is text-embedding-3-small with 1536 dimensions.
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.knowledge.knowledge import Knowledge
from agno.vectordb.pgvector import PgVector
embedder = OpenAIEmbedder()
embedding = embedder.get_embedding(
"The quick brown fox jumps over the lazy dog."
)
print(f"First values: {embedding[:5]}")
print(f"Dimensions: {len(embedding)}")
knowledge = Knowledge(
vector_db=PgVector(
db_url="postgresql+psycopg://ai:ai@localhost:5532/ai",
table_name="openai_embeddings",
embedder=embedder,
),
max_results=2,
)
knowledge.insert(
name="Fox fact",
text_content="The quick brown fox jumps over the lazy dog.",
)
results = knowledge.search("Which animal jumps?")
print(results[0].content if results else "No results found")Model Dimensions
| Model | Default Dimensions |
|---|---|
text-embedding-3-small | 1536 |
text-embedding-3-large | 3072 |
Set dimensions to request a shorter vector from either text-embedding-3 model. PgVector fixes the vector width when it creates a table. After changing the model or dimensions, use a new table name or drop and recreate the existing table before inserting the content again.
Usage
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateSet your API key
export OPENAI_API_KEY=your_openai_api_key_hereInstall dependencies
uv pip install -U agno openai pgvector psycopg sqlalchemyRun PgVector
docker run -d \
-e POSTGRES_DB=ai \
-e POSTGRES_USER=ai \
-e POSTGRES_PASSWORD=ai \
-e PGDATA=/var/lib/postgresql \
-v pgvolume:/var/lib/postgresql \
-p 5532:5432 \
--name pgvector \
agnohq/pgvector:18Run the example
python openai_embedder.py