Files
kotaemon/development/contributing/index.html

4398 lines
88 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="prev" href="../../pages/app/ext/user-management/">
<link rel="next" href="../../reference/agents/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.40">
<title>Contributing - kotaemon Docs</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
<script src="../../assets/pymdownx-extras/material-extra-theme-TVq-kNRT.js" type="text/javascript"></script>
<script src="../../assets/pymdownx-extras/material-extra-3rdparty-E-i8w1WA.js" type="text/javascript"></script>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../css/timeago.css">
<link rel="stylesheet" href="../../assets/_mkdocstrings.css">
<link rel="stylesheet" href="../../extra/css/code_select.css">
<link rel="stylesheet" href="../../assets/pymdownx-extras/extra-fb5a2a1c86.css">
<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>
</head>
<body dir="ltr" data-md-color-scheme="dracula" data-md-color-primary="deep-purple" data-md-color-accent="deep-purple">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#contributing" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav
class="md-header__inner md-grid"
aria-label="header.title"
>
<a
href="../.."
title="kotaemon Docs"
class="md-header__button md-logo"
aria-label="kotaemon Docs"
>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 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 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
kotaemon Docs
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Contributing
</span>
</div>
</div>
</div>
<div class="md-header__options">
<div class="md-header-nav__scheme md-header-nav__button md-source__icon md-icon">
<a
href="javascript:toggleScheme();"
title="Light mode"
class="light-mode"
>
<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>
</a>
<a
href="javascript:toggleScheme();"
title="Dark mode"
class="dark-mode"
>
<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.36 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>
</a>
<a
href="javascript:toggleScheme();"
title="System preference"
class="system-mode"
>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7.5 2c-1.79 1.15-3 3.18-3 5.5s1.21 4.35 3.03 5.5C4.46 13 2 10.54 2 7.5A5.5 5.5 0 0 1 7.5 2m11.57 1.5 1.43 1.43L4.93 20.5 3.5 19.07zm-6.18 2.43L11.41 5 9.97 6l.42-1.7L9 3.24l1.75-.12.58-1.65L12 3.1l1.73.03-1.35 1.13zm-3.3 3.61-1.16-.73-1.12.78.34-1.32-1.09-.83 1.36-.09.45-1.29.51 1.27 1.36.03-1.05.87zM19 13.5a5.5 5.5 0 0 1-5.5 5.5c-1.22 0-2.35-.4-3.26-1.07l7.69-7.69c.67.91 1.07 2.04 1.07 3.26m-4.4 6.58 2.77-1.15-.24 3.35zm4.33-2.7 1.15-2.77 2.2 2.54zm1.15-4.96-1.14-2.78 3.34.24zM9.63 18.93l2.77 1.15-2.53 2.19z"/></svg>
</a>
<!-- <a
href="javascript:toggleScheme();"
title="Unknown scheme"
class="unknown-mode"
>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m15.07 11.25-.9.92C13.45 12.89 13 13.5 13 15h-2v-.5c0-1.11.45-2.11 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41a2 2 0 0 0-2-2 2 2 0 0 0-2 2H8a4 4 0 0 1 4-4 4 4 0 0 1 4 4 3.2 3.2 0 0 1-.93 2.25M13 19h-2v-2h2M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10c0-5.53-4.5-10-10-10"/></svg>
</a> -->
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<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>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<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>
<label class="md-search__icon md-icon" for="__search">
<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>
<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>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<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>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/Cinnamon/kotaemon" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.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 2024 Fonticons, Inc.--><path d="M165.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.9M244.8 8C106.1 8 0 113.3 0 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.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.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>
</div>
<div class="md-source__repository">
Cinnamon/kotaemon
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../.." class="md-tabs__link">
Getting Started
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../" class="md-tabs__link">
Development
</a>
</li>
<li class="md-tabs__item">
<a href="../../reference/agents/" class="md-tabs__link">
API Reference
</a>
</li>
<li class="md-tabs__item">
<a href="https://github.com/Cinnamon/kotaemon/releases" class="md-tabs__link">
Changelogs
</a>
</li>
<li class="md-tabs__item">
<a href="https://github.com/Cinnamon/kotaemon/issues" class="md-tabs__link">
Issue Tracker
</a>
</li>
<li class="md-tabs__item">
<a href="https://huggingface.co/spaces/cin-model/kotaemon-demo" class="md-tabs__link">
Live Demo
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="kotaemon Docs" class="md-nav__button md-logo" aria-label="kotaemon Docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 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 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
kotaemon Docs
</label>
<div class="md-nav__source">
<a href="https://github.com/Cinnamon/kotaemon" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.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 2024 Fonticons, Inc.--><path d="M165.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.9M244.8 8C106.1 8 0 113.3 0 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.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.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>
</div>
<div class="md-source__repository">
Cinnamon/kotaemon
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" >
<div class="md-nav__link md-nav__container">
<a href="../.." class="md-nav__link ">
<span class="md-ellipsis">
Getting Started
</span>
</a>
<label class="md-nav__link " for="__nav_1" id="__nav_1_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
Getting Started
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../usage/" class="md-nav__link">
<span class="md-ellipsis">
Basic Usage
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
<div class="md-nav__link md-nav__container">
<a href="../" class="md-nav__link ">
<span class="md-ellipsis">
Development
</span>
</a>
<label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Development
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../pages/app/customize-flows/" class="md-nav__link">
<span class="md-ellipsis">
Customize flow logic
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../create-a-component/" class="md-nav__link">
<span class="md-ellipsis">
Creating a Component
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3" >
<label class="md-nav__link" for="__nav_2_3" id="__nav_2_3_label" tabindex="0">
<span class="md-ellipsis">
Components
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_3">
<span class="md-nav__icon md-icon"></span>
Components
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_1" >
<label class="md-nav__link" for="__nav_2_3_1" id="__nav_2_3_1_label" tabindex="0">
<span class="md-ellipsis">
Index
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_3_1">
<span class="md-nav__icon md-icon"></span>
Index
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../pages/app/index/file/" class="md-nav__link">
<span class="md-ellipsis">
File index
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_2" >
<div class="md-nav__link md-nav__container">
<a href="../../pages/app/settings/overview/" class="md-nav__link ">
<span class="md-ellipsis">
Settings
</span>
</a>
<label class="md-nav__link " for="__nav_2_3_2" id="__nav_2_3_2_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_3_2">
<span class="md-nav__icon md-icon"></span>
Settings
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../pages/app/settings/user-settings/" class="md-nav__link">
<span class="md-ellipsis">
User settings
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_3" >
<label class="md-nav__link" for="__nav_2_3_3" id="__nav_2_3_3_label" tabindex="0">
<span class="md-ellipsis">
Extension
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_3_3">
<span class="md-nav__icon md-icon"></span>
Extension
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../pages/app/ext/user-management/" class="md-nav__link">
<span class="md-ellipsis">
User management
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Contributing
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Contributing
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Page contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Page contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#setting-up" class="md-nav__link">
<span class="md-ellipsis">
Setting up
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#package-overview" class="md-nav__link">
<span class="md-ellipsis">
Package overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#common-conventions" class="md-nav__link">
<span class="md-ellipsis">
Common conventions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#environment-caching-on-pr" class="md-nav__link">
<span class="md-ellipsis">
Environment caching on PR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#merge-pr-guideline" class="md-nav__link">
<span class="md-ellipsis">
Merge PR guideline
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/agents/" class="md-nav__link ">
<span class="md-ellipsis">
API Reference
</span>
</a>
<label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
API Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/base/" class="md-nav__link ">
<span class="md-ellipsis">
Base
</span>
</a>
<label class="md-nav__link " for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2">
<span class="md-nav__icon md-icon"></span>
Base
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/base/component/" class="md-nav__link">
<span class="md-ellipsis">
Component
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/base/schema/" class="md-nav__link">
<span class="md-ellipsis">
Schema
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/chatbot/" class="md-nav__link ">
<span class="md-ellipsis">
Chatbot
</span>
</a>
<label class="md-nav__link " for="__nav_3_3" id="__nav_3_3_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3">
<span class="md-nav__icon md-icon"></span>
Chatbot
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/chatbot/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/chatbot/simple_respondent/" class="md-nav__link">
<span class="md-ellipsis">
Simple Respondent
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../reference/cli/" class="md-nav__link">
<span class="md-ellipsis">
CLI
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/embeddings/" class="md-nav__link ">
<span class="md-ellipsis">
Embeddings
</span>
</a>
<label class="md-nav__link " for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_5">
<span class="md-nav__icon md-icon"></span>
Embeddings
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/embeddings/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/embeddings/endpoint_based/" class="md-nav__link">
<span class="md-ellipsis">
Endpoint Based
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/embeddings/fastembed/" class="md-nav__link">
<span class="md-ellipsis">
Fastembed
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/embeddings/langchain_based/" class="md-nav__link">
<span class="md-ellipsis">
Langchain Based
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/embeddings/openai/" class="md-nav__link">
<span class="md-ellipsis">
Openai
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/embeddings/tei_endpoint_embed/" class="md-nav__link">
<span class="md-ellipsis">
Tei Endpoint Embed
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/indices/" class="md-nav__link ">
<span class="md-ellipsis">
Indices
</span>
</a>
<label class="md-nav__link " for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6">
<span class="md-nav__icon md-icon"></span>
Indices
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/indices/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_2" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/indices/extractors/" class="md-nav__link ">
<span class="md-ellipsis">
Extractors
</span>
</a>
<label class="md-nav__link " for="__nav_3_6_2" id="__nav_3_6_2_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_2">
<span class="md-nav__icon md-icon"></span>
Extractors
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/indices/extractors/doc_parsers/" class="md-nav__link">
<span class="md-ellipsis">
Doc Parsers
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_3" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/indices/ingests/" class="md-nav__link ">
<span class="md-ellipsis">
Ingests
</span>
</a>
<label class="md-nav__link " for="__nav_3_6_3" id="__nav_3_6_3_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_3">
<span class="md-nav__icon md-icon"></span>
Ingests
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/indices/ingests/files/" class="md-nav__link">
<span class="md-ellipsis">
Files
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_4" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/indices/qa/" class="md-nav__link ">
<span class="md-ellipsis">
Qa
</span>
</a>
<label class="md-nav__link " for="__nav_3_6_4" id="__nav_3_6_4_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_4">
<span class="md-nav__icon md-icon"></span>
Qa
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/indices/qa/citation/" class="md-nav__link">
<span class="md-ellipsis">
Citation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/indices/qa/citation_qa/" class="md-nav__link">
<span class="md-ellipsis">
Citation Qa
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/indices/qa/citation_qa_inline/" class="md-nav__link">
<span class="md-ellipsis">
Citation Qa Inline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/indices/qa/format_context/" class="md-nav__link">
<span class="md-ellipsis">
Format Context
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/indices/qa/utils/" class="md-nav__link">
<span class="md-ellipsis">
Utils
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_5" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/indices/rankings/" class="md-nav__link ">
<span class="md-ellipsis">
Rankings
</span>
</a>
<label class="md-nav__link " for="__nav_3_6_5" id="__nav_3_6_5_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_5">
<span class="md-nav__icon md-icon"></span>
Rankings
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/indices/rankings/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/indices/rankings/cohere/" class="md-nav__link">
<span class="md-ellipsis">
Cohere
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/indices/rankings/llm/" class="md-nav__link">
<span class="md-ellipsis">
Llm
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/indices/rankings/llm_scoring/" class="md-nav__link">
<span class="md-ellipsis">
Llm Scoring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/indices/rankings/llm_trulens/" class="md-nav__link">
<span class="md-ellipsis">
Llm Trulens
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_6" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/indices/retrievers/" class="md-nav__link ">
<span class="md-ellipsis">
Retrievers
</span>
</a>
<label class="md-nav__link " for="__nav_3_6_6" id="__nav_3_6_6_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_6">
<span class="md-nav__icon md-icon"></span>
Retrievers
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/indices/retrievers/jina_web_search/" class="md-nav__link">
<span class="md-ellipsis">
Jina Web Search
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/indices/retrievers/tavily_web_search/" class="md-nav__link">
<span class="md-ellipsis">
Tavily Web Search
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../reference/indices/splitters/" class="md-nav__link">
<span class="md-ellipsis">
Splitters
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/indices/vectorindex/" class="md-nav__link">
<span class="md-ellipsis">
Vectorindex
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/llms/" class="md-nav__link ">
<span class="md-ellipsis">
LLMs
</span>
</a>
<label class="md-nav__link " for="__nav_3_7" id="__nav_3_7_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7">
<span class="md-nav__icon md-icon"></span>
LLMs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/llms/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/llms/branching/" class="md-nav__link">
<span class="md-ellipsis">
Branching
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7_3" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/llms/chats/" class="md-nav__link ">
<span class="md-ellipsis">
Chats
</span>
</a>
<label class="md-nav__link " for="__nav_3_7_3" id="__nav_3_7_3_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_7_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7_3">
<span class="md-nav__icon md-icon"></span>
Chats
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/llms/chats/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/llms/chats/endpoint_based/" class="md-nav__link">
<span class="md-ellipsis">
Endpoint Based
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/llms/chats/langchain_based/" class="md-nav__link">
<span class="md-ellipsis">
Langchain Based
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/llms/chats/llamacpp/" class="md-nav__link">
<span class="md-ellipsis">
Llamacpp
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/llms/chats/openai/" class="md-nav__link">
<span class="md-ellipsis">
Openai
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7_4" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/llms/completions/" class="md-nav__link ">
<span class="md-ellipsis">
Completions
</span>
</a>
<label class="md-nav__link " for="__nav_3_7_4" id="__nav_3_7_4_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_7_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7_4">
<span class="md-nav__icon md-icon"></span>
Completions
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/llms/completions/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/llms/completions/langchain_based/" class="md-nav__link">
<span class="md-ellipsis">
Langchain Based
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../reference/llms/cot/" class="md-nav__link">
<span class="md-ellipsis">
Cot
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/llms/linear/" class="md-nav__link">
<span class="md-ellipsis">
Linear
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7_7" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/llms/prompts/" class="md-nav__link ">
<span class="md-ellipsis">
Prompts
</span>
</a>
<label class="md-nav__link " for="__nav_3_7_7" id="__nav_3_7_7_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_7_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7_7">
<span class="md-nav__icon md-icon"></span>
Prompts
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/llms/prompts/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/llms/prompts/template/" class="md-nav__link">
<span class="md-ellipsis">
Template
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_8" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/loaders/" class="md-nav__link ">
<span class="md-ellipsis">
Loaders
</span>
</a>
<label class="md-nav__link " for="__nav_3_8" id="__nav_3_8_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_8">
<span class="md-nav__icon md-icon"></span>
Loaders
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/loaders/adobe_loader/" class="md-nav__link">
<span class="md-ellipsis">
Adobe Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/azureai_document_intelligence_loader/" class="md-nav__link">
<span class="md-ellipsis">
Azureai Document Intelligence Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/composite_loader/" class="md-nav__link">
<span class="md-ellipsis">
Composite Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/docling_loader/" class="md-nav__link">
<span class="md-ellipsis">
Docling Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/docx_loader/" class="md-nav__link">
<span class="md-ellipsis">
Docx Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/excel_loader/" class="md-nav__link">
<span class="md-ellipsis">
Excel Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/html_loader/" class="md-nav__link">
<span class="md-ellipsis">
Html Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/mathpix_loader/" class="md-nav__link">
<span class="md-ellipsis">
Mathpix Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/ocr_loader/" class="md-nav__link">
<span class="md-ellipsis">
Ocr Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/pdf_loader/" class="md-nav__link">
<span class="md-ellipsis">
Pdf Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/txt_loader/" class="md-nav__link">
<span class="md-ellipsis">
Txt Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/unstructured_loader/" class="md-nav__link">
<span class="md-ellipsis">
Unstructured Loader
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_8_14" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/loaders/utils/" class="md-nav__link ">
<span class="md-ellipsis">
Utils
</span>
</a>
<label class="md-nav__link " for="__nav_3_8_14" id="__nav_3_8_14_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_8_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_8_14">
<span class="md-nav__icon md-icon"></span>
Utils
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/loaders/utils/adobe/" class="md-nav__link">
<span class="md-ellipsis">
Adobe
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/utils/box/" class="md-nav__link">
<span class="md-ellipsis">
Box
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/utils/gpt4v/" class="md-nav__link">
<span class="md-ellipsis">
Gpt4V
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/utils/pdf_ocr/" class="md-nav__link">
<span class="md-ellipsis">
Pdf Ocr
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/utils/table/" class="md-nav__link">
<span class="md-ellipsis">
Table
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../reference/loaders/web_loader/" class="md-nav__link">
<span class="md-ellipsis">
Web Loader
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_9" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/parsers/" class="md-nav__link ">
<span class="md-ellipsis">
Parsers
</span>
</a>
<label class="md-nav__link " for="__nav_3_9" id="__nav_3_9_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_9">
<span class="md-nav__icon md-icon"></span>
Parsers
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/parsers/regex_extractor/" class="md-nav__link">
<span class="md-ellipsis">
Regex Extractor
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/rerankings/" class="md-nav__link ">
<span class="md-ellipsis">
Rerankings
</span>
</a>
<label class="md-nav__link " for="__nav_3_10" id="__nav_3_10_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10">
<span class="md-nav__icon md-icon"></span>
Rerankings
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/rerankings/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/rerankings/cohere/" class="md-nav__link">
<span class="md-ellipsis">
Cohere
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/rerankings/tei_fast_rerank/" class="md-nav__link">
<span class="md-ellipsis">
Tei Fast Rerank
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_11" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/storages/" class="md-nav__link ">
<span class="md-ellipsis">
Storages
</span>
</a>
<label class="md-nav__link " for="__nav_3_11" id="__nav_3_11_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_11">
<span class="md-nav__icon md-icon"></span>
Storages
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_11_1" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/storages/docstores/" class="md-nav__link ">
<span class="md-ellipsis">
Docstores
</span>
</a>
<label class="md-nav__link " for="__nav_3_11_1" id="__nav_3_11_1_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_11_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_11_1">
<span class="md-nav__icon md-icon"></span>
Docstores
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/storages/docstores/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/storages/docstores/elasticsearch/" class="md-nav__link">
<span class="md-ellipsis">
Elasticsearch
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/storages/docstores/in_memory/" class="md-nav__link">
<span class="md-ellipsis">
In Memory
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/storages/docstores/lancedb/" class="md-nav__link">
<span class="md-ellipsis">
Lancedb
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/storages/docstores/simple_file/" class="md-nav__link">
<span class="md-ellipsis">
Simple File
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_11_2" >
<div class="md-nav__link md-nav__container">
<a href="../../reference/storages/vectorstores/" class="md-nav__link ">
<span class="md-ellipsis">
Vectorstores
</span>
</a>
<label class="md-nav__link " for="__nav_3_11_2" id="__nav_3_11_2_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_11_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_11_2">
<span class="md-nav__icon md-icon"></span>
Vectorstores
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../reference/storages/vectorstores/base/" class="md-nav__link">
<span class="md-ellipsis">
Base
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/storages/vectorstores/chroma/" class="md-nav__link">
<span class="md-ellipsis">
Chroma
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/storages/vectorstores/in_memory/" class="md-nav__link">
<span class="md-ellipsis">
In Memory
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/storages/vectorstores/lancedb/" class="md-nav__link">
<span class="md-ellipsis">
Lancedb
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/storages/vectorstores/milvus/" class="md-nav__link">
<span class="md-ellipsis">
Milvus
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/storages/vectorstores/qdrant/" class="md-nav__link">
<span class="md-ellipsis">
Qdrant
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../reference/storages/vectorstores/simple_file/" class="md-nav__link">
<span class="md-ellipsis">
Simple File
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="https://github.com/Cinnamon/kotaemon/releases" class="md-nav__link">
<span class="md-ellipsis">
Changelogs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://github.com/Cinnamon/kotaemon/issues" class="md-nav__link">
<span class="md-ellipsis">
Issue Tracker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://huggingface.co/spaces/cin-model/kotaemon-demo" class="md-nav__link">
<span class="md-ellipsis">
Live Demo
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Page contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Page contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#setting-up" class="md-nav__link">
<span class="md-ellipsis">
Setting up
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#package-overview" class="md-nav__link">
<span class="md-ellipsis">
Package overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#common-conventions" class="md-nav__link">
<span class="md-ellipsis">
Common conventions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#environment-caching-on-pr" class="md-nav__link">
<span class="md-ellipsis">
Environment caching on PR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#merge-pr-guideline" class="md-nav__link">
<span class="md-ellipsis">
Merge PR guideline
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/Cinnamon/kotaemon/edit/main/docs/development/contributing.md" title="Edit this page" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75z"/></svg>
</a>
<div><h1 id="contributing">Contributing<a class="headerlink" href="#contributing" title="Permanent link"></a></h1>
<h2 id="setting-up">Setting up<a class="headerlink" href="#setting-up" title="Permanent link"></a></h2>
<ul>
<li>
<p>Clone the repo</p>
<div class="language-shell highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span>
<span class="normal"><a href="#__codelineno-0-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a>git<span class="w"> </span>clone<span class="w"> </span>git@github.com:Cinnamon/kotaemon.git
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a><span class="nb">cd</span><span class="w"> </span>kotaemon
</span></code></pre></div></td></tr></table></div>
</li>
</ul>
<ul>
<li>
<p>Install the environment</p>
<ul>
<li>
<p>Create a conda environment (python &gt;= 3.10 is recommended)</p>
<div class="language-shell highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span>
<span class="normal"><a href="#__codelineno-1-2">2</a></span>
<span class="normal"><a href="#__codelineno-1-3">3</a></span>
<span class="normal"><a href="#__codelineno-1-4">4</a></span>
<span class="normal"><a href="#__codelineno-1-5">5</a></span>
<span class="normal"><a href="#__codelineno-1-6">6</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a>conda<span class="w"> </span>create<span class="w"> </span>-n<span class="w"> </span>kotaemon<span class="w"> </span><span class="nv">python</span><span class="o">=</span><span class="m">3</span>.10
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a>conda<span class="w"> </span>activate<span class="w"> </span>kotaemon
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3"></a>
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4"></a><span class="c1"># install dependencies</span>
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5"></a><span class="nb">cd</span><span class="w"> </span>libs/kotaemon
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6"></a>pip<span class="w"> </span>install<span class="w"> </span>-e<span class="w"> </span><span class="s2">".[all]"</span>
</span></code></pre></div></td></tr></table></div>
</li>
</ul>
<ul>
<li>
<p>Or run the installer (one of the <code>scripts/run_*</code> scripts depends on your OS), then
you will have all the dependencies installed as a conda environment at
<code>install_dir/env</code>.</p>
<div class="language-shell highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a>conda<span class="w"> </span>activate<span class="w"> </span>install_dir/env
</span></code></pre></div></td></tr></table></div>
</li>
</ul>
</li>
</ul>
<ul>
<li>
<p>Pre-commit</p>
<div class="language-shell highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1"></a>pre-commit<span class="w"> </span>install
</span></code></pre></div></td></tr></table></div>
</li>
</ul>
<ul>
<li>
<p>Test</p>
<div class="language-shell highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1"></a>pytest<span class="w"> </span>tests
</span></code></pre></div></td></tr></table></div>
</li>
</ul>
<h2 id="package-overview">Package overview<a class="headerlink" href="#package-overview" title="Permanent link"></a></h2>
<p><code>kotaemon</code> library focuses on the AI building blocks to implement a RAG-based QA application. It consists of base interfaces, core components and a list of utilities:</p>
<ul>
<li>Base interfaces: <code>kotaemon</code> defines the base interface of a component in a pipeline. A pipeline is also a component. By clearly define this interface, a pipeline of steps can be easily constructed and orchestrated.</li>
<li>Core components: <code>kotaemon</code> implements (or wraps 3rd-party libraries
like Langchain, llama-index,... when possible) commonly used components in
kotaemon use cases. Some of these components are: LLM, vector store,
document store, retriever... For a detailed list and description of these
components, please refer to the <a href="../../reference/Summary/">API Reference</a> section.</li>
<li>List of utilities: <code>kotaemon</code> provides utilities and tools that are
usually needed in client project. For example, it provides a prompt
engineering UI for AI developers in a project to quickly create a prompt
engineering tool for DMs and QALs. It also provides a command to quickly spin
up a project code base. For a full list and description of these utilities,
please refer to the <a href="../utilities/">Utilities</a> section.</li>
</ul>
<pre class="mermaid"><code>mindmap
root((kotaemon))
Base Interfaces
Document
LLMInterface
RetrievedDocument
BaseEmbeddings
BaseChat
BaseCompletion
...
Core Components
LLMs
AzureOpenAI
OpenAI
Embeddings
AzureOpenAI
OpenAI
HuggingFaceEmbedding
VectorStore
InMemoryVectorstore
ChromaVectorstore
Agent
Tool
DocumentStore
...
Utilities
Scaffold project
PromptUI
Documentation Support</code></pre>
<h2 id="common-conventions">Common conventions<a class="headerlink" href="#common-conventions" title="Permanent link"></a></h2>
<ul>
<li>PR title: One-line description (example: Feat: Declare BaseComponent and decide LLM call interface).</li>
<li>[Encouraged] Provide a quick description in the PR, so that:<ul>
<li>Reviewers can quickly understand the direction of the PR.</li>
<li>It will be included in the commit message when the PR is merged.</li>
</ul>
</li>
</ul>
<h2 id="environment-caching-on-pr">Environment caching on PR<a class="headerlink" href="#environment-caching-on-pr" title="Permanent link"></a></h2>
<ul>
<li>To speed up CI, environments are cached based on the version specified in <code>__init__.py</code>.</li>
<li>Since dependencies versions in <code>setup.py</code> are not pinned, you need to pump the version in order to use a new environment. That environment will then be cached and used by your subsequence commits within the PR, until you pump the version again</li>
<li>The new environment created during your PR is cached and will be available to others once the PR is merged.</li>
<li>If you are experimenting with new dependencies and want a fresh environment every time, add <code>[ignore cache]</code> in your commit message. The CI will create a fresh environment to run your commit and then discard it.</li>
<li>If your PR include updated dependencies, the recommended workflow would be:<ul>
<li>Doing development as usual.</li>
<li>When you want to run the CI, push a commit with the message containing <code>[ignore cache]</code>.</li>
<li>Once the PR is final, pump the version in <code>__init__.py</code> and push a final commit not containing <code>[ignore cache]</code>.</li>
</ul>
</li>
</ul>
<h2 id="merge-pr-guideline">Merge PR guideline<a class="headerlink" href="#merge-pr-guideline" title="Permanent link"></a></h2>
<ul>
<li>Use squash and merge option</li>
<li>1st line message is the PR title.</li>
<li>The text area is the PR description.</li>
</ul></div>
<aside class="md-source-file">
<span class="md-source-file__fact">
<span class="md-icon" title="Last update">
<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>
</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-timeago"><span class="timeago" datetime="2024-04-25T10:33:19+00:00" locale="en"></span></span><span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_date">2024-04-25</span>
</span>
<span class="md-source-file__fact">
<span class="md-icon" title="Created">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.47 15.08 11 13V7h1.5v5.25l3.08 1.83c-.41.28-.79.62-1.11 1m-1.39 4.84c-.36.05-.71.08-1.08.08-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8c0 .37-.03.72-.08 1.08.69.1 1.33.32 1.92.64.1-.56.16-1.13.16-1.72 0-5.5-4.5-10-10-10S2 6.5 2 12s4.47 10 10 10c.59 0 1.16-.06 1.72-.16-.32-.59-.54-1.23-.64-1.92M18 15v3h-3v2h3v3h2v-3h3v-2h-3v-3z"/></svg>
</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-timeago"><span class="timeago" datetime="2024-03-29T12:47:03+00:00" locale="en"></span></span><span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_date">2024-03-29</span>
</span>
</aside>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<nav
class="md-footer__inner md-grid"
aria-label="footer.title"
>
<a
href="../../pages/app/ext/user-management/"
class="md-footer__link md-footer__link--prev"
rel="prev"
>
<div class="md-footer__button md-icon">
<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>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
User management
</div>
</div>
</a>
<a
href="../../reference/agents/"
class="md-footer__link md-footer__link--next"
rel="next"
>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Agents
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
</div>
</a>
</nav>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["content.action.edit", "content.tabs.link", "content.code.annotate", "content.code.annotations", "content.code.copy", "navigation.tabs", "navigation.top", "navigation.instant", "navigation.indexes", "toc.follow", "search.share", "search.highlight", "search.suggest"], "search": "../../assets/javascripts/workers/search.6ce7567c.min.js", "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"}}</script>
<script src="../../assets/javascripts/bundle.525ec568.min.js"></script>
<script src="../../js/timeago.min.js"></script>
<script src="../../js/timeago_mkdocs_material.js"></script>
<script src="../../assets/pymdownx-extras/extra-loader-MCFnu0Wd.js"></script>
</body>
</html>