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; + } } }