Class Lucene95HnswVectorsReader
- All Implemented Interfaces:
Closeable
,AutoCloseable
,HnswGraphProvider
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static final record
private static final class
Read the nearest-neighbors graph from the index input -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final DefaultFlatVectorScorer
private final FieldInfos
private final IntObjectHashMap
<Lucene95HnswVectorsReader.FieldEntry> private final IndexInput
private final IndexInput
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Checks consistency of this reader.void
close()
getByteVectorValues
(String field) Returns theByteVectorValues
for the givenfield
.getFieldEntry
(String field, VectorEncoding expectedEncoding) getFloatVectorValues
(String field) Returns theFloatVectorValues
for the givenfield
.Get knn graph values; used for testingprivate HnswGraph
private static IndexInput
openDataInput
(SegmentReadState state, int versionMeta, String fileExtension, String codecName) readField
(IndexInput input, FieldInfo info) private void
readFields
(ChecksumIndexInput meta, FieldInfos infos) private int
readMetadata
(SegmentReadState state) private VectorSimilarityFunction
readSimilarityFunction
(DataInput input) private VectorEncoding
readVectorEncoding
(DataInput input) void
search
(String field, byte[] target, KnnCollector knnCollector, Bits acceptDocs) Return the k nearest neighbor documents as determined by comparison of their vector values for this field, to the given vector, by the field's similarity function.void
search
(String field, float[] target, KnnCollector knnCollector, Bits acceptDocs) Return the k nearest neighbor documents as determined by comparison of their vector values for this field, to the given vector, by the field's similarity function.private void
validateFieldEntry
(FieldInfo info, Lucene95HnswVectorsReader.FieldEntry fieldEntry) Methods inherited from class org.apache.lucene.codecs.KnnVectorsReader
finishMerge, getMergeInstance
-
Field Details
-
fieldInfos
-
fields
-
vectorData
-
vectorIndex
-
defaultFlatVectorScorer
-
-
Constructor Details
-
Lucene95HnswVectorsReader
Lucene95HnswVectorsReader(SegmentReadState state) throws IOException - Throws:
IOException
-
-
Method Details
-
readMetadata
- Throws:
IOException
-
openDataInput
private static IndexInput openDataInput(SegmentReadState state, int versionMeta, String fileExtension, String codecName) throws IOException - Throws:
IOException
-
readFields
- Throws:
IOException
-
validateFieldEntry
-
readSimilarityFunction
- Throws:
IOException
-
readVectorEncoding
- Throws:
IOException
-
readField
private Lucene95HnswVectorsReader.FieldEntry readField(IndexInput input, FieldInfo info) throws IOException - Throws:
IOException
-
checkIntegrity
Description copied from class:KnnVectorsReader
Checks consistency of this reader.Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value against large data files.
- Specified by:
checkIntegrity
in classKnnVectorsReader
- Throws:
IOException
-
getFieldEntry
private Lucene95HnswVectorsReader.FieldEntry getFieldEntry(String field, VectorEncoding expectedEncoding) -
getFloatVectorValues
Description copied from class:KnnVectorsReader
Returns theFloatVectorValues
for the givenfield
. The behavior is undefined if the given field doesn't have KNN vectors enabled on itsFieldInfo
. The return value is nevernull
.- Specified by:
getFloatVectorValues
in classKnnVectorsReader
- Throws:
IOException
-
getByteVectorValues
Description copied from class:KnnVectorsReader
Returns theByteVectorValues
for the givenfield
. The behavior is undefined if the given field doesn't have KNN vectors enabled on itsFieldInfo
. The return value is nevernull
.- Specified by:
getByteVectorValues
in classKnnVectorsReader
- Throws:
IOException
-
search
public void search(String field, float[] target, KnnCollector knnCollector, Bits acceptDocs) throws IOException Description copied from class:KnnVectorsReader
Return the k nearest neighbor documents as determined by comparison of their vector values for this field, to the given vector, by the field's similarity function. The score of each document is derived from the vector similarity in a way that ensures scores are positive and that a larger score corresponds to a higher ranking.The search is allowed to be approximate, meaning the results are not guaranteed to be the true k closest neighbors. For large values of k (for example when k is close to the total number of documents), the search may also retrieve fewer than k documents.
The returned
TopDocs
will contain aScoreDoc
for each nearest neighbor, in order of their similarity to the query vector (decreasing scores). TheTotalHits
contains the number of documents visited during the search. If the search stopped early because it hitvisitedLimit
, it is indicated through the relationTotalHits.Relation.GREATER_THAN_OR_EQUAL_TO
.The behavior is undefined if the given field doesn't have KNN vectors enabled on its
FieldInfo
. The return value is nevernull
.- Specified by:
search
in classKnnVectorsReader
- Parameters:
field
- the vector field to searchtarget
- the vector-valued queryknnCollector
- a KnnResults collector and relevant settings for gathering vector resultsacceptDocs
-Bits
that represents the allowed documents to match, ornull
if they are all allowed to match.- Throws:
IOException
-
search
public void search(String field, byte[] target, KnnCollector knnCollector, Bits acceptDocs) throws IOException Description copied from class:KnnVectorsReader
Return the k nearest neighbor documents as determined by comparison of their vector values for this field, to the given vector, by the field's similarity function. The score of each document is derived from the vector similarity in a way that ensures scores are positive and that a larger score corresponds to a higher ranking.The search is allowed to be approximate, meaning the results are not guaranteed to be the true k closest neighbors. For large values of k (for example when k is close to the total number of documents), the search may also retrieve fewer than k documents.
The returned
TopDocs
will contain aScoreDoc
for each nearest neighbor, in order of their similarity to the query vector (decreasing scores). TheTotalHits
contains the number of documents visited during the search. If the search stopped early because it hitvisitedLimit
, it is indicated through the relationTotalHits.Relation.GREATER_THAN_OR_EQUAL_TO
.The behavior is undefined if the given field doesn't have KNN vectors enabled on its
FieldInfo
. The return value is nevernull
.- Specified by:
search
in classKnnVectorsReader
- Parameters:
field
- the vector field to searchtarget
- the vector-valued queryknnCollector
- a KnnResults collector and relevant settings for gathering vector resultsacceptDocs
-Bits
that represents the allowed documents to match, ornull
if they are all allowed to match.- Throws:
IOException
-
getGraph
Get knn graph values; used for testing- Specified by:
getGraph
in interfaceHnswGraphProvider
- Parameters:
field
- the field containing the graph- Returns:
- the HnswGraph for the given field if found
- Throws:
IOException
- when reading potentially off-heap graph fails
-
getGraph
- Throws:
IOException
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-