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