@@ -1149,6 +1149,48 @@ public void testVectorSearch() throws Exception {
11491149 assertThat (searchResult .getHits ().get (0 ).get ("title" ), is ("Escape Room" ));
11501150 }
11511151
1152+ /** Test vector search with retrieveVectors option */
1153+ @ Test
1154+ public void testVectorSearchWithRetrieveVectors () throws Exception {
1155+ String indexUid = "testVectorSearchWithRetrieveVectors" ;
1156+ Index index = client .index (indexUid );
1157+ HashMap <String , Embedder > embedders = new HashMap <>();
1158+ embedders .put (
1159+ "manual" , new Embedder ().setSource (EmbedderSource .USER_PROVIDED ).setDimensions (3 ));
1160+
1161+ Settings settings = new Settings ();
1162+ settings .setEmbedders (embedders );
1163+
1164+ index .updateSettings (settings );
1165+
1166+ TestData <Movie > testData = this .getTestData (VECTOR_MOVIES , Movie .class );
1167+ TaskInfo task = index .addDocuments (testData .getRaw ());
1168+
1169+ index .waitForTask (task .getTaskUid ());
1170+
1171+ SearchRequest searchRequest =
1172+ SearchRequest .builder ()
1173+ .vector (new Double [] {0.1 , 0.6 , 0.8 })
1174+ .hybrid (Hybrid .builder ().semanticRatio (0.5 ).embedder ("manual" ).build ())
1175+ .retrieveVectors (true )
1176+ .build ();
1177+
1178+ SearchResult searchResult = (SearchResult ) index .search (searchRequest );
1179+
1180+ assertThat (searchResult .getHits (), hasSize (5 ));
1181+ // The most similar document should be "Escape Room" since its vector [0.1, 0.6, 0.8]
1182+ assertThat (searchResult .getHits ().get (0 ).get ("id" ), is ("522681" ));
1183+ assertThat (searchResult .getHits ().get (0 ).get ("title" ), is ("Escape Room" ));
1184+
1185+ // Verify that vectors are returned in the response
1186+ Map <String , Object > escapeRoomHit = searchResult .getHits ().get (0 );
1187+ assertThat (escapeRoomHit .containsKey ("_vectors" ), is (true ));
1188+
1189+ @ SuppressWarnings ("unchecked" )
1190+ Map <String , Object > vectors = (Map <String , Object >) escapeRoomHit .get ("_vectors" );
1191+ assertThat (vectors .containsKey ("manual" ), is (true ));
1192+ }
1193+
11521194 /** Test Search with locales */
11531195 @ Test
11541196 public void testSearchWithLocales () throws Exception {
0 commit comments