PageSourceSearch

https://cookbook.chromadb.dev/core/

html chromadb.dev collected 2026-10-03 22:09:58 UTC 65,824 bytes, 3,192 lines download raw bytes

1
2<!doctype html>
3<html lang="en" class="no-js">
4  <head>
5    
6      <meta charset="utf-8">
7      <meta name="viewport" content="width=device-width,initial-scale=1">
8      
9        <meta name="description" content="Recipes and operational guides for building with Chroma.">
10      
11      
12      
13        <link rel="canonical" href="https://cookbook.chromadb.dev/core/">
14      
15      
16        <link rel="prev" href="..">
17      
18      
19        <link rel="next" href="api/">
20      
21      
22        
23      
24      
25      <link rel="icon" href="../favicon.ico">
26      <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
27    
28    
29      
30        <title>Chroma Core: Concepts and APIs - Chroma Cookbook</title>
31      
32    
33    
34      <link rel="stylesheet" href="../assets/stylesheets/main.484c7ddc.min.css">
35      
36        
37        <link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
38      
39      
40
41
42    
43    
44      
45    
46    
47      
48        
49        
50        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
51        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback">
52        <style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style>
53      
54    
55    
56      <link rel="stylesheet" href="../stylesheets/ethicalads.css">
57    
58      <link rel="stylesheet" href="../stylesheets/concepts-flow.css">
59    
60      <link rel="stylesheet" href="../stylesheets/custom.css">
61    
62      <link rel="stylesheet" href="../stylesheets/filter-builder.css">
63    
64    
64<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
64
65    
66      
67  
68
69
70  
71  
72
73<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config","G-FZFKK5FLEY"),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","G-FZFKK5FLEY",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=G-FZFKK5FLEY",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
73
74  
75    
75<script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script>
75
76  
77
78    
79    
80  
81  
81<script async src="https://media.ethicalads.io/media/client/ethicalads.min.js"></script>
81
82
83  </head>
84  
85  
86    
87    
88      
89    
90    
91    
92    
93    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
94  
95    
96    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
97    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
98    <label class="md-overlay" for="__drawer"></label>
99    <div data-md-component="skip">
100      
101        
102        <a href="#chroma-core-concepts-and-apis" class="md-skip">
103          Skip to content
104        </a>
105      
106    </div>
107    <div data-md-component="announce">
108      
109    </div>
110    
111    
112      
113
114  
115
116<header class="md-header md-header--shadow" data-md-component="header">
117  <nav class="md-header__inner md-grid" aria-label="Header">
118    <a href="/" title="Chroma Cookbook" class="md-header__button md-logo" aria-label="Chroma Cookbook" data-md-component="logo">
119      
120  <img src="../assets/images/logo.png" alt="logo">
121
122    </a>
123    <label class="md-header__button md-icon" for="__drawer">
124      
125      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
126    </label>
127    <div class="md-header__title" data-md-component="header-title">
128      <div class="md-header__ellipsis">
129        <div class="md-header__topic">
130          <span class="md-ellipsis">
131            Chroma Cookbook
132          </span>
133        </div>
134        <div class="md-header__topic" data-md-component="header-topic">
135          <span class="md-ellipsis">
136            
137              Chroma Core: Concepts and APIs
138            
139          </span>
140        </div>
141      </div>
142    </div>
143    
144      
145        <form class="md-header__option" data-md-component="palette">
146  
147    
148    
149    
150    <input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo"  aria-label="Switch to light mode"  type="radio" name="__palette" id="__palette_0">
151    
152      <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
153        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg>
154      </label>
155    
156  
157    
158    
159    
160    <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="indigo"  aria-label="Switch to dark mode"  type="radio" name="__palette" id="__palette_1">
161    
162      <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
163        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
164      </label>
165    
166  
167    
168    
169    
170    <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="indigo"  aria-label="Switch to system preference"  type="radio" name="__palette" id="__palette_2">
171    
172      <label class="md-header__button md-icon" title="Switch to system preference" for="__palette_0" hidden>
173        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.3
1736 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
174      </label>
175    
176  
177</form>
178      
179    
180    
181      
181<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
181
182    
183    
184    
185      
186      
187        <label class="md-header__button md-icon" for="__search">
188          
189          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
190        </label>
191        <div class="md-search" data-md-component="search" role="dialog">
192  <label class="md-search__overlay" for="__search"></label>
193  <div class="md-search__inner" role="search">
194    <form class="md-search__form" name="search">
195      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
196      <label class="md-search__icon md-icon" for="__search">
197        
198        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
199        
200        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
201      </label>
202      <nav class="md-search__options" aria-label="Search">
203        
204        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
205          
206          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
207        </button>
208      </nav>
209      
210    </form>
211    <div class="md-search__output">
212      <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
213        <div class="md-search-result" data-md-component="search-result">
214          <div class="md-search-result__meta">
215            Initializing search
216          </div>
217          <ol class="md-search-result__list" role="presentation"></ol>
218        </div>
219      </div>
220    </div>
221  </div>
222</div>
223      
224    
225    
226      <div class="md-header__source">
227        <a href="https://github.com/amikos-tech/chroma-cookbook" title="Go to repository" class="md-source" data-md-component="source">
228  <div class="md-source__icon md-icon">
229    
230    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
231  </div>
232  <div class="md-source__repository">
233    GitHub
234  </div>
235</a>
236      </div>
237    
238  </nav>
239  
240</header>
241    
242    <div class="md-container" data-md-component="container">
243      
244  
245  <div class="md-grid mdx-ethicalads-container">
246    <div
247      id="cookbook-stickybox"
248      class="raised"
249      data-ea-publisher="chromadbdev"
250      data-ea-type="image"
251      data-ea-style="stickybox"
252      data-ea-placement-bottom="56px"
253    ></div>
254  </div>
255
256      
257        
258          
259        
260      
261      <main class="md-main" data-md-component="main">
262        <div class="md-main__inner md-grid">
263          
264            
265              
266              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
267                <div class="md-sidebar__scrollwrap">
268                  <div class="md-sidebar__inner">
269                    
270
271
272
273<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
274  <label class="md-nav__title" for="__drawer">
275    <a href="/" title="Chroma Cookbook" class="md-nav__button md-logo" aria-label="Chroma Cookbook" data-md-component="logo">
276      
277  <img src="../assets/images/logo.png" alt="logo">
278
279    </a>
280    Chroma Cookbook
281  </label>
282  
283    <div class="md-nav__source">
284      <a href="https://github.com/amikos-tech/chroma-cookbook" title="Go to repository" class="md-source" data-md-component="source">
285  <div class="md-source__icon md-icon">
286    
287    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
288  </div>
289  <div class="md-source__repository">
290    GitHub
291  </div>
292</a>
293    </div>
294  
295  <ul class="md-nav__list" data-md-scrollfix>
296    
297      
298      
299  
300  
301  
302  
303    <li class="md-nav__item">
304      <a href=".." class="md-nav__link">
305        
306  
307  
308  <span class="md-ellipsis">
309    
310  
311    Home
312  
313
314    
315  </span>
316  
317  
318
319      </a>
320    </li>
321  
322
323    
324      
325      
326  
327  
328    
329  
330  
331  
332    
333    
334      
335        
336          
337        
338      
339        
340      
341        
342      
343        
344      
345        
346      
347        
348      
349        
350      
351        
352      
353        
354      
355        
356      
357        
358      
359        
360      
361        
362      
363        
364      
365    
366    
367    
368    
369    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
370      
371        
372        
373        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
374        
375          
376          <div class="md-nav__link md-nav__container">
377            <a href="./" class="md-nav__link md-nav__link--active">
378              
379  
380  
381  <span class="md-ellipsis">
382    
383  
384    Core
385  
386
387    
388  </span>
389  
390  
391
392            </a>
393            
394              
395              <label class="md-nav__link md-nav__link--active" for="__nav_2" id="__nav_2_label" tabindex="0">
396                <span class="md-nav__icon md-icon"></span>
397              </label>
398            
399          </div>
400        
401        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
402          <label class="md-nav__title" for="__nav_2">
403            <span class="md-nav__icon md-icon"></span>
404            
405  
406    Core
407  
408
409          </label>
410          <ul class="md-nav__list" data-md-scrollfix>
411            
412              
413            
414              
415                
416  
417  
418  
419  
420    <li class="md-nav__item">
421      <a href="api/" class="md-nav__link">
422        
423  
424  
425  <span class="md-ellipsis">
426    
427  
428    Chroma API
429  
430
431    
432  </span>
433  
434  
435
436      </a>
437    </li>
438  
439
440              
441            
442              
443                
444  
445  
446  
447  
448    <li class="md-nav__item">
449      <a href="clients/" class="md-nav__link">
450        
451  
452  
453  <span class="md-ellipsis">
454    
455  
456    Chroma Clients
457  
458
459    
460  </span>
461  
462  
463
464      </a>
465    </li>
466  
467
468              
469            
470              
471                
472  
473  
474  
475  
476    <li class="md-nav__item">
477      <a href="collections/" class="md-nav__link">
478        
479  
480  
481  <span class="md-ellipsis">
482    
483  
484    Collections
485  
486
487    
488  </span>
489  
490  
491
492      </a>
493    </li>
494  
495
496              
497            
498              
499                
500  
501  
502  
503  
504    <li class="md-nav__item">
505      <a href="concepts/" class="md-nav__link">
506        
507  
508  
509  <span class="md-ellipsis">
510    
511  
512    Concepts
513  
514
515    
516  </span>
517  
518  
519
520      </a>
521    </li>
522  
523
524              
525            
526              
527                
528  
529  
530  
531  
532    <li class="md-nav__item">
533      <a href="configuration/" class="md-nav__link">
534        
535  
536  
537  <span class="md-ellipsis">
538    
539  
540    Configuration
541  
542
543    
544  </span>
545  
546  
547
548      </a>
549    </li>
550  
551
552              
553            
554              
555                
556  
557  
558  
559  
560    <li class="md-nav__item">
561      <a href="document-ids/" class="md-nav__link">
562        
563  
564  
565  <span class="md-ellipsis">
566    
567  
568    Document IDs
569  
570
571    
572  </span>
573  
574  
575
576      </a>
577    </li>
578  
579
580              
581            
582              
583                
584  
585  
586  
587  
588    <li class="md-nav__item">
589      <a href="filters/" class="md-nav__link">
590        
591  
592  
593  <span class="md-ellipsis">
594    
595  
596    Filters
597  
598
599    
600  </span>
601  
602  
603
604      </a>
605    </li>
606  
607
608              
609            
610              
611                
612  
613  
614  
615  
616    <li class="md-nav__item">
617      <a href="install/" class="md-nav__link">
618        
619  
620  
621  <span class="md-ellipsis">
622    
623  
624    Installation
625  
626
627    
628  </span>
629  
630  
631
632      </a>
633    </li>
634  
635
636              
637            
638              
639                
640  
641  
642  
643  
644    <li class="md-nav__item">
645      <a href="resources/" class="md-nav__link">
646        
647  
648  
649  <span class="md-ellipsis">
650    
651  
652    Resource Requirements
653  
654
655    
656  </span>
657  
658  
659
660      </a>
661    </li>
662  
663
664              
665            
666              
667                
668  
669  
670  
671  
672    <li class="md-nav__item">
673      <a href="storage-layout/" class="md-nav__link">
674        
675  
676  
677  <span class="md-ellipsis">
678    
679  
680    Storage Layout
681  
682
683    
684  </span>
685  
686  
687
688      </a>
689    </li>
690  
691
692              
693            
694              
695                
696  
697  
698  
699  
700    <li class="md-nav__item">
701      <a href="system_constraints/" class="md-nav__link">
702        
703  
704  
705  <span class="md-ellipsis">
706    
707  
708    Chroma System Constraints
709  
710
711    
712  </span>
713  
714  
715
716      </a>
717    </li>
718  
719
720              
721            
722              
723                
724  
725  
726  
727  
728    <li class="md-nav__item">
729      <a href="tenants-and-databases/" class="md-nav__link">
730        
731  
732  
733  <span class="md-ellipsis">
734    
735  
736    Tenants and Databases
737  
738
739    
740  </span>
741  
742  
743
744      </a>
745    </li>
746  
747
748              
749            
750              
751                
752  
753  
754  
755  
756    
757    
758      
759        
760      
761        
762      
763        
764      
765    
766    
767    
768    
769    <li class="md-nav__item md-nav__item--nested">
770      
771        
772        
773        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_14" >
774        
775          
776          <label class="md-nav__link" for="__nav_2_14" id="__nav_2_14_label" tabindex="0">
777            
778  
779  
780  <span class="md-ellipsis">
781    
782  
783    Advanced
784  
785
786    
787  </span>
788  
789  
790
791            <span class="md-nav__icon md-icon"></span>
792          </label>
793        
794        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_14_label" aria-expanded="false">
795          <label class="md-nav__title" for="__nav_2_14">
796            <span class="md-nav__icon md-icon"></span>
797            
798  
799    Advanced
800  
801
802          </label>
803          <ul class="md-nav__list" data-md-scrollfix>
804            
805              
806                
807  
808  
809  
810  
811    <li class="md-nav__item">
812      <a href="advanced/queries/" class="md-nav__link">
813        
814  
815  
816  <span class="md-ellipsis">
817    
818  
819    Chroma Queries
820  
821
822    
823  </span>
824  
825  
826
827      </a>
828    </li>
829  
830
831              
832            
833              
834                
835  
836  
837  
838  
839    <li class="md-nav__item">
840      <a href="advanced/wal-pruning/" class="md-nav__link">
841        
842  
843  
844  <span class="md-ellipsis">
845    
846  
847    Write-ahead Log (WAL) Pruning
848  
849
850    
851  </span>
852  
853  
854
855      </a>
856    </li>
857  
858
859              
860            
861              
862                
863  
864  
865  
866  
867    <li class="md-nav__item">
868      <a href="advanced/wal/" class="md-nav__link">
869        
870  
871  
872  <span class="md-ellipsis">
873    
874  
875    Write-ahead Log (WAL)
876  
877
878    
879  </span>
880  
881  
882
883      </a>
884    </li>
885  
886
887              
888            
889          </ul>
890        </nav>
891      
892    </li>
893  
894
895              
896            
897          </ul>
898        </nav>
899      
900    </li>
901  
902
903    
904      
905      
906  
907  
908  
909  
910    
911    
912      
913        
914      
915        
916      
917        
918      
919        
920      
921        
922      
923        
924      
925        
926      
927    
928    
929    
930    
931    <li class="md-nav__item md-nav__item--nested">
932      
933        
934        
935        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
936        
937          
938          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
939            
940  
941  
942  <span class="md-ellipsis">
943    
944  
945    Running
946  
947
948    
949  </span>
950  
951  
952
953            <span class="md-nav__icon md-icon"></span>
954          </label>
955        
956        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
957          <label class="md-nav__title" for="__nav_3">
958            <span class="md-nav__icon md-icon"></span>
959            
960  
961    Running
962  
963
964          </label>
965          <ul class="md-nav__list" data-md-scrollfix>
966            
967              
968                
969  
970  
971  
972  
973    <li class="md-nav__item">
974      <a href="../running/running-chroma/" class="md-nav__link">
975        
976  
977  
978  <span class="md-ellipsis">
979    
980  
981    Running Chroma
982  
983
984    
985  </span>
986  
987  
988
989      </a>
990    </li>
991  
992
993              
994            
995              
996                
997  
998  
999  
1000  
1001    <li class="md-nav__item">
1002      <a href="../running/deployment-patterns/" class="md-nav__link">
1003        
1004  
1005  
1006  <span class="md-ellipsis">
1007    
1008  
1009    Deployment Patterns
1010  
1011
1012    
1013  </span>
1014  
1015  
1016
1017      </a>
1018    </li>
1019  
1020
1021              
1022            
1023              
1024                
1025  
1026  
1027  
1028  
1029    <li class="md-nav__item">
1030      <a href="../running/road-to-prod/" class="md-nav__link">
1031        
1032  
1033  
1034  <span class="md-ellipsis">
1035    
1036  
1037    Road To Production
1038  
1039
1040    
1041  </span>
1042  
1043  
1044
1045      </a>
1046    </li>
1047  
1048
1049              
1050            
1051              
1052                
1053  
1054  
1055  
1056  
1057    <li class="md-nav__item">
1058      <a href="../running/health-checks/" class="md-nav__link">
1059        
1060  
1061  
1062  <span class="md-ellipsis">
1063    
1064  
1065    Health Checks
1066  
1067
1068    
1069  </span>
1070  
1071  
1072
1073      </a>
1074    </li>
1075  
1076
1077              
1078            
1079              
1080                
1081  
1082  
1083  
1084  
1085    <li class="md-nav__item">
1086      <a href="../running/performance-tips/" class="md-nav__link">
1087        
1088  
1089  
1090  <span class="md-ellipsis">
1091    
1092  
1093    Performance Tips
1094  
1095
1096    
1097  </span>
1098  
1099  
1100
1101      </a>
1102    </li>
1103  
1104
1105              
1106            
1107              
1108                
1109  
1110  
1111  
1112  
1113    <li class="md-nav__item">
1114      <a href="../running/maintenance/" class="md-nav__link">
1115        
1116  
1117  
1118  <span class="md-ellipsis">
1119    
1120  
1121    Maintenance
1122  
1123
1124    
1125  </span>
1126  
1127  
1128
1129      </a>
1130    </li>
1131  
1132
1133              
1134            
1135              
1136                
1137  
1138  
1139  
1140  
1141    <li class="md-nav__item">
1142      <a href="../running/systemd-service/" class="md-nav__link">
1143        
1144  
1145  
1146  <span class="md-ellipsis">
1147    
1148  
1149    Systemd service
1150  
1151
1152    
1153  </span>
1154  
1155  
1156
1157      </a>
1158    </li>
1159  
1160
1161              
1162            
1163          </ul>
1164        </nav>
1165      
1166    </li>
1167  
1168
1169    
1170      
1171      
1172  
1173  
1174  
1175  
1176    
1177    
1178      
1179        
1180      
1181        
1182      
1183        
1184      
1185        
1186      
1187    
1188    
1189    
1190    
1191    <li class="md-nav__item md-nav__item--nested">
1192      
1193        
1194        
1195        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
1196        
1197          
1198          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
1199            
1200  
1201  
1202  <span class="md-ellipsis">
1203    
1204  
1205    Embedding
1206  
1207
1208    
1209  </span>
1210  
1211  
1212
1213            <span class="md-nav__icon md-icon"></span>
1214          </label>
1215        
1216        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
1217          <label class="md-nav__title" for="__nav_4">
1218            <span class="md-nav__icon md-icon"></span>
1219            
1220  
1221    Embedding
1222  
1223
1224          </label>
1225          <ul class="md-nav__list" data-md-scrollfix>
1226            
1227              
1228                
1229  
1230  
1231  
1232  
1233    <li class="md-nav__item">
1234      <a href="../embeddings/bring-your-own-embeddings/" class="md-nav__link">
1235        
1236  
1237  
1238  <span class="md-ellipsis">
1239    
1240  
1241    Creating your own embedding function
1242  
1243
1244    
1245  </span>
1246  
1247  
1248
1249      </a>
1250    </li>
1251  
1252
1253              
1254            
1255              
1256                
1257  
1258  
1259  
1260  
1261    <li class="md-nav__item">
1262      <a href="../embeddings/cross-encoders/" class="md-nav__link">
1263        
1264  
1265  
1266  <span class="md-ellipsis">
1267    
1268  
1269    Cross-Encoders Reranking
1270  
1271
1272    
1273  </span>
1274  
1275  
1276
1277      </a>
1278    </li>
1279  
1280
1281              
1282            
1283              
1284                
1285  
1286  
1287  
1288  
1289    <li class="md-nav__item">
1290      <a href="../embeddings/embedding-models/" class="md-nav__link">
1291        
1292  
1293  
1294  <span class="md-ellipsis">
1295    
1296  
1297    Embedding Models
1298  
1299
1300    
1301  </span>
1302  
1303  
1304
1305      </a>
1306    </li>
1307  
1308
1309              
1310            
1311              
1312                
1313  
1314  
1315  
1316  
1317    <li class="md-nav__item">
1318      <a href="../embeddings/gpu-support/" class="md-nav__link">
1319        
1320  
1321  
1322  <span class="md-ellipsis">
1323    
1324  
1325    Embedding Functions GPU Support
1326  
1327
1328    
1329  </span>
1330  
1331  
1332
1333      </a>
1334    </li>
1335  
1336
1337              
1338            
1339          </ul>
1340        </nav>
1341      
1342    </li>
1343  
1344
1345    
1346      
1347      
1348  
1349  
1350  
1351  
1352    
1353    
1354      
1355        
1356      
1357        
1358      
1359        
1360      
1361    
1362    
1363    
1364    
1365    <li class="md-nav__item md-nav__item--nested">
1366      
1367        
1368        
1369        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
1370        
1371          
1372          <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
1373            
1374  
1375  
1376  <span class="md-ellipsis">
1377    
1378  
1379    Integrations
1380  
1381
1382    
1383  </span>
1384  
1385  
1386
1387            <span class="md-nav__icon md-icon"></span>
1388          </label>
1389        
1390        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
1391          <label class="md-nav__title" for="__nav_5">
1392            <span class="md-nav__icon md-icon"></span>
1393            
1394  
1395    Integrations
1396  
1397
1398          </label>
1399          <ul class="md-nav__list" data-md-scrollfix>
1400            
1401              
1402                
1403  
1404  
1405  
1406  
1407    
1408    
1409      
1410        
1411          
1412        
1413      
1414        
1415      
1416        
1417      
1418    
1419    
1420    
1421    
1422    <li class="md-nav__item md-nav__item--nested">
1423      
1424        
1425        
1426        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
1427        
1428          
1429          <div class="md-nav__link md-nav__container">
1430            <a href="../integrations/langchain/" class="md-nav__link ">
1431              
1432  
1433  
1434  <span class="md-ellipsis">
1435    
1436  
1437    Langchain
1438  
1439
1440    
1441  </span>
1442  
1443  
1444
1445            </a>
1446            
1447              
1448              <label class="md-nav__link " for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
1449                <span class="md-nav__icon md-icon"></span>
1450              </label>
1451            
1452          </div>
1453        
1454        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
1455          <label class="md-nav__title" for="__nav_5_1">
1456            <span class="md-nav__icon md-icon"></span>
1457            
1458  
1459    Langchain
1460  
1461
1462          </label>
1463          <ul class="md-nav__list" data-md-scrollfix>
1464            
1465              
1466            
1467              
1468                
1469  
1470  
1471  
1472  
1473    <li class="md-nav__item">
1474      <a href="../integrations/langchain/embeddings/" class="md-nav__link">
1475        
1476  
1477  
1478  <span class="md-ellipsis">
1479    
1480  
1481    LangChain Embeddings
1482  
1483
1484    
1485  </span>
1486  
1487  
1488
1489      </a>
1490    </li>
1491  
1492
1493              
1494            
1495              
1496                
1497  
1498  
1499  
1500  
1501    <li class="md-nav__item">
1502      <a href="../integrations/langchain/retrievers/" class="md-nav__link">
1503        
1504  
1505  
1506  <span class="md-ellipsis">
1507    
1508  
1509    🦜⛓️ Langchain Retriever
1510  
1511
1512    
1513  </span>
1514  
1515  
1516
1517      </a>
1518    </li>
1519  
1520
1521              
1522            
1523          </ul>
1524        </nav>
1525      
1526    </li>
1527  
1528
1529              
1530            
1531              
1532                
1533  
1534  
1535  
1536  
1537    
1538    
1539      
1540        
1541          
1542        
1543      
1544        
1545      
1546    
1547    
1548    
1549    
1550    <li class="md-nav__item md-nav__item--nested">
1551      
1552        
1553        
1554        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
1555        
1556          
1557          <div class="md-nav__link md-nav__container">
1558            <a href="../integrations/llamaindex/" class="md-nav__link ">
1559              
1560  
1561  
1562  <span class="md-ellipsis">
1563    
1564  
1565    Llamaindex
1566  
1567
1568    
1569  </span>
1570  
1571  
1572
1573            </a>
1574            
1575              
1576              <label class="md-nav__link " for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
1577                <span class="md-nav__icon md-icon"></span>
1578              </label>
1579            
1580          </div>
1581        
1582        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
1583          <label class="md-nav__title" for="__nav_5_2">
1584            <span class="md-nav__icon md-icon"></span>
1585            
1586  
1587    Llamaindex
1588  
1589
1590          </label>
1591          <ul class="md-nav__list" data-md-scrollfix>
1592            
1593              
1594            
1595              
1596                
1597  
1598  
1599  
1600  
1601    <li class="md-nav__item">
1602      <a href="../integrations/llamaindex/embeddings/" class="md-nav__link">
1603        
1604  
1605  
1606  <span class="md-ellipsis">
1607    
1608  
1609    LlamaIndex Embeddings
1610  
1611
1612    
1613  </span>
1614  
1615  
1616
1617      </a>
1618    </li>
1619  
1620
1621              
1622            
1623          </ul>
1624        </nav>
1625      
1626    </li>
1627  
1628
1629              
1630            
1631              
1632                
1633  
1634  
1635  
1636  
1637    
1638    
1639      
1640        
1641          
1642        
1643      
1644        
1645      
1646    
1647    
1648    
1649    
1650    <li class="md-nav__item md-nav__item--nested">
1651      
1652        
1653        
1654        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_3" >
1655        
1656          
1657          <div class="md-nav__link md-nav__container">
1658            <a href="../integrations/ollama/" class="md-nav__link ">
1659              
1660  
1661  
1662  <span class="md-ellipsis">
1663    
1664  
1665    Ollama
1666  
1667
1668    
1669  </span>
1670  
1671  
1672
1673            </a>
1674            
1675              
1676              <label class="md-nav__link " for="__nav_5_3" id="__nav_5_3_label" tabindex="0">
1677                <span class="md-nav__icon md-icon"></span>
1678              </label>
1679            
1680          </div>
1681        
1682        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_3_label" aria-expanded="false">
1683          <label class="md-nav__title" for="__nav_5_3">
1684            <span class="md-nav__icon md-icon"></span>
1685            
1686  
1687    Ollama
1688  
1689
1690          </label>
1691          <ul class="md-nav__list" data-md-scrollfix>
1692            
1693              
1694            
1695              
1696                
1697  
1698  
1699  
1700  
1701    <li class="md-nav__item">
1702      <a href="../integrations/ollama/embeddings/" class="md-nav__link">
1703        
1704  
1705  
1706  <span class="md-ellipsis">
1707    
1708  
1709    Ollama
1710  
1711
1712    
1713  </span>
1714  
1715  
1716
1717      </a>
1718    </li>
1719  
1720
1721              
1722            
1723          </ul>
1724        </nav>
1725      
1726    </li>
1727  
1728
1729              
1730            
1731          </ul>
1732        </nav>
1733      
1734    </li>
1735  
1736
1737    
1738      
1739      
1740  
1741  
1742  
1743  
1744    
1745    
1746      
1747        
1748      
1749        
1750      
1751        
1752      
1753        
1754      
1755        
1756      
1757        
1758      
1759        
1760      
1761        
1762      
1763        
1764      
1765        
1766      
1767        
1768      
1769        
1770      
1771        
1772      
1773    
1774    
1775    
1776    
1777    <li class="md-nav__item md-nav__item--nested">
1778      
1779        
1780        
1781        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
1782        
1783          
1784          <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
1785            
1786  
1787  
1788  <span class="md-ellipsis">
1789    
1790  
1791    Strategies
1792  
1793
1794    
1795  </span>
1796  
1797  
1798
1799            <span class="md-nav__icon md-icon"></span>
1800          </label>
1801        
1802        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
1803          <label class="md-nav__title" for="__nav_6">
1804            <span class="md-nav__icon md-icon"></span>
1805            
1806  
1807    Strategies
1808  
1809
1810          </label>
1811          <ul class="md-nav__list" data-md-scrollfix>
1812            
1813              
1814                
1815  
1816  
1817  
1818  
1819    <li class="md-nav__item">
1820      <a href="../strategies/backup/" class="md-nav__link">
1821        
1822  
1823  
1824  <span class="md-ellipsis">
1825    
1826  
1827    ChromaDB Backups
1828  
1829
1830    
1831  </span>
1832  
1833  
1834
1835      </a>
1836    </li>
1837  
1838
1839              
1840            
1841              
1842                
1843  
1844  
1845  
1846  
1847    <li class="md-nav__item">
1848      <a href="../strategies/batching/" class="md-nav__link">
1849        
1850  
1851  
1852  <span class="md-ellipsis">
1853    
1854  
1855    Batching
1856  
1857
1858    
1859  </span>
1860  
1861  
1862
1863      </a>
1864    </li>
1865  
1866
1867              
1868            
1869              
1870                
1871  
1872  
1873  
1874  
1875    <li class="md-nav__item">
1876      <a href="../strategies/cors/" class="md-nav__link">
1877        
1878  
1879  
1880  <span class="md-ellipsis">
1881    
1882  
1883    CORS Configuration for Browser-Based Access
1884  
1885
1886    
1887  </span>
1888  
1889  
1890
1891      </a>
1892    </li>
1893  
1894
1895              
1896            
1897              
1898                
1899  
1900  
1901  
1902  
1903    <li class="md-nav__item">
1904      <a href="../strategies/go-local-markdown-cli/" class="md-nav__link">
1905        
1906  
1907  
1908  <span class="md-ellipsis">
1909    
1910  
1911    Go Local Markdown CLI with PersistentClient
1912  
1913
1914    
1915  </span>
1916  
1917  
1918
1919      </a>
1920    </li>
1921  
1922
1923              
1924            
1925              
1926                
1927  
1928  
1929  
1930  
1931    <li class="md-nav__item">
1932      <a href="../strategies/image-search/" class="md-nav__link">
1933        
1934  
1935  
1936  <span class="md-ellipsis">
1937    
1938  
1939    Image Search (Multimodal Retrieval)
1940  
1941
1942    
1943  </span>
1944  
1945  
1946
1947      </a>
1948    </li>
1949  
1950
1951              
1952            
1953              
1954                
1955  
1956  
1957  
1958  
1959    <li class="md-nav__item">
1960      <a href="../strategies/keyword-search/" class="md-nav__link">
1961        
1962  
1963  
1964  <span class="md-ellipsis">
1965    
1966  
1967    Keyword Search
1968  
1969
1970    
1971  </span>
1972  
1973  
1974
1975      </a>
1976    </li>
1977  
1978
1979              
1980            
1981              
1982                
1983  
1984  
1985  
1986  
1987    <li class="md-nav__item">
1988      <a href="../strategies/metadata-schema-validation/" class="md-nav__link">
1989        
1990  
1991  
1992  <span class="md-ellipsis">
1993    
1994  
1995    Metadata Schema Validation (Application Layer)
1996  
1997
1998    
1999  </span>
2000  
2001  
2002
2003      </a>
2004    </li>
2005  
2006
2007              
2008            
2009              
2010                
2011  
2012  
2013  
2014  
2015    <li class="md-nav__item">
2016      <a href="../strategies/memory-management/" class="md-nav__link">
2017        
2018  
2019  
2020  <span class="md-ellipsis">
2021    
2022  
2023    Memory Management
2024  
2025
2026    
2027  </span>
2028  
2029  
2030
2031      </a>
2032    </li>
2033  
2034
2035              
2036            
2037              
2038                
2039  
2040  
2041  
2042  
2043    <li class="md-nav__item">
2044      <a href="../strategies/multi-category-filters/" class="md-nav__link">
2045        
2046  
2047  
2048  <span class="md-ellipsis">
2049    
2050  
2051    Multi-Category/Tag Filters
2052  
2053
2054    
2055  </span>
2056  
2057  
2058
2059      </a>
2060    </li>
2061  
2062
2063              
2064            
2065              
2066                
2067  
2068  
2069  
2070  
2071    <li class="md-nav__item">
2072      <a href="../strategies/privacy/" class="md-nav__link">
2073        
2074  
2075  
2076  <span class="md-ellipsis">
2077    
2078  
2079    Privacy Strategies
2080  
2081
2082    
2083  </span>
2084  
2085  
2086
2087      </a>
2088    </li>
2089  
2090
2091              
2092            
2093              
2094                
2095  
2096  
2097  
2098  
2099    <li class="md-nav__item">
2100      <a href="../strategies/rebuilding/" class="md-nav__link">
2101        
2102  
2103  
2104  <span class="md-ellipsis">
2105    
2106  
2107    Rebuilding Chroma DB
2108  
2109
2110    
2111  </span>
2112  
2113  
2114
2115      </a>
2116    </li>
2117  
2118
2119              
2120            
2121              
2122                
2123  
2124  
2125  
2126  
2127    <li class="md-nav__item">
2128      <a href="../strategies/time-based-queries/" class="md-nav__link">
2129        
2130  
2131  
2132  <span class="md-ellipsis">
2133    
2134  
2135    Time-based Queries
2136  
2137
2138    
2139  </span>
2140  
2141  
2142
2143      </a>
2144    </li>
2145  
2146
2147              
2148            
2149              
2150                
2151  
2152  
2153  
2154  
2155    
2156    
2157      
2158        
2159          
2160        
2161      
2162        
2163      
2164        
2165      
2166        
2167      
2168        
2169      
2170    
2171    
2172    
2173    
2174    <li class="md-nav__item md-nav__item--nested">
2175      
2176        
2177        
2178        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_13" >
2179        
2180          
2181          <div class="md-nav__link md-nav__container">
2182            <a href="../strategies/multi-tenancy/" class="md-nav__link ">
2183              
2184  
2185  
2186  <span class="md-ellipsis">
2187    
2188  
2189    Multi-Tenancy
2190  
2191
2192    
2193  </span>
2194  
2195  
2196
2197            </a>
2198            
2199              
2200              <label class="md-nav__link " for="__nav_6_13" id="__nav_6_13_label" tabindex="0">
2201                <span class="md-nav__icon md-icon"></span>
2202              </label>
2203            
2204          </div>
2205        
2206        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_13_label" aria-expanded="false">
2207          <label class="md-nav__title" for="__nav_6_13">
2208            <span class="md-nav__icon md-icon"></span>
2209            
2210  
2211    Multi-Tenancy
2212  
2213
2214          </label>
2215          <ul class="md-nav__list" data-md-scrollfix>
2216            
2217              
2218            
2219              
2220                
2221  
2222  
2223  
2224  
2225    <li class="md-nav__item">
2226      <a href="../strategies/multi-tenancy/authorization-model-impl-with-openfga/" class="md-nav__link">
2227        
2228  
2229  
2230  <span class="md-ellipsis">
2231    
2232  
2233    Implementing OpenFGA Authorization Model In Chroma
2234  
2235
2236    
2237  </span>
2238  
2239  
2240
2241      </a>
2242    </li>
2243  
2244
2245              
2246            
2247              
2248                
2249  
2250  
2251  
2252  
2253    <li class="md-nav__item">
2254      <a href="../strategies/multi-tenancy/authorization-model-with-openfga/" class="md-nav__link">
2255        
2256  
2257  
2258  <span class="md-ellipsis">
2259    
2260  
2261    Chroma Authorization Model with OpenFGA
2262  
2263
2264    
2265  </span>
2266  
2267  
2268
2269      </a>
2270    </li>
2271  
2272
2273              
2274            
2275              
2276                
2277  
2278  
2279  
2280  
2281    <li class="md-nav__item">
2282      <a href="../strategies/multi-tenancy/multi-user-basic-auth/" class="md-nav__link">
2283        
2284  
2285  
2286  <span class="md-ellipsis">
2287    
2288  
2289    Multi-User Basic Auth
2290  
2291
2292    
2293  </span>
2294  
2295  
2296
2297      </a>
2298    </li>
2299  
2300
2301              
2302            
2303              
2304                
2305  
2306  
2307  
2308  
2309    <li class="md-nav__item">
2310      <a href="../strategies/multi-tenancy/naive-multi-tenancy/" class="md-nav__link">
2311        
2312  
2313  
2314  <span class="md-ellipsis">
2315    
2316  
2317    Naive Multi-tenancy Strategies
2318  
2319
2320    
2321  </span>
2322  
2323  
2324
2325      </a>
2326    </li>
2327  
2328
2329              
2330            
2331          </ul>
2332        </nav>
2333      
2334    </li>
2335  
2336
2337              
2338            
2339          </ul>
2340        </nav>
2341      
2342    </li>
2343  
2344
2345    
2346      
2347      
2348  
2349  
2350  
2351  
2352    
2353    
2354      
2355        
2356          
2357        
2358      
2359        
2360      
2361        
2362      
2363        
2364      
2365        
2366      
2367    
2368    
2369    
2370    
2371    <li class="md-nav__item md-nav__item--nested">
2372      
2373        
2374        
2375        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
2376        
2377          
2378          <div class="md-nav__link md-nav__container">
2379            <a href="../security/" class="md-nav__link ">
2380              
2381  
2382  
2383  <span class="md-ellipsis">
2384    
2385  
2386    Security
2387  
2388
2389    
2390  </span>
2391  
2392  
2393
2394            </a>
2395            
2396              
2397              <label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="0">
2398                <span class="md-nav__icon md-icon"></span>
2399              </label>
2400            
2401          </div>
2402        
2403        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
2404          <label class="md-nav__title" for="__nav_7">
2405            <span class="md-nav__icon md-icon"></span>
2406            
2407  
2408    Security
2409  
2410
2411          </label>
2412          <ul class="md-nav__list" data-md-scrollfix>
2413            
2414              
2415            
2416              
2417                
2418  
2419  
2420  
2421  
2422    <li class="md-nav__item">
2423      <a href="../security/auth-1.0.x/" class="md-nav__link">
2424        
2425  
2426  
2427  <span class="md-ellipsis">
2428    
2429  
2430    Authentication in Chroma v1.0.x
2431  
2432
2433    
2434  </span>
2435  
2436  
2437
2438      </a>
2439    </li>
2440  
2441
2442              
2443            
2444              
2445                
2446  
2447  
2448  
2449  
2450    <li class="md-nav__item">
2451      <a href="../security/chroma-ssl-cert/" class="md-nav__link">
2452        
2453  
2454  
2455  <span class="md-ellipsis">
2456    
2457  
2458    SSL/TLS Certificates in Chroma
2459  
2460
2461    
2462  </span>
2463  
2464  
2465
2466      </a>
2467    </li>
2468  
2469
2470              
2471            
2472              
2473                
2474  
2475  
2476  
2477  
2478    <li class="md-nav__item">
2479      <a href="../security/legacy-auth/" class="md-nav__link">
2480        
2481  
2482  
2483  <span class="md-ellipsis">
2484    
2485  
2486    Chroma-native Auth (Legacy)
2487  
2488
2489    
2490  </span>
2491  
2492  
2493
2494      </a>
2495    </li>
2496  
2497
2498              
2499            
2500              
2501                
2502  
2503  
2504  
2505  
2506    <li class="md-nav__item">
2507      <a href="../security/ssl-proxies/" class="md-nav__link">
2508        
2509  
2510  
2511  <span class="md-ellipsis">
2512    
2513  
2514    SSL/TLS Proxy
2515  
2516
2517    
2518  </span>
2519  
2520  
2521
2522      </a>
2523    </li>
2524  
2525
2526              
2527            
2528          </ul>
2529        </nav>
2530      
2531    </li>
2532  
2533
2534    
2535      
2536      
2537  
2538  
2539  
2540  
2541    
2542    
2543      
2544        
2545      
2546    
2547    
2548    
2549    
2550    <li class="md-nav__item md-nav__item--nested">
2551      
2552        
2553        
2554        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
2555        
2556          
2557          <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
2558            
2559  
2560  
2561  <span class="md-ellipsis">
2562    
2563  
2564    Ecosystem
2565  
2566
2567    
2568  </span>
2569  
2570  
2571
2572            <span class="md-nav__icon md-icon"></span>
2573          </label>
2574        
2575        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
2576          <label class="md-nav__title" for="__nav_8">
2577            <span class="md-nav__icon md-icon"></span>
2578            
2579  
2580    Ecosystem
2581  
2582
2583          </label>
2584          <ul class="md-nav__list" data-md-scrollfix>
2585            
2586              
2587                
2588  
2589  
2590  
2591  
2592    <li class="md-nav__item">
2593      <a href="../ecosystem/clients/" class="md-nav__link">
2594        
2595  
2596  
2597  <span class="md-ellipsis">
2598    
2599  
2600    Chroma Ecosystem Clients
2601  
2602
2603    
2604  </span>
2605  
2606  
2607
2608      </a>
2609    </li>
2610  
2611
2612              
2613            
2614          </ul>
2615        </nav>
2616      
2617    </li>
2618  
2619
2620    
2621      
2622      
2623  
2624  
2625  
2626  
2627    
2628    
2629      
2630        
2631      
2632        
2633      
2634    
2635    
2636    
2637    
2638    <li class="md-nav__item md-nav__item--nested">
2639      
2640        
2641        
2642        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
2643        
2644          
2645          <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
2646            
2647  
2648  
2649  <span class="md-ellipsis">
2650    
2651  
2652    Contributing
2653  
2654
2655    
2656  </span>
2657  
2658  
2659
2660            <span class="md-nav__icon md-icon"></span>
2661          </label>
2662        
2663        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
2664          <label class="md-nav__title" for="__nav_9">
2665            <span class="md-nav__icon md-icon"></span>
2666            
2667  
2668    Contributing
2669  
2670
2671          </label>
2672          <ul class="md-nav__list" data-md-scrollfix>
2673            
2674              
2675                
2676  
2677  
2678  
2679  
2680    <li class="md-nav__item">
2681      <a href="../contributing/getting-started/" class="md-nav__link">
2682        
2683  
2684  
2685  <span class="md-ellipsis">
2686    
2687  
2688    Getting Started with Contributing to Chroma
2689  
2690
2691    
2692  </span>
2693  
2694  
2695
2696      </a>
2697    </li>
2698  
2699
2700              
2701            
2702              
2703                
2704  
2705  
2706  
2707  
2708    <li class="md-nav__item">
2709      <a href="../contributing/useful-shortcuts/" class="md-nav__link">
2710        
2711  
2712  
2713  <span class="md-ellipsis">
2714    
2715  
2716    Useful Shortcuts for Contributors
2717  
2718
2719    
2720  </span>
2721  
2722  
2723
2724      </a>
2725    </li>
2726  
2727
2728              
2729            
2730          </ul>
2731        </nav>
2732      
2733    </li>
2734  
2735
2736    
2737      
2738      
2739  
2740  
2741  
2742  
2743    
2744    
2745      
2746        
2747          
2748        
2749      
2750    
2751    
2752    
2753    
2754    <li class="md-nav__item md-nav__item--nested">
2755      
2756        
2757        
2758        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
2759        
2760          
2761          <div class="md-nav__link md-nav__container">
2762            <a href="../faq/" class="md-nav__link ">
2763              
2764  
2765  
2766  <span class="md-ellipsis">
2767    
2768  
2769    FAQ
2770  
2771
2772    
2773  </span>
2774  
2775  
2776
2777            </a>
2778            
2779          </div>
2780        
2781        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
2782          <label class="md-nav__title" for="__nav_10">
2783            <span class="md-nav__icon md-icon"></span>
2784            
2785  
2786    FAQ
2787  
2788
2789          </label>
2790          <ul class="md-nav__list" data-md-scrollfix>
2791            
2792              
2793            
2794          </ul>
2795        </nav>
2796      
2797    </li>
2798  
2799
2800    
2801  </ul>
2802</nav>
2803                  </div>
2804                </div>
2805              </div>
2806            
2807            
2808              
2809              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2810                <div class="md-sidebar__scrollwrap">
2811                  <div class="md-sidebar__inner">
2812                    
2813
2814  
2815
2816<nav class="md-nav md-nav--secondary" aria-label="On this page">
2817  
2818  
2819  
2820    
2821  
2822  
2823    <label class="md-nav__title" for="__toc">
2824      <span class="md-nav__icon md-icon"></span>
2825      On this page
2826    </label>
2827    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2828      
2829        <li class="md-nav__item">
2830  <a href="#recommended-learning-path" class="md-nav__link">
2831    <span class="md-ellipsis">
2832      
2833        Recommended Learning Path
2834      
2835    </span>
2836  </a>
2837  
2838</li>
2839      
2840        <li class="md-nav__item">
2841  <a href="#api-map" class="md-nav__link">
2842    <span class="md-ellipsis">
2843      
2844        API Map
2845      
2846    </span>
2847  </a>
2848  
2849    <nav class="md-nav" aria-label="API Map">
2850      <ul class="md-nav__list">
2851        
2852          <li class="md-nav__item">
2853  <a href="#client-level-apis" class="md-nav__link">
2854    <span class="md-ellipsis">
2855      
2856        Client-Level APIs
2857      
2858    </span>
2859  </a>
2860  
2861</li>
2862        
2863          <li class="md-nav__item">
2864  <a href="#collection-level-apis" class="md-nav__link">
2865    <span class="md-ellipsis">
2866      
2867        Collection-Level APIs
2868      
2869    </span>
2870  </a>
2871  
2872</li>
2873        
2874          <li class="md-nav__item">
2875  <a href="#httpopenapi-surface" class="md-nav__link">
2876    <span class="md-ellipsis">
2877      
2878        HTTP/OpenAPI Surface
2879      
2880    </span>
2881  </a>
2882  
2883</li>
2884        
2885      </ul>
2886    </nav>
2887  
2888</li>
2889      
2890        <li class="md-nav__item">
2891  <a href="#minimal-end-to-end-flow-python" class="md-nav__link">
2892    <span class="md-ellipsis">
2893      
2894        Minimal End-to-End Flow (Python)
2895      
2896    </span>
2897  </a>
2898  
2899</li>
2900      
2901        <li class="md-nav__item">
2902  <a href="#where-to-go-next" class="md-nav__link">
2903    <span class="md-ellipsis">
2904      
2905        Where to Go Next
2906      
2907    </span>
2908  </a>
2909  
2910</li>
2911      
2912    </ul>
2913  
2914</nav>
2915                  </div>
2916                </div>
2917              </div>
2918            
2919          
2920          
2921            <div class="md-content" data-md-component="content">
2922              
2923              <article class="md-content__inner md-typeset">
2924                
2925                  
2926
2927
2928  
2929  
2930
2931
2932<h1 id="chroma-core-concepts-and-apis">Chroma Core: Concepts and APIs<a class="headerlink" href="#chroma-core-concepts-and-apis" title="Permanent link">&para;</a></h1>
2933<p>This section is the fastest way to understand Chroma's core data model, client choices, and day-to-day APIs.</p>
2934<p>If you are new to Chroma, use the path below in order. If you are already building, jump to the API map.</p>
2935<h2 id="recommended-learning-path">Recommended Learning Path<a class="headerlink" href="#recommended-learning-path" title="Permanent link">&para;</a></h2>
2936<ol>
2937<li><a href="concepts/">Concepts</a>: Understand tenants, databases, collections, documents, metadata, embeddings, and query flow.</li>
2938<li><a href="install/">Installation</a>: Install Chroma for local development, server usage, or cloud-connected workflows.</li>
2939<li><a href="clients/">Clients</a>: Pick the right client (<code>PersistentClient</code>, <code>HttpClient</code>, <code>
2939AsyncHttpClient</code>, <code>CloudClient</code>) for your architecture.</li>
2940<li><a href="collections/">Collections</a>: Learn collection lifecycle and core CRUD/query operations.</li>
2941<li><a href="filters/">Filters</a>: Add precise metadata and document filtering to retrieval.</li>
2942<li><a href="configuration/">Configuration</a>: Tune index, runtime, and environment options.</li>
2943<li><a href="resources/">Resources</a>: Estimate memory/CPU/disk needs before scaling.</li>
2944<li><a href="advanced/queries/">Advanced Search</a>: Learn query-stage semantics, ranking, and execution tradeoffs.</li>
2945</ol>
2946<h2 id="api-map">API Map<a class="headerlink" href="#api-map" title="Permanent link">&para;</a></h2>
2947<h3 id="client-level-apis">Client-Level APIs<a class="headerlink" href="#client-level-apis" title="Permanent link">&para;</a></h3>
2948<ul>
2949<li>Connect to Chroma: <code>PersistentClient</code>, <code>HttpClient</code>, <code>AsyncHttpClient</code>, <code>CloudClient</code></li>
2950<li>Scope data isolation: tenant + database selection</li>
2951<li>Perform admin/list operations (for example collection listing and lifecycle actions)</li>
2952</ul>
2953<p>Start in <a href="clients/">Clients</a>, then use <a href="tenants-and-databases/">Tenants and Databases</a> for multi-tenant setups.</p>
2954<h3 id="collection-level-apis">Collection-Level APIs<a class="headerlink" href="#collection-level-apis" title="Permanent link">&para;</a></h3>
2955<ul>
2956<li>Create/get collections: <code>create_collection</code>, <code>get_or_create_collection</code>, <code>get_collection</code></li>
2957<li>Write data: <code>add</code>, <code>upsert</code>, <code>update</code>, <code>delete</code></li>
2958<li>Read data: <code>get</code>, <code>query</code>, <code>count</code></li>
2959<li>Manage collection settings: metadata, index configuration, and cloning/forking patterns</li>
2960</ul>
2961<p>Start in <a href="collections/">Collections</a>, then pair with <a href="filters/">Filters</a> and <a href="document-ids/">Document IDs</a>.</p>
2962<h3 id="httpopenapi-surface">HTTP/OpenAPI Surface<a class="headerlink" href="#httpopenapi-surface" title="Permanent link">&para;</a></h3>
2963<ul>
2964<li>Explore server endpoints and OpenAPI: <a href="api/">API</a></li>
2965<li>Generate custom clients when needed</li>
2966</ul>
2967<h2 id="minimal-end-to-end-flow-python">Minimal End-to-End Flow (Python)<a class="headerlink" href="#minimal-end-to-end-flow-python" title="Permanent link">&para;</a></h2>
2968<div class="language-python highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="kn">import</span><span class="w"> </span><span class="nn">chromadb</span>
2969</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>
2970</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="n">client</span> <span class="o">=</span> <span class="n">chromadb</span><span class="o">.</span><span class="n">PersistentClient</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">&quot;./chroma&quot;</span><span class="p">)</span>
2971</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="n">collection</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">get_or_create_collection</span><span class="p">(</span><span class="s2">&quot;quickstart&quot;</span><span class="p">)</span>
2972</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a>
2973</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="n">collection</span><span class="o">.</span><span class="n">upsert</span><span class="p">(</span>
2974</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a>    <span class="n">ids</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;doc-1&quot;</span><span class="p">,</span> <span class="s2">&quot;doc-2&quot;</span><span class="p">],</span>
2975</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a>    <span class="n">documents</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;Chroma stores vectors and metadata.&quot;</span><span class="p">,</span> <span class="s2">&quot;Filters narrow candidate sets before ranking.&quot;</span><span class="p">],</span>
2976</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a>    <span class="n">metadatas</span><span class="o">=</span><span class="p">
2976[{</span><span class="s2">&quot;topic&quot;</span><span class="p">:</span> <span class="s2">&quot;basics&quot;</span><span class="p">},</span> <span class="p">{</span><span class="s2">&quot;topic&quot;</span><span class="p">:</span> <span class="s2">&quot;search&quot;</span><span class="p">}],</span>
2977</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="p">)</span>
2978</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a>
2979</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a><span class="n">result</span> <span class="o">=</span> <span class="n">collection</span><span class="o">.</span><span class="n">query</span><span class="p">(</span>
2980</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a>    <span class="n">query_texts</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;How do filters affect retrieval?&quot;</span><span class="p">],</span>
2981</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a>    <span class="n">where</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;topic&quot;</span><span class="p">:</span> <span class="s2">&quot;search&quot;</span><span class="p">},</span>
2982</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a>    <span class="n">n_results</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
2983</span><span id="__span-0-16"><a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a><span class="p">)</span>
2984</span><span id="__span-0-17"><a id="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a>
2985</span><span id="__span-0-18"><a id="__codelineno-0-18" name="__codelineno-0-18" href="#__codelineno-0-18"></a><span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="s2">&quot;ids&quot;</span><span class="p">])</span>
2986</span></code></pre></div>
2987<h2 id="where-to-go-next">Where to Go Next<a class="headerlink" href="#where-to-go-next" title="Permanent link">&para;</a></h2>
2988<ul>
2989<li>Operating local persistent deployments: <a href="storage-layout/">Storage Layout</a>, <a href="advanced/wal/">WAL</a>, <a href="advanced/wal-pruning/">WAL Pruning</a></li>
2990<li>Production guardrails and limits: <a href="system_constraints/">System Constraints</a>, <a href="resources/">Resources</a></li>
2991</ul>
2992
2993
2994
2995
2996
2997
2998
2999  
3000    
3001  
3002  
3003
3004
3005  <aside class="md-source-file">
3006    
3007      
3008  <span class="md-source-file__fact">
3009    <span class="md-icon" title="Last update">
3010      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg>
3011    </span>
3012    <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="February 24, 2026 10:27:49 UTC">February 24, 2026</span>
3013  </span>
3014
3015    
3016    
3017    
3018    
3019  </aside>
3020
3021
3022  
3023
3024
3025
3026
3027                
3028              </article>
3029            </div>
3030          
3031          
3032<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
3032
3033        </div>
3034        
3035      </main>
3036      
3037        <footer class="md-footer">
3038  
3039  <div class="md-footer-meta md-typeset">
3040    <div class="md-footer-meta__inner md-grid">
3041      <div class="md-copyright">
3042  
3043    <div class="md-copyright__highlight">
3044      Amikos Tech LTD, 2025 (Chroma contributors)
3045    </div>
3046  
3047  
3048    Made with
3049    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
3050      Material for MkDocs
3051    </a>
3052  
3053</div>
3054      
3055        
3056<div class="md-social">
3057  
3058    
3059    
3060    
3061    
3062    <a href="https://twitter.com/AmikosTech" target="_blank" rel="noopener" title="Amikos on Twitter" class="md-social__link">
3063      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M459.4 151.7c.3 4.5.3 9.1.3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103v-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53C87.4 130.8 165 172.4 252.1 176.9c-1.6-7.8-2.6-15.9-2.6-24C249.5 95.1 296.3 48 354.4 48c30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3"/></svg>
3064    </a>
3065  
3066    
3067    
3068    
3069    
3070    <a href="https://github.com/amikos-tech" target="_blank" rel="noopener" title="Amikos on GitHub" class="md-social__link">
3071      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
3072    </a>
3073  
3074    
3075    
3076    
3077    
3078    <a href="https://medium.com/@amikostech" target="_blank" rel="noopener" title="Amikos on Medium" class="md-social__link">
3079      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M369.4 32c43.4 0 78.6 35.2 78.6 78.6v83.8c-1.9-.1-3.8-.2-5.7-.2h-.4c-10 0-22.3 2.4-31.1 6.8-10 4.6-18.7 11.5-26 20.6-11.8 14.6-18.9 34.3-20.6 56.4-.1.7-.1 1.3-.2 2s-.1 1.2-.1 1.9c-.1 1.2-.1 2.4-.1 3.6 0 1.9-.1 3.8 0 5.8 1.2 50.1 28.2 90.2 76.3 90.2 2.7 0 5.3-.1 7.9-.4v20.4c0 43.4-35.2 78.6-78.6 78.6L78.6 480C35.2 480 0 444.8 0 401.4V110.6C0 67.2 35.2 32 78.6 32zM82.3 138.9l.3.1c13.2 3 19.8 7.4 19.8 23.4v187.2c0 16-6.7 20.4-19.9 23.4l-.3.1v2.8H135v-2.8l-.3-.1c-13.2-3-19.9-7.4-19.9-23.4V173.3l86.1 202.5h4.9l88.6-208.2v186.6c-1.1 12.6-7.8 16.5-19.7 19.2l-.3.1v2.7h91.9v-2.7l-.3-.1c-11.9-2.7-18.7-6.6-19.9-19.2l-.1-191.8h.1c0-16 6.7-20.4 19.9-23.4l.3-.1v-2.7h-72.2l-67 157.4-67-157.4H82.3zM448 340.3c-25.1-7.4-43-35.1-41.2-67.8h41.1v67.8zm-6.4-135.6c2.3 0 4.4.3 6.4.9V263h-40.2c1.5-33.6 13.6-57.9 33.8-58.3"/></svg>
3080    </a>
3081  
3082</div>
3083      
3084    </div>
3085  </div>
3086</footer>
3087      
3088    </div>
3089    <div class="md-dialog" data-md-component="dialog">
3090      <div class="md-dialog__inner md-typeset"></div>
3091    </div>
3092    
3093      <div class="md-progress" data-md-component="progress" role="progressbar"></div>
3094    
3095    
3096      <div class="md-consent" data-md-component="consent" id="__consent" hidden>
3097        <div class="md-consent__overlay"></div>
3098        <aside class="md-consent__inner">
3099          <form class="md-consent__form md-grid md-typeset" name="consent">
3100            
3101
3102
3103  
3104
3105
3106<h4>
3106Cookie consent</h4>
3107<p>We use cookies for analytics purposes. By continuing to use this website, you agree to their use.</p>
3108<input class="md-toggle" type="checkbox" id="__settings" >
3109<div class="md-consent__settings">
3110  <ul class="task-list">
3111    
3112    
3113      
3114        
3115  
3116  
3117    
3118    
3119  
3120  <li class="task-list-item">
3121    <label class="task-list-control">
3122      <input type="checkbox" name="analytics" checked>
3123      <span class="task-list-indicator"></span>
3124      Google Analytics
3125    </label>
3126  </li>
3127
3128      
3129    
3130    
3131      
3132        
3133  
3134  
3135    
3136    
3137  
3138  <li class="task-list-item">
3139    <label class="task-list-control">
3140      <input type="checkbox" name="github" checked>
3141      <span class="task-list-indicator"></span>
3142      GitHub
3143    </label>
3144  </li>
3145
3146      
3147    
3148    
3149  </ul>
3150</div>
3151<div class="md-consent__controls">
3152  
3153    
3154      <button class="md-button md-button--primary">Accept</button>
3155    
3156    
3157    
3158  
3159    
3160    
3161    
3162      <label class="md-button" for="__settings">Manage settings</label>
3163    
3164  
3165</div>
3166          </form>
3167        </aside>
3168      </div>
3169      
3169<script>var consent=__md_get("__consent");if(consent)for(var input of document.forms.consent.elements)input.name&&(input.checked=consent[input.name]||!1);else"file:"!==location.protocol&&setTimeout((function(){document.querySelector("[data-md-component=consent]").hidden=!1}),250);var form=document.forms.consent;for(var action of["submit","reset"])form.addEventListener(action,(function(e){if(e.preventDefault(),"reset"===e.type)for(var n of document.forms.consent.elements)n.name&&(n.checked=!1);__md_set("__consent",Object.fromEntries(Array.from(new FormData(form).keys()).map((function(e){return[e,!0]})))),location.hash="",location.reload()}))</script>
3169
3170    
3171    
3172      
3173      
3174      
3174<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["content.code.annotate", "content.code.copy", "navigation.instant", "navigation.instant.progress", "navigation.tracking", "navigation.indexes"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
3174
3175    
3176    
3177      
3177<script src="../assets/javascripts/bundle.79ae519e.min.js"></script>
3177
3178      
3179        
3179<script src="../javascripts/gtag.js"></script>
3179
3180      
3181        
3181<script src="../javascripts/ethicalads-init.js"></script>
3181
3182      
3183        
3183<script src="../javascripts/concepts-pipeline.js"></script>
3183
3184      
3185        
3185<script src="../javascripts/resource-calculator.js"></script>
3185
3186      
3187        
3187<script src="../javascripts/filter-builder.js"></script>
3187
3188      
3189    
3190  
3190<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"85534761cb4b49c3b57b9df7ac94f2f4","r":1,"spa":2}' crossorigin="anonymous"></script>
3190
3191</body>
3192</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.