python.sqlalchemy.pgvector_optimization
Performance
High
Detects pgvector queries without proper index usage.
Why It Matters
Section titled “Why It Matters”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
Example
Section titled “Example”# ❌ Before (no index, full scan)# Missing index on embedding columnresults = 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 setsession.execute(text("SET ivfflat.probes = 10"))results = session.query(Document).order_by( Document.embedding.l2_distance(query_vector)).limit(10).all()What Unfault Detects
Section titled “What Unfault Detects”- Vector queries without indexes
- Missing ivfflat.probes setting
- Unbounded vector searches