Skip to content

python.sqlalchemy.pgvector_optimization

Performance High

Detects pgvector queries without proper index usage.

Unoptimized vector queries:

  • Full table scans — No index means O(n) searches
  • Slow queries — Vector similarity is CPU-intensive
  • Timeout failures — Large datasets cause timeouts
# ❌ Before (no index, full scan)
# Missing index on embedding column
results = session.query(Document).order_by(
Document.embedding.l2_distance(query_vector)
).limit(10).all()
# ✅ After (with proper index)
# Create index in migrations:
# CREATE INDEX ON documents USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);
# And ensure probes are set
session.execute(text("SET ivfflat.probes = 10"))
results = session.query(Document).order_by(
Document.embedding.l2_distance(query_vector)
).limit(10).all()
  • Vector queries without indexes
  • Missing ivfflat.probes setting
  • Unbounded vector searches