Weaviate's query profiling feature provides per-stage, per-shard timing breakdowns for slow queries without requiring environment variable changes or node restarts. Unlike the existing slow query log, profiling is an opt-in per-query flag that returns timing data inline on the response, aggregated across all shards in the cluster. The post explains how to enable it in Python, JS/TS, Java, and C# clients, and walks through reading key metrics: objects_took (disk-bound hydration), filters_build_allow_list_took (filter cardinality cost), vector_search_took with per-HNSW-layer breakdowns, knn_search_rescore_took (compression rescore disk latency), and BM25-specific kwd_* timers. Three worked examples illustrate diagnosing hydration-dominated queries, overly broad filters, and compressed index rescore bottlenecks. Available since v1.36.9, GA in v1.38.

9m read timeFrom weaviate.io
Post cover image
Table of contents
How we used to find slow queries ​Where the old approach falls short ​What is query profiling? ​Reading the numbers ​Worked examples ​Summary ​Ready to start building? ​Don't want to miss another blog post?
169 Impressions