mirror of https://github.com/apache/lucene.git
Remove Accountable interface in KnnVectorsReader (#13255)
This commit is contained in:
parent
4c843fc9ae
commit
df0384c34f
|
@ -96,6 +96,9 @@ API Changes
|
||||||
|
|
||||||
* GITHUB#13261: Convert `BooleanClause` class to record class. (Pulkit Gupta)
|
* GITHUB#13261: Convert `BooleanClause` class to record class. (Pulkit Gupta)
|
||||||
|
|
||||||
|
* GITHUB#13241: Remove Accountable interface on KnnVectorsReader. (Pulkit Gupta)
|
||||||
|
|
||||||
|
|
||||||
New Features
|
New Features
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,12 @@ public class CustomCollectorManager implements CollectorManager<CustomCollector,
|
||||||
|
|
||||||
List<Object> results = searcher.search(query, new CustomCollectorManager());
|
List<Object> results = searcher.search(query, new CustomCollectorManager());
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Accountable interface removed from KnnVectorsReader (GITHUB#13255)
|
||||||
|
|
||||||
|
`KnnVectorsReader` objects use small heap memory, so it's not worth maintaining heap usage for them hence removed
|
||||||
|
`Accountable` interface from `KnnVectorsReader`.
|
||||||
|
|
||||||
## Migration from Lucene 9.0 to Lucene 9.1
|
## Migration from Lucene 9.0 to Lucene 9.1
|
||||||
|
|
||||||
### Test framework package migration and module (LUCENE-10301)
|
### Test framework package migration and module (LUCENE-10301)
|
||||||
|
|
|
@ -40,7 +40,6 @@ import org.apache.lucene.store.DataInput;
|
||||||
import org.apache.lucene.store.IndexInput;
|
import org.apache.lucene.store.IndexInput;
|
||||||
import org.apache.lucene.util.Bits;
|
import org.apache.lucene.util.Bits;
|
||||||
import org.apache.lucene.util.IOUtils;
|
import org.apache.lucene.util.IOUtils;
|
||||||
import org.apache.lucene.util.RamUsageEstimator;
|
|
||||||
import org.apache.lucene.util.hnsw.HnswGraph;
|
import org.apache.lucene.util.hnsw.HnswGraph;
|
||||||
import org.apache.lucene.util.hnsw.NeighborQueue;
|
import org.apache.lucene.util.hnsw.NeighborQueue;
|
||||||
import org.apache.lucene.util.hnsw.RandomAccessVectorValues;
|
import org.apache.lucene.util.hnsw.RandomAccessVectorValues;
|
||||||
|
@ -214,18 +213,6 @@ public final class Lucene90HnswVectorsReader extends KnnVectorsReader {
|
||||||
return new FieldEntry(input, info.getVectorSimilarityFunction());
|
return new FieldEntry(input, info.getVectorSimilarityFunction());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
long totalBytes = RamUsageEstimator.shallowSizeOfInstance(Lucene90HnswVectorsReader.class);
|
|
||||||
totalBytes +=
|
|
||||||
RamUsageEstimator.sizeOfMap(
|
|
||||||
fields, RamUsageEstimator.shallowSizeOfInstance(FieldEntry.class));
|
|
||||||
for (FieldEntry entry : fields.values()) {
|
|
||||||
totalBytes += RamUsageEstimator.sizeOf(entry.ordToDoc);
|
|
||||||
}
|
|
||||||
return totalBytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkIntegrity() throws IOException {
|
public void checkIntegrity() throws IOException {
|
||||||
CodecUtil.checksumEntireFile(vectorData);
|
CodecUtil.checksumEntireFile(vectorData);
|
||||||
|
|
|
@ -40,7 +40,6 @@ import org.apache.lucene.store.DataInput;
|
||||||
import org.apache.lucene.store.IndexInput;
|
import org.apache.lucene.store.IndexInput;
|
||||||
import org.apache.lucene.util.Bits;
|
import org.apache.lucene.util.Bits;
|
||||||
import org.apache.lucene.util.IOUtils;
|
import org.apache.lucene.util.IOUtils;
|
||||||
import org.apache.lucene.util.RamUsageEstimator;
|
|
||||||
import org.apache.lucene.util.hnsw.HnswGraph;
|
import org.apache.lucene.util.hnsw.HnswGraph;
|
||||||
import org.apache.lucene.util.hnsw.HnswGraphSearcher;
|
import org.apache.lucene.util.hnsw.HnswGraphSearcher;
|
||||||
import org.apache.lucene.util.hnsw.OrdinalTranslatedKnnCollector;
|
import org.apache.lucene.util.hnsw.OrdinalTranslatedKnnCollector;
|
||||||
|
@ -206,18 +205,6 @@ public final class Lucene91HnswVectorsReader extends KnnVectorsReader {
|
||||||
return new FieldEntry(input, info.getVectorSimilarityFunction());
|
return new FieldEntry(input, info.getVectorSimilarityFunction());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
long totalBytes = RamUsageEstimator.shallowSizeOfInstance(Lucene91HnswVectorsFormat.class);
|
|
||||||
totalBytes +=
|
|
||||||
RamUsageEstimator.sizeOfMap(
|
|
||||||
fields, RamUsageEstimator.shallowSizeOfInstance(FieldEntry.class));
|
|
||||||
for (FieldEntry entry : fields.values()) {
|
|
||||||
totalBytes += RamUsageEstimator.sizeOf(entry.ordToDoc);
|
|
||||||
}
|
|
||||||
return totalBytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkIntegrity() throws IOException {
|
public void checkIntegrity() throws IOException {
|
||||||
CodecUtil.checksumEntireFile(vectorData);
|
CodecUtil.checksumEntireFile(vectorData);
|
||||||
|
|
|
@ -39,7 +39,6 @@ import org.apache.lucene.store.DataInput;
|
||||||
import org.apache.lucene.store.IndexInput;
|
import org.apache.lucene.store.IndexInput;
|
||||||
import org.apache.lucene.util.Bits;
|
import org.apache.lucene.util.Bits;
|
||||||
import org.apache.lucene.util.IOUtils;
|
import org.apache.lucene.util.IOUtils;
|
||||||
import org.apache.lucene.util.RamUsageEstimator;
|
|
||||||
import org.apache.lucene.util.hnsw.HnswGraph;
|
import org.apache.lucene.util.hnsw.HnswGraph;
|
||||||
import org.apache.lucene.util.hnsw.HnswGraphSearcher;
|
import org.apache.lucene.util.hnsw.HnswGraphSearcher;
|
||||||
import org.apache.lucene.util.hnsw.OrdinalTranslatedKnnCollector;
|
import org.apache.lucene.util.hnsw.OrdinalTranslatedKnnCollector;
|
||||||
|
@ -205,15 +204,6 @@ public final class Lucene92HnswVectorsReader extends KnnVectorsReader {
|
||||||
return new FieldEntry(input, info.getVectorSimilarityFunction());
|
return new FieldEntry(input, info.getVectorSimilarityFunction());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
long totalBytes = RamUsageEstimator.shallowSizeOfInstance(Lucene92HnswVectorsFormat.class);
|
|
||||||
totalBytes +=
|
|
||||||
RamUsageEstimator.sizeOfMap(
|
|
||||||
fields, RamUsageEstimator.shallowSizeOfInstance(FieldEntry.class));
|
|
||||||
return totalBytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkIntegrity() throws IOException {
|
public void checkIntegrity() throws IOException {
|
||||||
CodecUtil.checksumEntireFile(vectorData);
|
CodecUtil.checksumEntireFile(vectorData);
|
||||||
|
|
|
@ -40,7 +40,6 @@ import org.apache.lucene.store.DataInput;
|
||||||
import org.apache.lucene.store.IndexInput;
|
import org.apache.lucene.store.IndexInput;
|
||||||
import org.apache.lucene.util.Bits;
|
import org.apache.lucene.util.Bits;
|
||||||
import org.apache.lucene.util.IOUtils;
|
import org.apache.lucene.util.IOUtils;
|
||||||
import org.apache.lucene.util.RamUsageEstimator;
|
|
||||||
import org.apache.lucene.util.hnsw.HnswGraph;
|
import org.apache.lucene.util.hnsw.HnswGraph;
|
||||||
import org.apache.lucene.util.hnsw.HnswGraphSearcher;
|
import org.apache.lucene.util.hnsw.HnswGraphSearcher;
|
||||||
import org.apache.lucene.util.hnsw.OrdinalTranslatedKnnCollector;
|
import org.apache.lucene.util.hnsw.OrdinalTranslatedKnnCollector;
|
||||||
|
@ -223,15 +222,6 @@ public final class Lucene94HnswVectorsReader extends KnnVectorsReader {
|
||||||
return new FieldEntry(input, vectorEncoding, info.getVectorSimilarityFunction());
|
return new FieldEntry(input, vectorEncoding, info.getVectorSimilarityFunction());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
long totalBytes = RamUsageEstimator.shallowSizeOfInstance(Lucene94HnswVectorsFormat.class);
|
|
||||||
totalBytes +=
|
|
||||||
RamUsageEstimator.sizeOfMap(
|
|
||||||
fields, RamUsageEstimator.shallowSizeOfInstance(FieldEntry.class));
|
|
||||||
return totalBytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkIntegrity() throws IOException {
|
public void checkIntegrity() throws IOException {
|
||||||
CodecUtil.checksumEntireFile(vectorData);
|
CodecUtil.checksumEntireFile(vectorData);
|
||||||
|
|
|
@ -61,9 +61,6 @@ import org.apache.lucene.util.packed.DirectMonotonicReader;
|
||||||
*/
|
*/
|
||||||
public final class Lucene95HnswVectorsReader extends KnnVectorsReader implements HnswGraphProvider {
|
public final class Lucene95HnswVectorsReader extends KnnVectorsReader implements HnswGraphProvider {
|
||||||
|
|
||||||
private static final long SHALLOW_SIZE =
|
|
||||||
RamUsageEstimator.shallowSizeOfInstance(Lucene95HnswVectorsFormat.class);
|
|
||||||
|
|
||||||
private final FieldInfos fieldInfos;
|
private final FieldInfos fieldInfos;
|
||||||
private final Map<String, FieldEntry> fields = new HashMap<>();
|
private final Map<String, FieldEntry> fields = new HashMap<>();
|
||||||
private final IndexInput vectorData;
|
private final IndexInput vectorData;
|
||||||
|
@ -235,13 +232,6 @@ public final class Lucene95HnswVectorsReader extends KnnVectorsReader implements
|
||||||
return new FieldEntry(input, vectorEncoding, info.getVectorSimilarityFunction());
|
return new FieldEntry(input, vectorEncoding, info.getVectorSimilarityFunction());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
return Lucene95HnswVectorsReader.SHALLOW_SIZE
|
|
||||||
+ RamUsageEstimator.sizeOfMap(
|
|
||||||
fields, RamUsageEstimator.shallowSizeOfInstance(FieldEntry.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkIntegrity() throws IOException {
|
public void checkIntegrity() throws IOException {
|
||||||
CodecUtil.checksumEntireFile(vectorData);
|
CodecUtil.checksumEntireFile(vectorData);
|
||||||
|
|
|
@ -46,7 +46,6 @@ import org.apache.lucene.util.Bits;
|
||||||
import org.apache.lucene.util.BytesRef;
|
import org.apache.lucene.util.BytesRef;
|
||||||
import org.apache.lucene.util.BytesRefBuilder;
|
import org.apache.lucene.util.BytesRefBuilder;
|
||||||
import org.apache.lucene.util.IOUtils;
|
import org.apache.lucene.util.IOUtils;
|
||||||
import org.apache.lucene.util.RamUsageEstimator;
|
|
||||||
import org.apache.lucene.util.StringHelper;
|
import org.apache.lucene.util.StringHelper;
|
||||||
import org.apache.lucene.util.hnsw.RandomAccessVectorValues;
|
import org.apache.lucene.util.hnsw.RandomAccessVectorValues;
|
||||||
|
|
||||||
|
@ -58,9 +57,6 @@ import org.apache.lucene.util.hnsw.RandomAccessVectorValues;
|
||||||
*/
|
*/
|
||||||
public class SimpleTextKnnVectorsReader extends KnnVectorsReader {
|
public class SimpleTextKnnVectorsReader extends KnnVectorsReader {
|
||||||
// shallowSizeOfInstance for fieldEntries map is included in ramBytesUsed() calculation
|
// shallowSizeOfInstance for fieldEntries map is included in ramBytesUsed() calculation
|
||||||
private static final long BASE_RAM_BYTES_USED =
|
|
||||||
RamUsageEstimator.shallowSizeOfInstance(SimpleTextKnnVectorsReader.class)
|
|
||||||
+ RamUsageEstimator.shallowSizeOfInstance(BytesRef.class);
|
|
||||||
|
|
||||||
private static final BytesRef EMPTY = new BytesRef("");
|
private static final BytesRef EMPTY = new BytesRef("");
|
||||||
|
|
||||||
|
@ -274,20 +270,6 @@ public class SimpleTextKnnVectorsReader extends KnnVectorsReader {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
// mirror implementation of Lucene90VectorReader#ramBytesUsed
|
|
||||||
long totalBytes = BASE_RAM_BYTES_USED;
|
|
||||||
totalBytes += RamUsageEstimator.sizeOf(scratch.bytes());
|
|
||||||
totalBytes +=
|
|
||||||
RamUsageEstimator.sizeOfMap(
|
|
||||||
fieldEntries, RamUsageEstimator.shallowSizeOfInstance(FieldEntry.class));
|
|
||||||
for (FieldEntry entry : fieldEntries.values()) {
|
|
||||||
totalBytes += RamUsageEstimator.sizeOf(entry.ordToDoc);
|
|
||||||
}
|
|
||||||
return totalBytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
dataIn.close();
|
dataIn.close();
|
||||||
|
|
|
@ -131,11 +131,6 @@ public abstract class KnnVectorsFormat implements NamedSPILoader.NamedSPI {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() {}
|
public void close() {}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,11 +26,10 @@ import org.apache.lucene.search.KnnCollector;
|
||||||
import org.apache.lucene.search.ScoreDoc;
|
import org.apache.lucene.search.ScoreDoc;
|
||||||
import org.apache.lucene.search.TopDocs;
|
import org.apache.lucene.search.TopDocs;
|
||||||
import org.apache.lucene.search.TotalHits;
|
import org.apache.lucene.search.TotalHits;
|
||||||
import org.apache.lucene.util.Accountable;
|
|
||||||
import org.apache.lucene.util.Bits;
|
import org.apache.lucene.util.Bits;
|
||||||
|
|
||||||
/** Reads vectors from an index. */
|
/** Reads vectors from an index. */
|
||||||
public abstract class KnnVectorsReader implements Closeable, Accountable {
|
public abstract class KnnVectorsReader implements Closeable {
|
||||||
|
|
||||||
/** Sole constructor */
|
/** Sole constructor */
|
||||||
protected KnnVectorsReader() {}
|
protected KnnVectorsReader() {}
|
||||||
|
|
|
@ -286,15 +286,6 @@ public abstract class PerFieldKnnVectorsFormat extends KnnVectorsFormat {
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
IOUtils.close(fields.values());
|
IOUtils.close(fields.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
long total = 0;
|
|
||||||
for (KnnVectorsReader reader : fields.values()) {
|
|
||||||
total += reader.ramBytesUsed();
|
|
||||||
}
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static String getSuffix(String formatName, String suffix) {
|
static String getSuffix(String formatName, String suffix) {
|
||||||
|
|
|
@ -191,11 +191,6 @@ public final class SlowCodecReaderWrapper {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() {}
|
public void close() {}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
return 0L;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -823,15 +823,6 @@ final class SlowCompositeCodecReaderWrapper extends CodecReader {
|
||||||
IOUtils.close(readers);
|
IOUtils.close(readers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
long ramBytesUsed = 0;
|
|
||||||
for (KnnVectorsReader reader : readers) {
|
|
||||||
ramBytesUsed += reader.ramBytesUsed();
|
|
||||||
}
|
|
||||||
return ramBytesUsed;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void checkIntegrity() throws IOException {
|
public void checkIntegrity() throws IOException {
|
||||||
for (KnnVectorsReader reader : readers) {
|
for (KnnVectorsReader reader : readers) {
|
||||||
|
|
|
@ -520,11 +520,6 @@ public final class SortingCodecReader extends FilterCodecReader {
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
delegate.close();
|
delegate.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
return delegate.ramBytesUsed();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -171,11 +171,6 @@ public class AssertingKnnVectorsFormat extends KnnVectorsFormat {
|
||||||
delegate.close();
|
delegate.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long ramBytesUsed() {
|
|
||||||
return delegate.ramBytesUsed();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HnswGraph getGraph(String field) throws IOException {
|
public HnswGraph getGraph(String field) throws IOException {
|
||||||
return ((HnswGraphProvider) delegate).getGraph(field);
|
return ((HnswGraphProvider) delegate).getGraph(field);
|
||||||
|
|
Loading…
Reference in New Issue