Weaviate 出了个查询性能剖析利器,一次请求告诉你时间花在哪——是磁盘读、向量搜索还是过滤,不用再瞎猜调参了。
Weaviate 新增 per-query profiling 功能,通过一个 opt-in 标志即可在单次查询中获取各阶段耗时,如 vector_search_took、filters_build_allow_list_took 等。例如一个示例 profile 显示 48.2ms 总耗时中 36.8ms 用于读取对象,8.4ms 在向量搜索,2.1ms 构建过滤允许列表,说明瓶颈在存储而非 HNSW 参数。该功能无需重启或等待慢查询重现,自动聚合多分片多节点数据,返回 cluster-wide 视图。
A slow search query doesn't 𝘁𝗲𝗹𝗹 𝘆𝗼𝘂 𝘄𝗵𝗮𝘁 𝘁𝗼 𝗼𝗽𝘁𝗶𝗺𝗶𝘇𝗲. The latency could be co...
A slow search query doesn't 𝘁𝗲𝗹𝗹 𝘆𝗼𝘂 𝘄𝗵𝗮𝘁 𝘁𝗼 𝗼𝗽𝘁𝗶𝗺𝗶𝘇𝗲. The latency could be coming from filter evaluation, HNSW traversal, compressed-vector rescoring, BM25 scoring, or reading final objects from disk. Each points to a completely different fix. Weaviate now has 𝗽𝗲𝗿-𝗾𝘂𝗲𝗿𝘆 𝗽𝗿𝗼𝗳𝗶𝗹𝗶𝗻𝗴 to make that breakdown concrete. Set one opt-in flag on a search and the timing profile comes back directly on 'response.query_profile'. The coordinating node collects profiles from every participating shard and node, so you get a cluster-wide view in one response. No restart, latency threshold, waiting for the query to be slow again, or manually stitching together logs across nodes. 𝗪𝗵𝗮𝘁 𝘁𝗵𝗲 𝗽𝗿𝗼𝗳𝗶𝗹𝗲 𝗰𝗮𝗻 𝘁𝗲𝗹𝗹 𝘆𝗼𝘂: - objects_took is high: object hydration is disk-bound. Check page-cache misses, result limits, or large payloads. - filters_build_allow_list_took is high: the where filter is expensive. filters_ids_matched helps separate a broad cardinality problem from disk reads. - vector_search_took is high: inspect HNSW layer timings. Layer 0 normally dominates, with ef, dimensionality, and filter strategy as the relevant tuning levers. - knn_search_rescore_took is high: compressed candidates are expensive to rescore, potentially because full-precision vectors are being read from disk. For example, one profile might show: • 48.2ms total • 36.8ms reading objects • 8.4ms in vector search • 2.1ms building the filter allow-list The vector index isn't the bottleneck. Tuning HNSW would be a guess. The profile points toward storage, page cache, result limit, or payload size instead. Slow query logging is still useful for passively catching regressions across a fleet. But when one specific query is slow, profiling gives you the actual weaviate.io/blog/query-pro… Read th docs.weaviate.io/weaviate/searc… orbach: https://t.co/ygpB4Eb2l8 Docs: https://t.co/70FsH62A3G 💬 1 🔄 2 ❤️ 4 👀 104 📊 3 ⚡