Hi Marcos
The indexing looks kind of
Document doc =new Document();
float[] vector = getEmbedding(text);
FieldType vectorFieldType = KnnVectorField.createFieldType(vector.length,
VectorSimilarityFunction.COSINE);
KnnVectorField vectorField =new KnnVectorField("my_vector_field", vector,
vectorFieldType);
doc.add(vectorField);
writer.addDocument(doc);
And the searching / retrieval looks kind of
float[] queryVector = getEmbedding(question)
int k =7;// INFO: The number of documents to find
Query query =new KnnVectorQuery("my_vector_field", queryVector, k);
IndexSearcher searcher =new IndexSearcher(indexReader);
TopDocs topDocs = searcher.search(query, k);
Also see
https://lucene.apache.org/core/9_5_0/demo/index.html#Embeddings
https://lucene.apache.org/core/9_5_0/demo/org/apache/lucene/demo/knn/package-summary.html
HTH
Michael
Am 02.03.23 um 10:25 schrieb marcos rebelo:
Hi all,
I'm willing to use Vector Search with Lucene.
I have vectors created for queries and documents outside Lucene.
I would like to upload the document vectors to a Lucene index, Then use
Lucene to filter the documents (like classical search) and rank the
remaining products with the Vectors.
For performance reasons I would like some fast KNN for the rankers.
I looked on Google and I didn't find any document with some code samples.
2 questions:
* Is this a correct design pattern?
* Is there a good article explaining how to do this with Lucene?
Best Regards
Marcos Rebelo