@@ -820,6 +820,49 @@ impl Index {
820
820
. await
821
821
}
822
822
823
+ /// Get [embedders](https://www.meilisearch.com/docs/learn/experimental/vector_search) of the [Index].
824
+ ///
825
+ /// ```
826
+ /// # use std::collections::HashMap;
827
+ /// # use std::string::String;
828
+ /// use meilisearch_sdk::{client::*, CustomEmbedderSettings, Embedder, ExperimentalFeatures, indexes::*, Settings};
829
+ /// #
830
+ /// # let MEILISEARCH_URL = option_env!("MEILISEARCH_URL").unwrap_or("http://localhost:7700");
831
+ /// # let MEILISEARCH_API_KEY = option_env!("MEILISEARCH_API_KEY").unwrap_or("masterKey");
832
+ /// #
833
+ /// # futures::executor::block_on(async move {
834
+ /// let client = Client::new(MEILISEARCH_URL, Some(MEILISEARCH_API_KEY));
835
+ /// # client.create_index("get_embedders", None).await.unwrap().wait_for_completion(&client, None, None).await.unwrap();
836
+ /// let index = client.index("get_embedders");
837
+ ///
838
+ /// # let mut features = ExperimentalFeatures::new(&client);
839
+ /// # features.set_vector_store(true);
840
+ /// # let res = features.update().await.unwrap();
841
+ /// #
842
+ /// # let t=index.set_settings(&Settings{
843
+ /// # embedders:Some(HashMap::from([(String::from("default"),Embedder::UserProvided(CustomEmbedderSettings{dimensions:1}))])),
844
+ /// # ..Settings::default()
845
+ /// # }).await.unwrap();
846
+ /// # t.wait_for_completion(&client, None, None).await.unwrap();
847
+ /// let embedders = index.get_embedders().await.unwrap();
848
+ /// # index.delete().await.unwrap().wait_for_completion(&client, None, None).await.unwrap();
849
+ /// # });
850
+ /// ```
851
+ #[ cfg( feature = "experimental-vector-search" ) ]
852
+ pub async fn get_embedders ( & self ) -> Result < HashMap < String , Embedder > , Error > {
853
+ request :: < ( ) , ( ) , Option < HashMap < String , Embedder > > > (
854
+ & format ! (
855
+ "{}/indexes/{}/settings/embedders" ,
856
+ self . client. host, self . uid
857
+ ) ,
858
+ self . client . get_api_key ( ) ,
859
+ Method :: Get { query : ( ) } ,
860
+ 200 ,
861
+ )
862
+ . await
863
+ . map ( |r|r. unwrap_or_default ( ) )
864
+ }
865
+
823
866
/// Update [settings](../settings/struct.Settings) of the [Index].
824
867
///
825
868
/// Updates in the settings are partial. This means that any parameters corresponding to a `None` value will be left unchanged.
@@ -1847,6 +1890,39 @@ impl Index {
1847
1890
)
1848
1891
. await
1849
1892
}
1893
+
1894
+ /// Reset [embedders](https://www.meilisearch.com/docs/learn/experimental/vector_search) of the [Index].
1895
+ ///
1896
+ /// # Example
1897
+ ///
1898
+ /// ```
1899
+ /// # use meilisearch_sdk::{client::*, indexes::*, settings::Settings};
1900
+ /// #
1901
+ /// # let MEILISEARCH_URL = option_env!("MEILISEARCH_URL").unwrap_or("http://localhost:7700");
1902
+ /// # let MEILISEARCH_API_KEY = option_env!("MEILISEARCH_API_KEY").unwrap_or("masterKey");
1903
+ /// #
1904
+ /// # futures::executor::block_on(async move {
1905
+ /// # let client = Client::new(MEILISEARCH_URL, Some(MEILISEARCH_API_KEY));
1906
+ /// # client.create_index("reset_embedders", None).await.unwrap().wait_for_completion(&client, None, None).await.unwrap();
1907
+ /// let mut index = client.index("reset_embedders");
1908
+ ///
1909
+ /// let task = index.reset_embedders().await.unwrap();
1910
+ /// # index.delete().await.unwrap().wait_for_completion(&client, None, None).await.unwrap();
1911
+ /// # });
1912
+ /// ```
1913
+ #[ cfg( feature = "experimental-vector-search" ) ]
1914
+ pub async fn reset_embedders ( & self ) -> Result < TaskInfo , Error > {
1915
+ request :: < ( ) , ( ) , TaskInfo > (
1916
+ & format ! (
1917
+ "{}/indexes/{}/settings/embedders" ,
1918
+ self . client. host, self . uid
1919
+ ) ,
1920
+ self . client . get_api_key ( ) ,
1921
+ Method :: Delete { query : ( ) } ,
1922
+ 202 ,
1923
+ )
1924
+ . await
1925
+ }
1850
1926
}
1851
1927
1852
1928
#[ cfg( test) ]
@@ -1908,6 +1984,24 @@ mod tests {
1908
1984
assert_eq ! ( faceting, res) ;
1909
1985
}
1910
1986
1987
+
1988
+ #[ cfg( feature = "experimental-vector-search" ) ]
1989
+ #[ meilisearch_test]
1990
+ async fn test_reset_embedders ( client : Client , index : Index ) {
1991
+ let features = crate :: ExperimentalFeatures :: new ( & client)
1992
+ . set_vector_store ( true )
1993
+ . update ( )
1994
+ . await
1995
+ . expect ( "could not enable the vector store" ) ;
1996
+ assert_eq ! ( features. vector_store, true ) ;
1997
+ let task_info = index. reset_embedders ( ) . await . unwrap ( ) ;
1998
+ client. wait_for_task ( task_info, None , None ) . await . unwrap ( ) ;
1999
+
2000
+ let res = index. get_embedders ( ) . await . unwrap ( ) ;
2001
+
2002
+ assert_eq ! ( HashMap :: new( ) , res) ;
2003
+ }
2004
+
1911
2005
#[ meilisearch_test]
1912
2006
async fn test_get_dictionary ( index : Index ) {
1913
2007
let dictionary: Vec < String > = vec ! [ ] ;
@@ -2084,6 +2178,28 @@ mod tests {
2084
2178
assert_eq ! ( expected, res) ;
2085
2179
}
2086
2180
2181
+ #[ cfg( feature = "experimental-vector-search" ) ]
2182
+ #[ meilisearch_test]
2183
+ async fn test_set_embedding_settings ( client : Client , index : Index ) {
2184
+ let features = crate :: ExperimentalFeatures :: new ( & client)
2185
+ . set_vector_store ( true )
2186
+ . update ( )
2187
+ . await
2188
+ . expect ( "could not enable the vector store" ) ;
2189
+ assert_eq ! ( features. vector_store, true ) ;
2190
+
2191
+ let custom_embedder =Embedder :: UserProvided ( CustomEmbedderSettings { dimensions : 2 } ) ;
2192
+ let embeddings = HashMap :: from ( [ ( "default" . into ( ) , custom_embedder) ] ) ;
2193
+ let settings = Settings :: new ( ) . with_embedders ( embeddings. clone ( ) ) ;
2194
+
2195
+ let task_info = index. set_settings ( & settings) . await . unwrap ( ) ;
2196
+ client. wait_for_task ( task_info, None , None ) . await . unwrap ( ) ;
2197
+
2198
+ let res = index. get_embedders ( ) . await . unwrap ( ) ;
2199
+
2200
+ assert_eq ! ( embeddings, res) ;
2201
+ }
2202
+
2087
2203
#[ meilisearch_test]
2088
2204
async fn test_reset_proximity_precision ( index : Index ) {
2089
2205
let expected = "byWord" . to_string ( ) ;
0 commit comments