diff --git a/build.xml b/build.xml
index 28152182a84c..5c05202c554e 100644
--- a/build.xml
+++ b/build.xml
@@ -741,7 +741,7 @@
-
+
diff --git a/src/java/org/apache/cassandra/index/sai/disk/vector/CassandraDiskAnn.java b/src/java/org/apache/cassandra/index/sai/disk/vector/CassandraDiskAnn.java
index 92544f07e4bc..2e1e058e6c91 100644
--- a/src/java/org/apache/cassandra/index/sai/disk/vector/CassandraDiskAnn.java
+++ b/src/java/org/apache/cassandra/index/sai/disk/vector/CassandraDiskAnn.java
@@ -27,7 +27,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import io.github.jbellis.jvector.graph.GraphIndex;
+import io.github.jbellis.jvector.graph.ImmutableGraphIndex;
import io.github.jbellis.jvector.graph.GraphSearcher;
import io.github.jbellis.jvector.graph.disk.feature.FeatureId;
import io.github.jbellis.jvector.graph.disk.OnDiskGraphIndex;
@@ -72,7 +72,7 @@ public class CassandraDiskAnn
private final FileHandle graphHandle;
private final OnDiskOrdinalsMap ordinalsMap;
private final Set features;
- private final GraphIndex graph;
+ private final ImmutableGraphIndex graph;
private final VectorSimilarityFunction similarityFunction;
@Nullable
private final CompressedVectors compressedVectors;
@@ -231,7 +231,7 @@ public CloseableIterator search(VectorFloat> queryVector,
searcher.usePruning(usePruning);
try
{
- var view = (GraphIndex.ScoringView) searcher.getView();
+ var view = (ImmutableGraphIndex.ScoringView) searcher.getView();
SearchScoreProvider ssp;
// FusedADC can no longer be written due to jvector upgrade. However, it's possible these index files
// still exist, so we have to support them.
@@ -311,9 +311,9 @@ public OrdinalsView getOrdinalsView()
return ordinalsMap.getOrdinalsView();
}
- public GraphIndex.ScoringView getView()
+ public ImmutableGraphIndex.ScoringView getView()
{
- return (GraphIndex.ScoringView) graph.getView();
+ return (ImmutableGraphIndex.ScoringView) graph.getView();
}
public boolean containsUnitVectors()
diff --git a/src/java/org/apache/cassandra/index/sai/disk/vector/CloseableReranker.java b/src/java/org/apache/cassandra/index/sai/disk/vector/CloseableReranker.java
index b85b33c81b55..0415b9eb4bcc 100644
--- a/src/java/org/apache/cassandra/index/sai/disk/vector/CloseableReranker.java
+++ b/src/java/org/apache/cassandra/index/sai/disk/vector/CloseableReranker.java
@@ -20,21 +20,21 @@
import java.io.Closeable;
-import io.github.jbellis.jvector.graph.GraphIndex;
+import io.github.jbellis.jvector.graph.ImmutableGraphIndex;
import io.github.jbellis.jvector.graph.similarity.ScoreFunction;
import io.github.jbellis.jvector.vector.VectorSimilarityFunction;
import io.github.jbellis.jvector.vector.types.VectorFloat;
import org.apache.cassandra.io.util.FileUtils;
/**
- * An ExactScoreFunction that closes the underlying {@link GraphIndex.ScoringView} when closed.
+ * An ExactScoreFunction that closes the underlying {@link ImmutableGraphIndex.ScoringView} when closed.
*/
public class CloseableReranker implements ScoreFunction.ExactScoreFunction, Closeable
{
- private final GraphIndex.ScoringView view;
+ private final ImmutableGraphIndex.ScoringView view;
private final ExactScoreFunction scoreFunction;
- public CloseableReranker(VectorSimilarityFunction similarityFunction, VectorFloat> queryVector, GraphIndex.ScoringView view)
+ public CloseableReranker(VectorSimilarityFunction similarityFunction, VectorFloat> queryVector, ImmutableGraphIndex.ScoringView view)
{
this.view = view;
this.scoreFunction = view.rerankerFor(queryVector, similarityFunction);
diff --git a/src/java/org/apache/cassandra/index/sai/disk/vector/CompactionGraph.java b/src/java/org/apache/cassandra/index/sai/disk/vector/CompactionGraph.java
index c2339861037f..a9be73b1177b 100644
--- a/src/java/org/apache/cassandra/index/sai/disk/vector/CompactionGraph.java
+++ b/src/java/org/apache/cassandra/index/sai/disk/vector/CompactionGraph.java
@@ -372,7 +372,7 @@ public long addGraphNode(InsertionResult result)
public SegmentMetadata.ComponentMetadataMap flush() throws IOException
{
// header is required to write the postings, but we need to recreate the writer after that with an accurate OrdinalMapper
- writer.writeHeader();
+ writer.writeHeader(builder.getGraph().getView());
writer.close();
int nInProgress = builder.insertsInProgress();
diff --git a/test/unit/org/apache/cassandra/index/sai/disk/vector/BruteForceRowIdIteratorTest.java b/test/unit/org/apache/cassandra/index/sai/disk/vector/BruteForceRowIdIteratorTest.java
index 22658da82ac7..bdd3e0fd3958 100644
--- a/test/unit/org/apache/cassandra/index/sai/disk/vector/BruteForceRowIdIteratorTest.java
+++ b/test/unit/org/apache/cassandra/index/sai/disk/vector/BruteForceRowIdIteratorTest.java
@@ -22,7 +22,7 @@
import org.junit.Test;
-import io.github.jbellis.jvector.graph.GraphIndex;
+import io.github.jbellis.jvector.graph.ImmutableGraphIndex;
import io.github.jbellis.jvector.graph.NodeQueue;
import io.github.jbellis.jvector.graph.NodesIterator;
import io.github.jbellis.jvector.graph.similarity.ScoreFunction;
@@ -63,7 +63,7 @@ public void testBruteForceRowIdIteratorForEmptyPQAndTopKEqualsLimit()
assertTrue(view.isClosed);
}
- private static class TestView implements GraphIndex.ScoringView
+ private static class TestView implements ImmutableGraphIndex.ScoringView
{
private boolean isClosed = false;
@@ -102,7 +102,7 @@ public int size()
}
@Override
- public GraphIndex.NodeAtLevel entryNode()
+ public ImmutableGraphIndex.NodeAtLevel entryNode()
{
throw new UnsupportedOperationException();
}
@@ -112,5 +112,11 @@ public Bits liveNodes()
{
throw new UnsupportedOperationException();
}
+
+ @Override
+ public boolean contains(int i, int i1)
+ {
+ return false;
+ }
}
}