@@ -195,7 +195,7 @@ export type GetUserIdentityResponse = {
195195} ; 
196196
197197export  type  HashMap  =  { 
198-      [ key : string ] : boolean  |  number  |  string  |  SparseVector  |  null ; 
198+   [ key : string ] : boolean  |  number  |  string  |  SparseVector  |  null ; 
199199} ; 
200200
201201export  type  HeartbeatResponse  =  { 
@@ -244,6 +244,72 @@ export type IntValueType = {
244244    int_inverted_index ?: null  |  IntInvertedIndexType ; 
245245} ; 
246246
247+ /** 
248+  * Represents a field key in search queries. 
249+  * 
250+  * Used for both selecting fields to return and building filter expressions. 
251+  * Predefined keys access special fields, while custom keys access metadata. 
252+  * 
253+  * # Predefined Keys 
254+  * 
255+  * - `Key::Document` - Document text content (`#document`) 
256+  * - `Key::Embedding` - Vector embeddings (`#embedding`) 
257+  * - `Key::Metadata` - All metadata fields (`#metadata`) 
258+  * - `Key::Score` - Search scores (`#score`) 
259+  * 
260+  * # Custom Keys 
261+  * 
262+  * Use `Key::field()` or `Key::from()` to reference metadata fields: 
263+  * 
264+  * ``` 
265+  * use chroma_types::operator::Key; 
266+  * 
267+  * let key = Key::field("author"); 
268+  * let key = Key::from("title"); 
269+  * ``` 
270+  * 
271+  * # Examples 
272+  * 
273+  * ## Building filters 
274+  * 
275+  * ``` 
276+  * use chroma_types::operator::Key; 
277+  * 
278+  * // Equality 
279+  * let filter = Key::field("status").eq("published"); 
280+  * 
281+  * // Comparisons 
282+  * let filter = Key::field("year").gte(2020); 
283+  * let filter = Key::field("score").lt(0.9); 
284+  * 
285+  * // Set operations 
286+  * let filter = Key::field("category").is_in(vec!["tech", "science"]); 
287+  * let filter = Key::field("status").not_in(vec!["deleted", "archived"]); 
288+  * 
289+  * // Document content 
290+  * let filter = Key::Document.contains("machine learning"); 
291+  * let filter = Key::Document.regex(r"\bAPI\b"); 
292+  * 
293+  * // Combining filters 
294+  * let filter = Key::field("status").eq("published") 
295+  * & Key::field("year").gte(2020); 
296+  * ``` 
297+  * 
298+  * ## Selecting fields 
299+  * 
300+  * ``` 
301+  * use chroma_types::plan::SearchPayload; 
302+  * use chroma_types::operator::Key; 
303+  * 
304+  * let search = SearchPayload::default() 
305+  * .select([ 
306+  * Key::Document, 
307+  * Key::Score, 
308+  * Key::field("title"), 
309+  * Key::field("author"), 
310+  * ]); 
311+  * ``` 
312+  */ 
247313export  type  Key  =  'Document'  |  'Embedding'  |  'Metadata'  |  'Score'  |  { 
248314    MetadataField : string ; 
249315} ; 
0 commit comments