From 8104b6012beb15a751eb48d52f62717889a40bb2 Mon Sep 17 00:00:00 2001 From: Michael Marshall Date: Mon, 14 Jul 2025 13:01:33 -0500 Subject: [PATCH] WIP: SAI skip vector graph refinement on memtable flush --- .../org/apache/cassandra/index/sai/disk/v1/V1OnDiskFormat.java | 2 +- .../cassandra/index/sai/disk/vector/CassandraOnHeapGraph.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/java/org/apache/cassandra/index/sai/disk/v1/V1OnDiskFormat.java b/src/java/org/apache/cassandra/index/sai/disk/v1/V1OnDiskFormat.java index 4901992f3fc7..ac1cbcf93b26 100644 --- a/src/java/org/apache/cassandra/index/sai/disk/v1/V1OnDiskFormat.java +++ b/src/java/org/apache/cassandra/index/sai/disk/v1/V1OnDiskFormat.java @@ -319,6 +319,6 @@ private boolean isVectorDataComponent(IndexContext context, IndexComponentType i @Override public int jvectorFileFormatVersion() { - throw new UnsupportedOperationException("JVector is not supported in V2OnDiskFormat"); + throw new UnsupportedOperationException("JVector is not supported"); } } diff --git a/src/java/org/apache/cassandra/index/sai/disk/vector/CassandraOnHeapGraph.java b/src/java/org/apache/cassandra/index/sai/disk/vector/CassandraOnHeapGraph.java index c42178d8aec1..6a857e60dedf 100644 --- a/src/java/org/apache/cassandra/index/sai/disk/vector/CassandraOnHeapGraph.java +++ b/src/java/org/apache/cassandra/index/sai/disk/vector/CassandraOnHeapGraph.java @@ -169,7 +169,8 @@ public CassandraOnHeapGraph(IndexContext context, boolean forSearching, Memtable indexConfig.getConstructionBeamWidth(), indexConfig.getNeighborhoodOverflow(1.0f), // no overflow means add will be a bit slower but flush will be faster indexConfig.getAlpha(dimension > 3 ? 1.2f : 2.0f), - indexConfig.isHierarchyEnabled() && jvectorVersion >= 4); + indexConfig.isHierarchyEnabled() && jvectorVersion >= 4, + memtable != null); // Skip graph refinement on memtable to speed up flush searchers = ThreadLocal.withInitial(() -> new GraphSearcherAccessManager(new GraphSearcher(builder.getGraph()))); }