Hi Michael,

Glad you got it working. There is also a KNN vector search demo that was
added not long ago. You might want to check it out. It has references for
example, to compute embeddings and build knn vector queries
<https://github.com/apache/lucene/blob/main/lucene/demo/src/java/org/apache/lucene/demo/SearchFiles.java#L272-L292>,
among other things.

   - Search Files:
   
https://github.com/apache/lucene/blob/main/lucene/demo/src/java/org/apache/lucene/demo/SearchFiles.java

   - Index Files:
   
https://github.com/apache/lucene/blob/main/lucene/demo/src/java/org/apache/lucene/demo/IndexFiles.java

   - knn demo files:
   
https://github.com/apache/lucene/tree/main/lucene/demo/src/java/org/apache/lucene/demo/knn


- Vigya


On Mon, Nov 1, 2021 at 2:44 PM Michael Wechner <michael.wech...@wyona.com>
wrote:

> I was able to update my code
>
> -        FieldType vectorFieldType =
> VectorField.createHnswType(vector.length,
> VectorValues.SimilarityFunction.DOT_PRODUCT, 16, 500);
> -        VectorField vectorField = new VectorField(VECTOR_FIELD, vector,
> vectorFieldType);
> +        FieldType vectorFieldType =
> KnnVectorField.createFieldType(vector.length,
> VectorSimilarityFunction.DOT_PRODUCT);
> +        KnnVectorField vectorField = new KnnVectorField(VECTOR_FIELD,
> vector, vectorFieldType);
>
> and
>
> -            return new TopDocScorer(this,
> context.reader().searchNearestVectors(field, vector, topK, fanout));
> +            return new TopDocScorer(this,
> context.reader().searchNearestVectors(field, vector, topK, null));
>
> the indexing and searching works again :-)
>
> Thanks
>
> Michael
>
> Am 01.11.21 um 18:53 schrieb Michael Wechner:
>
> Hi
>
> In May 2021 I have done a Vector Search implementation based on Lucene 
> 9.0.0-SNAPSHOT with the following code
>
> FieldType vectorFieldType = VectorField.createHnswType(vector.length, 
> VectorValues.SimilarityFunction.DOT_PRODUCT, 16, 500);
> VectorField vectorField = new VectorField(VECTOR_FIELD, vector, 
> vectorFieldType);
> doc.add(vectorField)
>
> and
> class KnnWeight extends Weight {
>
>     KnnWeight() {
>         super(KnnQuery.this);
>     }
>
>     @Override    public Scorer scorer(LeafReaderContext context) throws 
> IOException {
>         log.debug("Get scorer.");
>         return new TopDocScorer(this, 
> context.reader().searchNearestVectors(field, vector, topK, fanout));
>     }
>
> whereas fanout is of type "int"
>
> I have now updated Lucene source and rebuilt 9.0.0-SNAPSHOT and get various 
> compile errors.
>
> I assume VectorField got renamed to KnnVectorField, right?
>
> Does somebody maybe have some sample code how Vector search is being 
> implemented with the most recent Lucene code?
>
> Thanks
>
> Michael
>
>
>

-- 
- Vigya

Reply via email to