mirror of https://github.com/apache/lucene.git
Use FieldInfo vector similarity in knn readers (#13237)
Both the KnnWriters & FieldInfo keep track of the vector similarity used by a given field. This commit ensures they are the same and utilizes the FieldInfo one (which, while these are enums, are exactly the same).
This commit is contained in:
parent
c41eb227ea
commit
69172b14ce
|
@ -158,7 +158,7 @@ public final class Lucene90HnswVectorsReader extends KnnVectorsReader {
|
|||
throw new CorruptIndexException("Invalid field number: " + fieldNumber, meta);
|
||||
}
|
||||
|
||||
FieldEntry fieldEntry = readField(meta);
|
||||
FieldEntry fieldEntry = readField(meta, info);
|
||||
validateFieldEntry(info, fieldEntry);
|
||||
fields.put(info.name, fieldEntry);
|
||||
}
|
||||
|
@ -200,9 +200,18 @@ public final class Lucene90HnswVectorsReader extends KnnVectorsReader {
|
|||
return VectorSimilarityFunction.values()[similarityFunctionId];
|
||||
}
|
||||
|
||||
private FieldEntry readField(DataInput input) throws IOException {
|
||||
private FieldEntry readField(IndexInput input, FieldInfo info) throws IOException {
|
||||
VectorSimilarityFunction similarityFunction = readSimilarityFunction(input);
|
||||
return new FieldEntry(input, similarityFunction);
|
||||
if (similarityFunction != info.getVectorSimilarityFunction()) {
|
||||
throw new IllegalStateException(
|
||||
"Inconsistent vector similarity function for field=\""
|
||||
+ info.name
|
||||
+ "\"; "
|
||||
+ similarityFunction
|
||||
+ " != "
|
||||
+ info.getVectorSimilarityFunction());
|
||||
}
|
||||
return new FieldEntry(input, info.getVectorSimilarityFunction());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -150,7 +150,7 @@ public final class Lucene91HnswVectorsReader extends KnnVectorsReader {
|
|||
if (info == null) {
|
||||
throw new CorruptIndexException("Invalid field number: " + fieldNumber, meta);
|
||||
}
|
||||
FieldEntry fieldEntry = readField(meta);
|
||||
FieldEntry fieldEntry = readField(meta, info);
|
||||
validateFieldEntry(info, fieldEntry);
|
||||
fields.put(info.name, fieldEntry);
|
||||
}
|
||||
|
@ -192,9 +192,18 @@ public final class Lucene91HnswVectorsReader extends KnnVectorsReader {
|
|||
return VectorSimilarityFunction.values()[similarityFunctionId];
|
||||
}
|
||||
|
||||
private FieldEntry readField(DataInput input) throws IOException {
|
||||
private FieldEntry readField(IndexInput input, FieldInfo info) throws IOException {
|
||||
VectorSimilarityFunction similarityFunction = readSimilarityFunction(input);
|
||||
return new FieldEntry(input, similarityFunction);
|
||||
if (similarityFunction != info.getVectorSimilarityFunction()) {
|
||||
throw new IllegalStateException(
|
||||
"Inconsistent vector similarity function for field=\""
|
||||
+ info.name
|
||||
+ "\"; "
|
||||
+ similarityFunction
|
||||
+ " != "
|
||||
+ info.getVectorSimilarityFunction());
|
||||
}
|
||||
return new FieldEntry(input, info.getVectorSimilarityFunction());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -149,7 +149,7 @@ public final class Lucene92HnswVectorsReader extends KnnVectorsReader {
|
|||
if (info == null) {
|
||||
throw new CorruptIndexException("Invalid field number: " + fieldNumber, meta);
|
||||
}
|
||||
FieldEntry fieldEntry = readField(meta);
|
||||
FieldEntry fieldEntry = readField(meta, info);
|
||||
validateFieldEntry(info, fieldEntry);
|
||||
fields.put(info.name, fieldEntry);
|
||||
}
|
||||
|
@ -191,9 +191,18 @@ public final class Lucene92HnswVectorsReader extends KnnVectorsReader {
|
|||
return VectorSimilarityFunction.values()[similarityFunctionId];
|
||||
}
|
||||
|
||||
private FieldEntry readField(IndexInput input) throws IOException {
|
||||
private FieldEntry readField(IndexInput input, FieldInfo info) throws IOException {
|
||||
VectorSimilarityFunction similarityFunction = readSimilarityFunction(input);
|
||||
return new FieldEntry(input, similarityFunction);
|
||||
if (similarityFunction != info.getVectorSimilarityFunction()) {
|
||||
throw new IllegalStateException(
|
||||
"Inconsistent vector similarity function for field=\""
|
||||
+ info.name
|
||||
+ "\"; "
|
||||
+ similarityFunction
|
||||
+ " != "
|
||||
+ info.getVectorSimilarityFunction());
|
||||
}
|
||||
return new FieldEntry(input, info.getVectorSimilarityFunction());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -150,7 +150,7 @@ public final class Lucene94HnswVectorsReader extends KnnVectorsReader {
|
|||
if (info == null) {
|
||||
throw new CorruptIndexException("Invalid field number: " + fieldNumber, meta);
|
||||
}
|
||||
FieldEntry fieldEntry = readField(meta);
|
||||
FieldEntry fieldEntry = readField(meta, info);
|
||||
validateFieldEntry(info, fieldEntry);
|
||||
fields.put(info.name, fieldEntry);
|
||||
}
|
||||
|
@ -208,10 +208,19 @@ public final class Lucene94HnswVectorsReader extends KnnVectorsReader {
|
|||
return VectorEncoding.values()[encodingId];
|
||||
}
|
||||
|
||||
private FieldEntry readField(IndexInput input) throws IOException {
|
||||
private FieldEntry readField(IndexInput input, FieldInfo info) throws IOException {
|
||||
VectorEncoding vectorEncoding = readVectorEncoding(input);
|
||||
VectorSimilarityFunction similarityFunction = readSimilarityFunction(input);
|
||||
return new FieldEntry(input, vectorEncoding, similarityFunction);
|
||||
if (similarityFunction != info.getVectorSimilarityFunction()) {
|
||||
throw new IllegalStateException(
|
||||
"Inconsistent vector similarity function for field=\""
|
||||
+ info.name
|
||||
+ "\"; "
|
||||
+ similarityFunction
|
||||
+ " != "
|
||||
+ info.getVectorSimilarityFunction());
|
||||
}
|
||||
return new FieldEntry(input, vectorEncoding, info.getVectorSimilarityFunction());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -162,7 +162,7 @@ public final class Lucene95HnswVectorsReader extends KnnVectorsReader implements
|
|||
if (info == null) {
|
||||
throw new CorruptIndexException("Invalid field number: " + fieldNumber, meta);
|
||||
}
|
||||
FieldEntry fieldEntry = readField(meta);
|
||||
FieldEntry fieldEntry = readField(meta, info);
|
||||
validateFieldEntry(info, fieldEntry);
|
||||
fields.put(info.name, fieldEntry);
|
||||
}
|
||||
|
@ -220,10 +220,19 @@ public final class Lucene95HnswVectorsReader extends KnnVectorsReader implements
|
|||
return VectorEncoding.values()[encodingId];
|
||||
}
|
||||
|
||||
private FieldEntry readField(IndexInput input) throws IOException {
|
||||
private FieldEntry readField(IndexInput input, FieldInfo info) throws IOException {
|
||||
VectorEncoding vectorEncoding = readVectorEncoding(input);
|
||||
VectorSimilarityFunction similarityFunction = readSimilarityFunction(input);
|
||||
return new FieldEntry(input, vectorEncoding, similarityFunction);
|
||||
if (similarityFunction != info.getVectorSimilarityFunction()) {
|
||||
throw new IllegalStateException(
|
||||
"Inconsistent vector similarity function for field=\""
|
||||
+ info.name
|
||||
+ "\"; "
|
||||
+ similarityFunction
|
||||
+ " != "
|
||||
+ info.getVectorSimilarityFunction());
|
||||
}
|
||||
return new FieldEntry(input, vectorEncoding, info.getVectorSimilarityFunction());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -143,7 +143,7 @@ public final class Lucene99FlatVectorsReader extends FlatVectorsReader {
|
|||
if (info == null) {
|
||||
throw new CorruptIndexException("Invalid field number: " + fieldNumber, meta);
|
||||
}
|
||||
FieldEntry fieldEntry = readField(meta);
|
||||
FieldEntry fieldEntry = readField(meta, info);
|
||||
validateFieldEntry(info, fieldEntry);
|
||||
fields.put(info.name, fieldEntry);
|
||||
}
|
||||
|
@ -183,10 +183,19 @@ public final class Lucene99FlatVectorsReader extends FlatVectorsReader {
|
|||
}
|
||||
}
|
||||
|
||||
private FieldEntry readField(IndexInput input) throws IOException {
|
||||
private FieldEntry readField(IndexInput input, FieldInfo info) throws IOException {
|
||||
VectorEncoding vectorEncoding = readVectorEncoding(input);
|
||||
VectorSimilarityFunction similarityFunction = readSimilarityFunction(input);
|
||||
return new FieldEntry(input, vectorEncoding, similarityFunction);
|
||||
if (similarityFunction != info.getVectorSimilarityFunction()) {
|
||||
throw new IllegalStateException(
|
||||
"Inconsistent vector similarity function for field=\""
|
||||
+ info.name
|
||||
+ "\"; "
|
||||
+ similarityFunction
|
||||
+ " != "
|
||||
+ info.getVectorSimilarityFunction());
|
||||
}
|
||||
return new FieldEntry(input, vectorEncoding, info.getVectorSimilarityFunction());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -153,7 +153,7 @@ public final class Lucene99HnswVectorsReader extends KnnVectorsReader
|
|||
if (info == null) {
|
||||
throw new CorruptIndexException("Invalid field number: " + fieldNumber, meta);
|
||||
}
|
||||
FieldEntry fieldEntry = readField(meta);
|
||||
FieldEntry fieldEntry = readField(meta, info);
|
||||
validateFieldEntry(info, fieldEntry);
|
||||
fields.put(info.name, fieldEntry);
|
||||
}
|
||||
|
@ -200,10 +200,19 @@ public final class Lucene99HnswVectorsReader extends KnnVectorsReader
|
|||
return VectorEncoding.values()[encodingId];
|
||||
}
|
||||
|
||||
private FieldEntry readField(IndexInput input) throws IOException {
|
||||
private FieldEntry readField(IndexInput input, FieldInfo info) throws IOException {
|
||||
VectorEncoding vectorEncoding = readVectorEncoding(input);
|
||||
VectorSimilarityFunction similarityFunction = readSimilarityFunction(input);
|
||||
return new FieldEntry(input, vectorEncoding, similarityFunction);
|
||||
if (similarityFunction != info.getVectorSimilarityFunction()) {
|
||||
throw new IllegalStateException(
|
||||
"Inconsistent vector similarity function for field=\""
|
||||
+ info.name
|
||||
+ "\"; "
|
||||
+ similarityFunction
|
||||
+ " != "
|
||||
+ info.getVectorSimilarityFunction());
|
||||
}
|
||||
return new FieldEntry(input, vectorEncoding, info.getVectorSimilarityFunction());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -108,7 +108,7 @@ public final class Lucene99ScalarQuantizedVectorsReader extends FlatVectorsReade
|
|||
if (info == null) {
|
||||
throw new CorruptIndexException("Invalid field number: " + fieldNumber, meta);
|
||||
}
|
||||
FieldEntry fieldEntry = readField(meta);
|
||||
FieldEntry fieldEntry = readField(meta, info);
|
||||
validateFieldEntry(info, fieldEntry);
|
||||
fields.put(info.name, fieldEntry);
|
||||
}
|
||||
|
@ -236,10 +236,19 @@ public final class Lucene99ScalarQuantizedVectorsReader extends FlatVectorsReade
|
|||
return size;
|
||||
}
|
||||
|
||||
private FieldEntry readField(IndexInput input) throws IOException {
|
||||
private FieldEntry readField(IndexInput input, FieldInfo info) throws IOException {
|
||||
VectorEncoding vectorEncoding = readVectorEncoding(input);
|
||||
VectorSimilarityFunction similarityFunction = readSimilarityFunction(input);
|
||||
return new FieldEntry(input, vectorEncoding, similarityFunction);
|
||||
if (similarityFunction != info.getVectorSimilarityFunction()) {
|
||||
throw new IllegalStateException(
|
||||
"Inconsistent vector similarity function for field=\""
|
||||
+ info.name
|
||||
+ "\"; "
|
||||
+ similarityFunction
|
||||
+ " != "
|
||||
+ info.getVectorSimilarityFunction());
|
||||
}
|
||||
return new FieldEntry(input, vectorEncoding, info.getVectorSimilarityFunction());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue