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.

openai_embedder.py
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

ModelDefault Dimensions
text-embedding-3-small1536
text-embedding-3-large3072

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/activate

Set your API key

export OPENAI_API_KEY=your_openai_api_key_here

Install dependencies

uv pip install -U agno openai pgvector psycopg sqlalchemy

Run 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:18

Run the example

python openai_embedder.py

Developer Resources