CINXE.COM
Neo4j - LlamaIndex
<!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="canonical" href="https://docs.llamaindex.ai/en/stable/api_reference/storage/graph_stores/neo4j/"> <link rel="prev" href="../nebula/"> <link rel="next" href="../neptune/"> <link rel="icon" href="../../../../_static/assets/LlamaLogoBrowserTab.png"> <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.4"> <title>Neo4j - LlamaIndex</title> <link rel="stylesheet" href="../../../../assets/stylesheets/main.8608ea7d.min.css"> <link rel="stylesheet" href="../../../../assets/stylesheets/palette.06af60db.min.css"> <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="../../../../assets/_mkdocstrings.css"> <link rel="stylesheet" href="../../../../css/style.css"> <link rel="stylesheet" href="../../../../css/algolia.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> <script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config","G-BYVB1ZVE6J"),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-BYVB1ZVE6J",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=G-BYVB1ZVE6J",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script> <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> <script async type="text/javascript" src="/_/static/javascript/readthedocs-addons.js"></script><meta name="readthedocs-project-slug" content="llamaindex-llamaindex" /><meta name="readthedocs-version-slug" content="stable" /><meta name="readthedocs-resolver-filename" content="/api_reference/storage/graph_stores/neo4j/" /><meta name="readthedocs-http-status" content="200" /></head> <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo"> <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="#llama_index.graph_stores.neo4j.Neo4jGraphStore" 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"> <a href="../../../.." title="LlamaIndex" class="md-header__button md-logo" aria-label="LlamaIndex" data-md-component="logo"> <img src="../../../../_static/assets/LlamaSquareBlack.svg" alt="logo"> </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"> LlamaIndex </span> </div> <div class="md-header__topic" data-md-component="header-topic"> <span class="md-ellipsis"> Neo4j </span> </div> </div> </div> <form class="md-header__option" data-md-component="palette"> <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"> <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden> <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> </label> <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="purple" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1"> <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <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="purple" aria-label="Switch to system preference" type="radio" name="__palette" id="__palette_2"> <label class="md-header__button md-icon" title="Switch to system preference" for="__palette_0" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <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> <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> <!-- Search interface --> <div id="docsearch"></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"> Home </a> </li> <li class="md-tabs__item"> <a href="../../../../understanding/" class="md-tabs__link"> Learn </a> </li> <li class="md-tabs__item"> <a href="../../../../use_cases/" class="md-tabs__link"> Use Cases </a> </li> <li class="md-tabs__item"> <a href="../../../../examples/" class="md-tabs__link"> Examples </a> </li> <li class="md-tabs__item"> <a href="../../../../module_guides/" class="md-tabs__link"> Component Guides </a> </li> <li class="md-tabs__item"> <a href="../../../../optimizing/production_rag/" class="md-tabs__link"> Advanced Topics </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href="../../../" class="md-tabs__link"> API Reference </a> </li> <li class="md-tabs__item"> <a href="../../../../community/integrations/" class="md-tabs__link"> Open-Source Community </a> </li> <li class="md-tabs__item"> <a href="../../../../llama_cloud/" class="md-tabs__link"> LlamaCloud </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="LlamaIndex" class="md-nav__button md-logo" aria-label="LlamaIndex" data-md-component="logo"> <img src="../../../../_static/assets/LlamaSquareBlack.svg" alt="logo"> </a> LlamaIndex </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_1" > <div class="md-nav__link md-nav__container"> <a href="../../../.." class="md-nav__link "> <span class="md-ellipsis"> Home </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> Home </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../getting_started/concepts/" class="md-nav__link"> <span class="md-ellipsis"> High-Level Concepts </span> </a> </li> <li class="md-nav__item"> <a href="../../../../getting_started/installation/" class="md-nav__link"> <span class="md-ellipsis"> Installation and Setup </span> </a> </li> <li class="md-nav__item"> <a href="../../../../getting_started/reading/" class="md-nav__link"> <span class="md-ellipsis"> How to read these docs </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1_5" > <label class="md-nav__link" for="__nav_1_5" id="__nav_1_5_label" tabindex="0"> <span class="md-ellipsis"> Starter Examples </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_1_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_1_5"> <span class="md-nav__icon md-icon"></span> Starter Examples </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../getting_started/starter_example/" class="md-nav__link"> <span class="md-ellipsis"> Starter Tutorial </span> </a> </li> <li class="md-nav__item"> <a href="../../../../getting_started/starter_example_local/" class="md-nav__link"> <span class="md-ellipsis"> Starter Tutorial </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../getting_started/discover_llamaindex/" class="md-nav__link"> <span class="md-ellipsis"> Discover LlamaIndex Video Series </span> </a> </li> <li class="md-nav__item"> <a href="../../../../getting_started/customization/" class="md-nav__link"> <span class="md-ellipsis"> Frequently Asked Questions (FAQ) </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1_8" > <div class="md-nav__link md-nav__container"> <a href="../../../../getting_started/starter_tools/" class="md-nav__link "> <span class="md-ellipsis"> Starter Tools </span> </a> <label class="md-nav__link " for="__nav_1_8" id="__nav_1_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_1_8_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_1_8"> <span class="md-nav__icon md-icon"></span> Starter Tools </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../getting_started/starter_tools/rag_cli/" class="md-nav__link"> <span class="md-ellipsis"> RAG CLI </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_2" > <div class="md-nav__link md-nav__container"> <a href="../../../../understanding/" class="md-nav__link "> <span class="md-ellipsis"> Learn </span> </a> <label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="0"> <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="false"> <label class="md-nav__title" for="__nav_2"> <span class="md-nav__icon md-icon"></span> Learn </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../understanding/using_llms/using_llms/" class="md-nav__link"> <span class="md-ellipsis"> Using LLMs </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" > <div class="md-nav__link md-nav__container"> <a href="../../../../understanding/rag/" class="md-nav__link "> <span class="md-ellipsis"> Building a RAG pipeline </span> </a> <label class="md-nav__link " for="__nav_2_3" id="__nav_2_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_2_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_3"> <span class="md-nav__icon md-icon"></span> Building a RAG pipeline </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_2" > <label class="md-nav__link" for="__nav_2_3_2" id="__nav_2_3_2_label" tabindex="0"> <span class="md-ellipsis"> Loading & Ingestion </span> <span class="md-nav__icon md-icon"></span> </label> <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> Loading & Ingestion </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../understanding/loading/loading/" class="md-nav__link"> <span class="md-ellipsis"> Loading Data (Ingestion) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/loading/llamahub/" class="md-nav__link"> <span class="md-ellipsis"> LlamaHub </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/loading/llamacloud/" class="md-nav__link"> <span class="md-ellipsis"> Loading from LlamaCloud </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../understanding/indexing/indexing/" class="md-nav__link"> <span class="md-ellipsis"> Indexing & Embedding </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/storing/storing/" class="md-nav__link"> <span class="md-ellipsis"> Storing </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/querying/querying/" class="md-nav__link"> <span class="md-ellipsis"> Querying </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_4" > <div class="md-nav__link md-nav__container"> <a href="../../../../understanding/agent/" class="md-nav__link "> <span class="md-ellipsis"> Building an agent </span> </a> <label class="md-nav__link " for="__nav_2_4" id="__nav_2_4_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_4"> <span class="md-nav__icon md-icon"></span> Building an agent </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../understanding/agent/local_models/" class="md-nav__link"> <span class="md-ellipsis"> Agents with local models </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/agent/rag_agent/" class="md-nav__link"> <span class="md-ellipsis"> Adding RAG to an agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/agent/llamaparse/" class="md-nav__link"> <span class="md-ellipsis"> Enhancing with LlamaParse </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/agent/memory/" class="md-nav__link"> <span class="md-ellipsis"> Memory </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/agent/tools/" class="md-nav__link"> <span class="md-ellipsis"> Adding other tools </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/agent/multi_agents/" class="md-nav__link"> <span class="md-ellipsis"> Multi-agent workflows </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_5" > <div class="md-nav__link md-nav__container"> <a href="../../../../understanding/workflows/" class="md-nav__link "> <span class="md-ellipsis"> Building Workflows </span> </a> <label class="md-nav__link " for="__nav_2_5" id="__nav_2_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_2_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_5"> <span class="md-nav__icon md-icon"></span> Building Workflows </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../understanding/workflows/basic_flow/" class="md-nav__link"> <span class="md-ellipsis"> A basic workflow </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/workflows/branches_and_loops/" class="md-nav__link"> <span class="md-ellipsis"> Branches and loops </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/workflows/state/" class="md-nav__link"> <span class="md-ellipsis"> Maintaining state </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/workflows/stream/" class="md-nav__link"> <span class="md-ellipsis"> Streaming events </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/workflows/concurrent_execution/" class="md-nav__link"> <span class="md-ellipsis"> Concurrent execution </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/workflows/subclass/" class="md-nav__link"> <span class="md-ellipsis"> Subclassing workflows </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/workflows/nested/" class="md-nav__link"> <span class="md-ellipsis"> Nested workflows </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/workflows/observability/" class="md-nav__link"> <span class="md-ellipsis"> Observability </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/workflows/unbound_functions/" class="md-nav__link"> <span class="md-ellipsis"> Unbound syntax </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_6" > <div class="md-nav__link md-nav__container"> <a href="../../../../understanding/extraction/" class="md-nav__link "> <span class="md-ellipsis"> Structured Data Extraction </span> </a> <label class="md-nav__link " for="__nav_2_6" id="__nav_2_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_2_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_6"> <span class="md-nav__icon md-icon"></span> Structured Data Extraction </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../understanding/extraction/structured_llms/" class="md-nav__link"> <span class="md-ellipsis"> Using Structured LLMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/extraction/structured_prediction/" class="md-nav__link"> <span class="md-ellipsis"> Structured Prediction </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/extraction/lower_level/" class="md-nav__link"> <span class="md-ellipsis"> Lower-level extraction </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../understanding/tracing_and_debugging/tracing_and_debugging/" class="md-nav__link"> <span class="md-ellipsis"> Tracing and Debugging </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8" > <label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex="0"> <span class="md-ellipsis"> Evaluating </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_8"> <span class="md-nav__icon md-icon"></span> Evaluating </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../understanding/evaluating/evaluating/" class="md-nav__link"> <span class="md-ellipsis"> Evaluating </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_2" > <div class="md-nav__link md-nav__container"> <a href="../../../../understanding/evaluating/cost_analysis/" class="md-nav__link "> <span class="md-ellipsis"> Cost Analysis </span> </a> <label class="md-nav__link " for="__nav_2_8_2" id="__nav_2_8_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_8_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_8_2"> <span class="md-nav__icon md-icon"></span> Cost Analysis </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../understanding/evaluating/cost_analysis/usage_pattern/" class="md-nav__link"> <span class="md-ellipsis"> Usage Pattern </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_2_9" > <div class="md-nav__link md-nav__container"> <a href="../../../../understanding/putting_it_all_together/" class="md-nav__link "> <span class="md-ellipsis"> Putting it all Together </span> </a> <label class="md-nav__link " for="__nav_2_9" id="__nav_2_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_2_9_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_9"> <span class="md-nav__icon md-icon"></span> Putting it all Together </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_9_2" > <div class="md-nav__link md-nav__container"> <a href="../../../../understanding/putting_it_all_together/apps/" class="md-nav__link "> <span class="md-ellipsis"> Full-stack web application </span> </a> <label class="md-nav__link " for="__nav_2_9_2" id="__nav_2_9_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_9_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_9_2"> <span class="md-nav__icon md-icon"></span> Full-stack web application </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../understanding/putting_it_all_together/apps/fullstack_app_guide/" class="md-nav__link"> <span class="md-ellipsis"> A Guide to Building a Full-Stack Web App with LLamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../understanding/putting_it_all_together/apps/fullstack_with_delphic/" class="md-nav__link"> <span class="md-ellipsis"> A Guide to Building a Full-Stack LlamaIndex Web App with Delphic </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_9_3" > <div class="md-nav__link md-nav__container"> <a href="../../../../understanding/putting_it_all_together/q_and_a/" class="md-nav__link "> <span class="md-ellipsis"> Q&A Patterns </span> </a> <label class="md-nav__link " for="__nav_2_9_3" id="__nav_2_9_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_2_9_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_9_3"> <span class="md-nav__icon md-icon"></span> Q&A Patterns </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../understanding/putting_it_all_together/q_and_a/terms_definitions_tutorial/" class="md-nav__link"> <span class="md-ellipsis"> A Guide to Extracting Terms and Definitions </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_9_4" > <label class="md-nav__link" for="__nav_2_9_4" id="__nav_2_9_4_label" tabindex="0"> <span class="md-ellipsis"> Chatbots </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_9_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_9_4"> <span class="md-nav__icon md-icon"></span> Chatbots </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../understanding/putting_it_all_together/chatbots/building_a_chatbot/" class="md-nav__link"> <span class="md-ellipsis"> How to Build a Chatbot </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_9_5" > <div class="md-nav__link md-nav__container"> <a href="../../../../understanding/putting_it_all_together/structured_data/" class="md-nav__link "> <span class="md-ellipsis"> Structured data </span> </a> </div> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_9_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_9_5"> <span class="md-nav__icon md-icon"></span> Structured data </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../understanding/putting_it_all_together/agents/" class="md-nav__link"> <span class="md-ellipsis"> Agents </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="../../../../use_cases/" class="md-nav__link "> <span class="md-ellipsis"> Use Cases </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> Use Cases </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../use_cases/prompting/" class="md-nav__link"> <span class="md-ellipsis"> Prompting </span> </a> </li> <li class="md-nav__item"> <a href="../../../../use_cases/q_and_a/" class="md-nav__link"> <span class="md-ellipsis"> Question-Answering (RAG) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../use_cases/chatbots/" class="md-nav__link"> <span class="md-ellipsis"> Chatbots </span> </a> </li> <li class="md-nav__item"> <a href="../../../../use_cases/extraction/" class="md-nav__link"> <span class="md-ellipsis"> Structured Data Extraction </span> </a> </li> <li class="md-nav__item"> <a href="../../../../use_cases/agents/" class="md-nav__link"> <span class="md-ellipsis"> Agents </span> </a> </li> <li class="md-nav__item"> <a href="../../../../use_cases/multimodal/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal Applications </span> </a> </li> <li class="md-nav__item"> <a href="../../../../use_cases/fine_tuning/" class="md-nav__link"> <span class="md-ellipsis"> Fine-Tuning </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_4" > <div class="md-nav__link md-nav__container"> <a href="../../../../examples/" class="md-nav__link "> <span class="md-ellipsis"> Examples </span> </a> <label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4"> <span class="md-nav__icon md-icon"></span> Examples </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_4_2" > <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0"> <span class="md-ellipsis"> Agents </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_2"> <span class="md-nav__icon md-icon"></span> Agents </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/agent/Chatbot_SEC/" class="md-nav__link"> <span class="md-ellipsis"> 💬🤖 How to Build a Chatbot </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/agent_builder/" class="md-nav__link"> <span class="md-ellipsis"> GPT Builder Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/agent_runner/agent_around_query_pipeline_with_HyDE_for_PDFs/" class="md-nav__link"> <span class="md-ellipsis"> Building a Multi-PDF Agent using Query Pipelines and HyDE </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/agent_runner/agent_runner/" class="md-nav__link"> <span class="md-ellipsis"> Step-wise, Controllable Agents </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/agent_runner/agent_runner_rag_controllable/" class="md-nav__link"> <span class="md-ellipsis"> Controllable Agents for RAG </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/agent_runner/query_pipeline_agent/" class="md-nav__link"> <span class="md-ellipsis"> Building an Agent around a Query Pipeline </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/agent_workflow_basic/" class="md-nav__link"> <span class="md-ellipsis"> AgentWorkflow Basic Introduction </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/agent_workflow_multi/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Agent Research Workflow with AgentWorkflow </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/agentic_rag_using_vertex_ai/" class="md-nav__link"> <span class="md-ellipsis"> Agentic rag using vertex ai </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/agentic_rag_with_llamaindex_and_vertexai_managed_index/" class="md-nav__link"> <span class="md-ellipsis"> Agentic rag with llamaindex and vertexai managed index </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/anthropic_agent/" class="md-nav__link"> <span class="md-ellipsis"> Function Calling Anthropic Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/bedrock_converse_agent/" class="md-nav__link"> <span class="md-ellipsis"> Function Calling AWS Bedrock Converse Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/coa_agent/" class="md-nav__link"> <span class="md-ellipsis"> Chain-of-Abstraction LlamaPack </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/custom_agent/" class="md-nav__link"> <span class="md-ellipsis"> Building a Custom Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/dashscope_agent/" class="md-nav__link"> <span class="md-ellipsis"> DashScope Agent Tutorial </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/introspective_agent_toxicity_reduction/" class="md-nav__link"> <span class="md-ellipsis"> Introspective Agents: Performing Tasks With Reflection </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/lats_agent/" class="md-nav__link"> <span class="md-ellipsis"> Language Agent Tree Search </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/llm_compiler/" class="md-nav__link"> <span class="md-ellipsis"> LLM Compiler Agent Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/memory/composable_memory/" class="md-nav__link"> <span class="md-ellipsis"> Simple Composable Memory </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/memory/vector_memory/" class="md-nav__link"> <span class="md-ellipsis"> Vector Memory </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/mistral_agent/" class="md-nav__link"> <span class="md-ellipsis"> Function Calling Mistral Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/multi_document_agents-v1/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Document Agents (V1) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/multi_document_agents/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Document Agents </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/nvidia_agent/" class="md-nav__link"> <span class="md-ellipsis"> Function Calling NVIDIA Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/nvidia_document_research_assistant_for_blog_creation/" class="md-nav__link"> <span class="md-ellipsis"> Document Research Assistant for Blog Creation </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/nvidia_sub_question_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Sub Question Query Engine powered by NVIDIA NIMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_agent/" class="md-nav__link"> <span class="md-ellipsis"> Build your own OpenAI Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_agent_context_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Context-Augmented OpenAI Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_agent_lengthy_tools/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI Agent Workarounds for Lengthy Tool Descriptions </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_agent_parallel_function_calling/" class="md-nav__link"> <span class="md-ellipsis"> Single-Turn Multi-Function Calling OpenAI Agents </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_agent_query_cookbook/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI Agent + Query Engine Experimental Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_agent_query_plan/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI Agent Query Planning </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_agent_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Retrieval-Augmented OpenAI Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_agent_tool_call_parser/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI Agent with Tool Call Parser </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_agent_with_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI Agent with Query Engine Tools </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_assistant_agent/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI Assistant Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_assistant_query_cookbook/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI Assistant Advanced Retrieval Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_forced_function_call/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI agent: specifying a forced function call </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/openai_retrieval_benchmark/" class="md-nav__link"> <span class="md-ellipsis"> Benchmarking OpenAI Retrieval API (through Assistant Agent) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/react_agent/" class="md-nav__link"> <span class="md-ellipsis"> ReAct Agent - A Simple Intro with Calculator Tools </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/react_agent_with_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> ReAct Agent with Query Engine (RAG) Tools </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/return_direct_agent/" class="md-nav__link"> <span class="md-ellipsis"> Controlling Agent Reasoning Loop with Return Direct Tools </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/agent/structured_planner/" class="md-nav__link"> <span class="md-ellipsis"> Structured Planning Agent </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_4_3" > <label class="md-nav__link" for="__nav_4_3" id="__nav_4_3_label" tabindex="0"> <span class="md-ellipsis"> Chat Engines </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_3"> <span class="md-nav__icon md-icon"></span> Chat Engines </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/chat_engine/chat_engine_best/" class="md-nav__link"> <span class="md-ellipsis"> Chat Engine - Best Mode </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/chat_engine/chat_engine_condense_plus_context/" class="md-nav__link"> <span class="md-ellipsis"> Chat Engine - Condense Plus Context Mode </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/chat_engine/chat_engine_condense_question/" class="md-nav__link"> <span class="md-ellipsis"> Chat Engine - Condense Question Mode </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/chat_engine/chat_engine_context/" class="md-nav__link"> <span class="md-ellipsis"> Chat Engine - Context Mode </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/chat_engine/chat_engine_openai/" class="md-nav__link"> <span class="md-ellipsis"> Chat Engine - OpenAI Agent Mode </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/chat_engine/chat_engine_personality/" class="md-nav__link"> <span class="md-ellipsis"> Chat Engine with a Personality ✨ </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/chat_engine/chat_engine_react/" class="md-nav__link"> <span class="md-ellipsis"> Chat Engine - ReAct Agent Mode </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/chat_engine/chat_engine_repl/" class="md-nav__link"> <span class="md-ellipsis"> Chat Engine - Simple Mode REPL </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_4_4" > <label class="md-nav__link" for="__nav_4_4" id="__nav_4_4_label" tabindex="0"> <span class="md-ellipsis"> Cookbooks </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_4"> <span class="md-nav__icon md-icon"></span> Cookbooks </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/GraphRAG_v1/" class="md-nav__link"> <span class="md-ellipsis"> GraphRAG Implementation with LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/GraphRAG_v2/" class="md-nav__link"> <span class="md-ellipsis"> GraphRAG Implementation with LlamaIndex - V2 </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/airtrain/" class="md-nav__link"> <span class="md-ellipsis"> AirtrainAI Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/anthropic_haiku/" class="md-nav__link"> <span class="md-ellipsis"> Anthropic Haiku Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/cleanlab_tlm_rag/" class="md-nav__link"> <span class="md-ellipsis"> Trustworthy RAG with the Trustworthy Language Model </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/codestral/" class="md-nav__link"> <span class="md-ellipsis"> Codestral from MistralAI Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/cohere_retriever_eval/" class="md-nav__link"> <span class="md-ellipsis"> Cohere init8 and binary Embeddings Retrieval Evaluation </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/contextual_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Contextual Retrieval </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/crewai_llamaindex/" class="md-nav__link"> <span class="md-ellipsis"> CrewAI + LlamaIndex Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/llama3_cookbook/" class="md-nav__link"> <span class="md-ellipsis"> Llama3 Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/llama3_cookbook_gaudi/" class="md-nav__link"> <span class="md-ellipsis"> LLM Cookbook with Intel Gaudi </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/llama3_cookbook_groq/" class="md-nav__link"> <span class="md-ellipsis"> Llama3 Cookbook with Groq </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/llama3_cookbook_ollama_replicate/" class="md-nav__link"> <span class="md-ellipsis"> Llama3 Cookbook with Ollama and Replicate </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/mistralai/" class="md-nav__link"> <span class="md-ellipsis"> MistralAI Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/mixedbread_reranker/" class="md-nav__link"> <span class="md-ellipsis"> mixedbread Rerank Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/mongodb_retrieval_strategies/" class="md-nav__link"> <span class="md-ellipsis"> Optimizing for relevance using MongoDB and LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/oracleai_demo/" class="md-nav__link"> <span class="md-ellipsis"> Oracle AI Vector Search with Document Processing </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/oreilly_course_cookbooks/Module-2/Components_Of_LlamaIndex/" class="md-nav__link"> <span class="md-ellipsis"> Components Of LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/oreilly_course_cookbooks/Module-3/Evaluating_RAG_Systems/" class="md-nav__link"> <span class="md-ellipsis"> Evaluating RAG Systems </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/oreilly_course_cookbooks/Module-4/Ingestion_Pipeline/" class="md-nav__link"> <span class="md-ellipsis"> Ingestion Pipeline </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/oreilly_course_cookbooks/Module-4/Metadata_Extraction/" class="md-nav__link"> <span class="md-ellipsis"> Metadata Extraction </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/oreilly_course_cookbooks/Module-5/Observability/" class="md-nav__link"> <span class="md-ellipsis"> Observability </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/oreilly_course_cookbooks/Module-6/Agents/" class="md-nav__link"> <span class="md-ellipsis"> Agents </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/oreilly_course_cookbooks/Module-6/Router_And_SubQuestion_QueryEngine/" class="md-nav__link"> <span class="md-ellipsis"> Router QueryEngine and SubQuestion QueryEngine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/oreilly_course_cookbooks/Module-7/Multi_Modal_RAG_System/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal RAG System </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/oreilly_course_cookbooks/Module-8/Advanced_RAG_with_LlamaParse/" class="md-nav__link"> <span class="md-ellipsis"> Advanced RAG with LlamaParse </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/prometheus2_cookbook/" class="md-nav__link"> <span class="md-ellipsis"> Prometheus-2 Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/cookbooks/toolhouse_llamaindex/" class="md-nav__link"> <span class="md-ellipsis"> Sales Prospecting Workflow with Toolhouse </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_4_5" > <label class="md-nav__link" for="__nav_4_5" id="__nav_4_5_label" tabindex="0"> <span class="md-ellipsis"> Customization </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_5"> <span class="md-nav__icon md-icon"></span> Customization </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/customization/llms/AzureOpenAI/" class="md-nav__link"> <span class="md-ellipsis"> Azure OpenAI </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/customization/llms/SimpleIndexDemo-ChatGPT/" class="md-nav__link"> <span class="md-ellipsis"> ChatGPT </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/customization/llms/SimpleIndexDemo-Huggingface_camel/" class="md-nav__link"> <span class="md-ellipsis"> HuggingFace LLM - Camel-5b </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/customization/llms/SimpleIndexDemo-Huggingface_stablelm/" class="md-nav__link"> <span class="md-ellipsis"> HuggingFace LLM - StableLM </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/customization/prompts/chat_prompts/" class="md-nav__link"> <span class="md-ellipsis"> Chat Prompts Customization </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/customization/prompts/completion_prompts/" class="md-nav__link"> <span class="md-ellipsis"> Completion Prompts Customization </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/customization/streaming/SimpleIndexDemo-streaming/" class="md-nav__link"> <span class="md-ellipsis"> Streaming </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/customization/streaming/chat_engine_condense_question_stream_response/" class="md-nav__link"> <span class="md-ellipsis"> Streaming for Chat Engine - Condense Question Mode </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_4_6" > <label class="md-nav__link" for="__nav_4_6" id="__nav_4_6_label" tabindex="0"> <span class="md-ellipsis"> Data Connectors </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_6"> <span class="md-nav__icon md-icon"></span> Data Connectors </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/ChromaDemo/" class="md-nav__link"> <span class="md-ellipsis"> Chroma Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/DashvectorReaderDemo/" class="md-nav__link"> <span class="md-ellipsis"> DashVector Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/DatabaseReaderDemo/" class="md-nav__link"> <span class="md-ellipsis"> Database Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/DeepLakeReader/" class="md-nav__link"> <span class="md-ellipsis"> DeepLake Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/DiscordDemo/" class="md-nav__link"> <span class="md-ellipsis"> Discord Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/DoclingReaderDemo/" class="md-nav__link"> <span class="md-ellipsis"> Docling Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/FaissDemo/" class="md-nav__link"> <span class="md-ellipsis"> Faiss Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/GithubRepositoryReaderDemo/" class="md-nav__link"> <span class="md-ellipsis"> Github Repo Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/GoogleChatDemo/" class="md-nav__link"> <span class="md-ellipsis"> Google Chat Reader Test </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/GoogleDocsDemo/" class="md-nav__link"> <span class="md-ellipsis"> Google Docs Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/GoogleDriveDemo/" class="md-nav__link"> <span class="md-ellipsis"> Google Drive Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/GoogleMapsTextSearchReaderDemo/" class="md-nav__link"> <span class="md-ellipsis"> Google Maps Text Search Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/GoogleSheetsDemo/" class="md-nav__link"> <span class="md-ellipsis"> Google Sheets Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/MakeDemo/" class="md-nav__link"> <span class="md-ellipsis"> Make Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/MboxReaderDemo/" class="md-nav__link"> <span class="md-ellipsis"> Mbox Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/MilvusReaderDemo/" class="md-nav__link"> <span class="md-ellipsis"> MilvusReader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/MongoDemo/" class="md-nav__link"> <span class="md-ellipsis"> MongoDB Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/MyScaleReaderDemo/" class="md-nav__link"> <span class="md-ellipsis"> MyScale Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/NotionDemo/" class="md-nav__link"> <span class="md-ellipsis"> Notion Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/ObsidianReaderDemo/" class="md-nav__link"> <span class="md-ellipsis"> Obsidian Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/PathwayReaderDemo/" class="md-nav__link"> <span class="md-ellipsis"> Pathway Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/PreprocessReaderDemo/" class="md-nav__link"> <span class="md-ellipsis"> Preprocess </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/PsychicDemo/" class="md-nav__link"> <span class="md-ellipsis"> Psychic Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/QdrantDemo/" class="md-nav__link"> <span class="md-ellipsis"> Qdrant Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/SlackDemo/" class="md-nav__link"> <span class="md-ellipsis"> Slack Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/TwitterDemo/" class="md-nav__link"> <span class="md-ellipsis"> Twitter Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/WeaviateDemo/" class="md-nav__link"> <span class="md-ellipsis"> Weaviate Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/WebPageDemo/" class="md-nav__link"> <span class="md-ellipsis"> Web Page Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/ZyteSerpDemo/" class="md-nav__link"> <span class="md-ellipsis"> Zyte Serp Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/deplot/DeplotReader/" class="md-nav__link"> <span class="md-ellipsis"> Deplot Reader Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/html_tag_reader/" class="md-nav__link"> <span class="md-ellipsis"> HTML Tag Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/oracleai/" class="md-nav__link"> <span class="md-ellipsis"> Oracle AI Vector Search: Document Processing </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/simple_directory_reader/" class="md-nav__link"> <span class="md-ellipsis"> Simple Directory Reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/simple_directory_reader_parallel/" class="md-nav__link"> <span class="md-ellipsis"> Parallel Processing SimpleDirectoryReader </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/data_connectors/simple_directory_reader_remote_fs/" class="md-nav__link"> <span class="md-ellipsis"> Simple Directory Reader over a Remote FileSystem </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_4_7" > <label class="md-nav__link" for="__nav_4_7" id="__nav_4_7_label" tabindex="0"> <span class="md-ellipsis"> Discover LlamaIndex </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_7_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_7"> <span class="md-nav__icon md-icon"></span> Discover LlamaIndex </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/discover_llamaindex/document_management/Discord_Thread_Management/" class="md-nav__link"> <span class="md-ellipsis"> Discord Thread Management </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_4_8" > <label class="md-nav__link" for="__nav_4_8" id="__nav_4_8_label" tabindex="0"> <span class="md-ellipsis"> Docstores </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_8_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_8"> <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="../../../../examples/docstore/AzureDocstoreDemo/" class="md-nav__link"> <span class="md-ellipsis"> Demo: Azure Table Storage as a Docstore </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/docstore/DocstoreDemo/" class="md-nav__link"> <span class="md-ellipsis"> Docstore Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/docstore/DynamoDBDocstoreDemo/" class="md-nav__link"> <span class="md-ellipsis"> Dynamo DB Docstore Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/docstore/FirestoreDemo/" class="md-nav__link"> <span class="md-ellipsis"> Firestore Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/docstore/MongoDocstoreDemo/" class="md-nav__link"> <span class="md-ellipsis"> MongoDB Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/docstore/RedisDocstoreIndexStoreDemo/" class="md-nav__link"> <span class="md-ellipsis"> Redis Docstore+Index Store Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/docstore/TablestoreDocstoreDemo/" class="md-nav__link"> <span class="md-ellipsis"> Tablestore Demo </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_4_9" > <label class="md-nav__link" for="__nav_4_9" id="__nav_4_9_label" tabindex="0"> <span class="md-ellipsis"> Embeddings </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_9_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_9"> <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="../../../../examples/embeddings/Anyscale/" class="md-nav__link"> <span class="md-ellipsis"> Anyscale Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/Langchain/" class="md-nav__link"> <span class="md-ellipsis"> LangChain Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/OpenAI/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/alephalpha/" class="md-nav__link"> <span class="md-ellipsis"> Aleph Alpha Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/bedrock/" class="md-nav__link"> <span class="md-ellipsis"> Bedrock Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/clarifai/" class="md-nav__link"> <span class="md-ellipsis"> Embeddings with Clarifai </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/cloudflare_workersai/" class="md-nav__link"> <span class="md-ellipsis"> Cloudflare Workers AI Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/cohereai/" class="md-nav__link"> <span class="md-ellipsis"> CohereAI Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/custom_embeddings/" class="md-nav__link"> <span class="md-ellipsis"> Custom Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/dashscope_embeddings/" class="md-nav__link"> <span class="md-ellipsis"> Dashscope embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/databricks/" class="md-nav__link"> <span class="md-ellipsis"> Databricks Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/deepinfra/" class="md-nav__link"> <span class="md-ellipsis"> Deepinfra </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/elasticsearch/" class="md-nav__link"> <span class="md-ellipsis"> Elasticsearch Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/fastembed/" class="md-nav__link"> <span class="md-ellipsis"> Qdrant FastEmbed Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/fireworks/" class="md-nav__link"> <span class="md-ellipsis"> Fireworks Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/gemini/" class="md-nav__link"> <span class="md-ellipsis"> Google Gemini Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/gigachat/" class="md-nav__link"> <span class="md-ellipsis"> Gigachat </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/google_palm/" class="md-nav__link"> <span class="md-ellipsis"> Google PaLM Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/huggingface/" class="md-nav__link"> <span class="md-ellipsis"> Local Embeddings with HuggingFace </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/ibm_watsonx/" class="md-nav__link"> <span class="md-ellipsis"> IBM watsonx.ai </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/ipex_llm/" class="md-nav__link"> <span class="md-ellipsis"> Local Embeddings with IPEX-LLM on Intel CPU </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/ipex_llm_gpu/" class="md-nav__link"> <span class="md-ellipsis"> Local Embeddings with IPEX-LLM on Intel GPU </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/jina_embeddings/" class="md-nav__link"> <span class="md-ellipsis"> Jina 8K Context Window Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/jinaai_embeddings/" class="md-nav__link"> <span class="md-ellipsis"> Jina Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/llamafile/" class="md-nav__link"> <span class="md-ellipsis"> Llamafile Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/llm_rails/" class="md-nav__link"> <span class="md-ellipsis"> LLMRails Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/mistralai/" class="md-nav__link"> <span class="md-ellipsis"> MistralAI Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/mixedbreadai/" class="md-nav__link"> <span class="md-ellipsis"> Mixedbread AI Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/modelscope/" class="md-nav__link"> <span class="md-ellipsis"> ModelScope Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/nebius/" class="md-nav__link"> <span class="md-ellipsis"> Nebius Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/nomic/" class="md-nav__link"> <span class="md-ellipsis"> Nomic Embedding </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/nvidia/" class="md-nav__link"> <span class="md-ellipsis"> NVIDIA NIMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/oci_data_science/" class="md-nav__link"> <span class="md-ellipsis"> Oracle Cloud Infrastructure (OCI) Data Science Service </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/oci_genai/" class="md-nav__link"> <span class="md-ellipsis"> Oracle Cloud Infrastructure Generative AI </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/ollama_embedding/" class="md-nav__link"> <span class="md-ellipsis"> Ollama Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/openvino/" class="md-nav__link"> <span class="md-ellipsis"> Local Embeddings with OpenVINO </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/optimum_intel/" class="md-nav__link"> <span class="md-ellipsis"> Optimized Embedding Model using Optimum-Intel </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/oracleai/" class="md-nav__link"> <span class="md-ellipsis"> Oracle AI Vector Search: Generate Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/premai/" class="md-nav__link"> <span class="md-ellipsis"> PremAI Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/sagemaker_embedding_endpoint/" class="md-nav__link"> <span class="md-ellipsis"> Interacting with Embeddings deployed in Amazon SageMaker Endpoint with LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/text_embedding_inference/" class="md-nav__link"> <span class="md-ellipsis"> Text Embedding Inference </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/textembed/" class="md-nav__link"> <span class="md-ellipsis"> TextEmbed - Embedding Inference Server </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/together/" class="md-nav__link"> <span class="md-ellipsis"> Together AI Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/upstage/" class="md-nav__link"> <span class="md-ellipsis"> Upstage Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/vertex_embedding_endpoint/" class="md-nav__link"> <span class="md-ellipsis"> Interacting with Embeddings deployed in Vertex AI Endpoint with LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/voyageai/" class="md-nav__link"> <span class="md-ellipsis"> VoyageAI Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/embeddings/yandexgpt/" class="md-nav__link"> <span class="md-ellipsis"> Yandexgpt </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_4_10" > <label class="md-nav__link" for="__nav_4_10" id="__nav_4_10_label" tabindex="0"> <span class="md-ellipsis"> Evaluation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_10_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_10"> <span class="md-nav__icon md-icon"></span> Evaluation </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/evaluation/BeirEvaluation/" class="md-nav__link"> <span class="md-ellipsis"> BEIR Out of Domain Benchmark </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/Deepeval/" class="md-nav__link"> <span class="md-ellipsis"> 🚀 RAG/LLM Evaluators - DeepEval </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/HotpotQADistractor/" class="md-nav__link"> <span class="md-ellipsis"> HotpotQADistractor Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/QuestionGeneration/" class="md-nav__link"> <span class="md-ellipsis"> QuestionGeneration </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/RAGChecker/" class="md-nav__link"> <span class="md-ellipsis"> RAGChecker: A Fine-grained Evaluation Framework For Diagnosing RAG </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/RetryQuery/" class="md-nav__link"> <span class="md-ellipsis"> Self Correcting Query Engines - Evaluation & Retry </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/TonicValidateEvaluators/" class="md-nav__link"> <span class="md-ellipsis"> Tonic Validate Evaluators </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/UpTrain/" class="md-nav__link"> <span class="md-ellipsis"> How to use UpTrain with LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/answer_and_context_relevancy/" class="md-nav__link"> <span class="md-ellipsis"> Answer Relevancy and Context Relevancy Evaluations </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/batch_eval/" class="md-nav__link"> <span class="md-ellipsis"> BatchEvalRunner - Running Multiple Evaluations </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/correctness_eval/" class="md-nav__link"> <span class="md-ellipsis"> Correctness Evaluator </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/faithfulness_eval/" class="md-nav__link"> <span class="md-ellipsis"> Faithfulness Evaluator </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/guideline_eval/" class="md-nav__link"> <span class="md-ellipsis"> Guideline Evaluator </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/mt_bench_human_judgement/" class="md-nav__link"> <span class="md-ellipsis"> Benchmarking LLM Evaluators On The MT-Bench Human Judgement </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/mt_bench_single_grading/" class="md-nav__link"> <span class="md-ellipsis"> Benchmarking LLM Evaluators On A Mini MT-Bench (Single Grading) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/multi_modal/multi_modal_rag_evaluation/" class="md-nav__link"> <span class="md-ellipsis"> Evaluating Multi-Modal RAG </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/pairwise_eval/" class="md-nav__link"> <span class="md-ellipsis"> Pairwise Evaluator </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/prometheus_evaluation/" class="md-nav__link"> <span class="md-ellipsis"> Evaluation using Prometheus model </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/relevancy_eval/" class="md-nav__link"> <span class="md-ellipsis"> Relevancy Evaluator </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/retrieval/retriever_eval/" class="md-nav__link"> <span class="md-ellipsis"> Retrieval Evaluation </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/semantic_similarity_eval/" class="md-nav__link"> <span class="md-ellipsis"> Embedding Similarity Evaluator </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/evaluation/step_back_argilla/" class="md-nav__link"> <span class="md-ellipsis"> 🏔️ Step-back prompting with workflows for RAG with Argilla </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_4_11" > <label class="md-nav__link" for="__nav_4_11" id="__nav_4_11_label" tabindex="0"> <span class="md-ellipsis"> Finetuning </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_11_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_11"> <span class="md-nav__icon md-icon"></span> Finetuning </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/finetuning/cross_encoder_finetuning/cross_encoder_finetuning/" class="md-nav__link"> <span class="md-ellipsis"> How to Finetune a cross-encoder using LLamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/finetuning/embeddings/finetune_corpus_embedding/" class="md-nav__link"> <span class="md-ellipsis"> Finetuning corpus embeddings using NUDGE </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/finetuning/embeddings/finetune_embedding/" class="md-nav__link"> <span class="md-ellipsis"> Finetune Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/finetuning/embeddings/finetune_embedding_adapter/" class="md-nav__link"> <span class="md-ellipsis"> Finetuning an Adapter on Top of any Black-Box Embedding Model </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/finetuning/llm_judge/correctness/finetune_llm_judge_single_grading_correctness/" class="md-nav__link"> <span class="md-ellipsis"> Knowledge Distillation For Fine-Tuning A GPT-3.5 Judge (Correctness) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/finetuning/llm_judge/pairwise/finetune_llm_judge/" class="md-nav__link"> <span class="md-ellipsis"> Knowledge Distillation For Fine-Tuning A GPT-3.5 Judge (Pairwise) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/finetuning/mistralai_fine_tuning/" class="md-nav__link"> <span class="md-ellipsis"> Fine Tuning MistralAI models using Finetuning API </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/finetuning/openai_fine_tuning/" class="md-nav__link"> <span class="md-ellipsis"> Fine Tuning GPT-3.5-Turbo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/finetuning/openai_fine_tuning_functions/" class="md-nav__link"> <span class="md-ellipsis"> Fine Tuning with Function Calling </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/finetuning/react_agent/react_agent_finetune/" class="md-nav__link"> <span class="md-ellipsis"> Fine-tuning a gpt-3.5 ReAct Agent on Better Chain of Thought </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/finetuning/rerankers/cohere_custom_reranker/" class="md-nav__link"> <span class="md-ellipsis"> Custom Cohere Reranker </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/finetuning/router/router_finetune/" class="md-nav__link"> <span class="md-ellipsis"> Router Fine-tuning </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_4_12" > <label class="md-nav__link" for="__nav_4_12" id="__nav_4_12_label" tabindex="0"> <span class="md-ellipsis"> Ingestion </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_12_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_12"> <span class="md-nav__icon md-icon"></span> Ingestion </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/ingestion/advanced_ingestion_pipeline/" class="md-nav__link"> <span class="md-ellipsis"> Advanced Ingestion Pipeline </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/ingestion/async_ingestion_pipeline/" class="md-nav__link"> <span class="md-ellipsis"> Async Ingestion Pipeline + Metadata Extraction </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/ingestion/document_management_pipeline/" class="md-nav__link"> <span class="md-ellipsis"> Ingestion Pipeline + Document Management </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/ingestion/ingestion_gdrive/" class="md-nav__link"> <span class="md-ellipsis"> Building a Live RAG Pipeline over Google Drive Files </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/ingestion/parallel_execution_ingestion_pipeline/" class="md-nav__link"> <span class="md-ellipsis"> Parallelizing Ingestion Pipeline </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/ingestion/redis_ingestion_pipeline/" class="md-nav__link"> <span class="md-ellipsis"> Redis Ingestion Pipeline </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_4_13" > <label class="md-nav__link" for="__nav_4_13" id="__nav_4_13_label" tabindex="0"> <span class="md-ellipsis"> LLMs </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_13_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_13"> <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="../../../../examples/llm/ai21/" class="md-nav__link"> <span class="md-ellipsis"> AI21 </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/alephalpha/" class="md-nav__link"> <span class="md-ellipsis"> Aleph Alpha </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/anthropic/" class="md-nav__link"> <span class="md-ellipsis"> Anthropic </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/anthropic_prompt_caching/" class="md-nav__link"> <span class="md-ellipsis"> Anthropic Prompt Caching </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/anyscale/" class="md-nav__link"> <span class="md-ellipsis"> Anyscale </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/azure_inference/" class="md-nav__link"> <span class="md-ellipsis"> Azure AI model inference </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/azure_openai/" class="md-nav__link"> <span class="md-ellipsis"> Azure OpenAI </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/bedrock/" class="md-nav__link"> <span class="md-ellipsis"> Bedrock </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/bedrock_converse/" class="md-nav__link"> <span class="md-ellipsis"> Bedrock Converse </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/cerebras/" class="md-nav__link"> <span class="md-ellipsis"> Cerebras </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/clarifai/" class="md-nav__link"> <span class="md-ellipsis"> Clarifai LLM </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/cleanlab/" class="md-nav__link"> <span class="md-ellipsis"> Cleanlab Trustworthy Language Model </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/cohere/" class="md-nav__link"> <span class="md-ellipsis"> Cohere </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/dashscope/" class="md-nav__link"> <span class="md-ellipsis"> DashScope LLMS </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/databricks/" class="md-nav__link"> <span class="md-ellipsis"> DataBricks </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/deepinfra/" class="md-nav__link"> <span class="md-ellipsis"> DeepInfra </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/deepseek/" class="md-nav__link"> <span class="md-ellipsis"> DeepSeek </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/everlyai/" class="md-nav__link"> <span class="md-ellipsis"> EverlyAI </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/fireworks/" class="md-nav__link"> <span class="md-ellipsis"> Fireworks </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/fireworks_cookbook/" class="md-nav__link"> <span class="md-ellipsis"> Fireworks Function Calling Cookbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/friendli/" class="md-nav__link"> <span class="md-ellipsis"> Friendli </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/gemini/" class="md-nav__link"> <span class="md-ellipsis"> Gemini </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/groq/" class="md-nav__link"> <span class="md-ellipsis"> Groq </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/huggingface/" class="md-nav__link"> <span class="md-ellipsis"> Hugging Face LLMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/ibm_watsonx/" class="md-nav__link"> <span class="md-ellipsis"> IBM watsonx.ai </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/ipex_llm/" class="md-nav__link"> <span class="md-ellipsis"> IPEX-LLM on Intel CPU </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/ipex_llm_gpu/" class="md-nav__link"> <span class="md-ellipsis"> IPEX-LLM on Intel GPU </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/konko/" class="md-nav__link"> <span class="md-ellipsis"> Konko </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/langchain/" class="md-nav__link"> <span class="md-ellipsis"> Langchain </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/litellm/" class="md-nav__link"> <span class="md-ellipsis"> LiteLLM </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/llama_2/" class="md-nav__link"> <span class="md-ellipsis"> Replicate - Llama 2 13B </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/llama_2_rap_battle/" class="md-nav__link"> <span class="md-ellipsis"> 🦙 x 🦙 Rap Battle </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/llama_api/" class="md-nav__link"> <span class="md-ellipsis"> Llama API </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/llama_cpp/" class="md-nav__link"> <span class="md-ellipsis"> LlamaCPP </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/llamafile/" class="md-nav__link"> <span class="md-ellipsis"> llamafile </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/llm_predictor/" class="md-nav__link"> <span class="md-ellipsis"> LLM Predictor </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/lmstudio/" class="md-nav__link"> <span class="md-ellipsis"> LM Studio </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/localai/" class="md-nav__link"> <span class="md-ellipsis"> LocalAI </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/maritalk/" class="md-nav__link"> <span class="md-ellipsis"> Maritalk </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/mistral_rs/" class="md-nav__link"> <span class="md-ellipsis"> MistralRS LLM </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/mistralai/" class="md-nav__link"> <span class="md-ellipsis"> MistralAI </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/modelscope/" class="md-nav__link"> <span class="md-ellipsis"> ModelScope LLMS </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/monsterapi/" class="md-nav__link"> <span class="md-ellipsis"> Monster API <> LLamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/mymagic/" class="md-nav__link"> <span class="md-ellipsis"> MyMagic AI LLM </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/nebius/" class="md-nav__link"> <span class="md-ellipsis"> Nebius LLMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/neutrino/" class="md-nav__link"> <span class="md-ellipsis"> Neutrino AI </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/nvidia/" class="md-nav__link"> <span class="md-ellipsis"> NVIDIA NIMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/nvidia_nim/" class="md-nav__link"> <span class="md-ellipsis"> NVIDIA NIMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/nvidia_tensorrt/" class="md-nav__link"> <span class="md-ellipsis"> Nvidia TensorRT-LLM </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/nvidia_text_completion/" class="md-nav__link"> <span class="md-ellipsis"> NVIDIA's LLM Text Completion API </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/nvidia_triton/" class="md-nav__link"> <span class="md-ellipsis"> Nvidia Triton </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/oci_data_science/" class="md-nav__link"> <span class="md-ellipsis"> Oracle Cloud Infrastructure Data Science </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/oci_genai/" class="md-nav__link"> <span class="md-ellipsis"> Oracle Cloud Infrastructure Generative AI </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/octoai/" class="md-nav__link"> <span class="md-ellipsis"> OctoAI </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/ollama/" class="md-nav__link"> <span class="md-ellipsis"> Ollama - Llama 3.1 </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/ollama_gemma/" class="md-nav__link"> <span class="md-ellipsis"> Ollama - Gemma </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/openai/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/openai_json_vs_function_calling/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI JSON Mode vs. Function Calling for Data Extraction </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/openllm/" class="md-nav__link"> <span class="md-ellipsis"> OpenLLM </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/openrouter/" class="md-nav__link"> <span class="md-ellipsis"> OpenRouter </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/openvino-genai/" class="md-nav__link"> <span class="md-ellipsis"> OpenVINO GenAI LLMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/openvino/" class="md-nav__link"> <span class="md-ellipsis"> OpenVINO LLMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/optimum_intel/" class="md-nav__link"> <span class="md-ellipsis"> Optimum Intel LLMs optimized with IPEX backend </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/paieas/" class="md-nav__link"> <span class="md-ellipsis"> AlibabaCloud-PaiEas </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/palm/" class="md-nav__link"> <span class="md-ellipsis"> PaLM </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/perplexity/" class="md-nav__link"> <span class="md-ellipsis"> Perplexity </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/pipeshift/" class="md-nav__link"> <span class="md-ellipsis"> Pipeshift </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/portkey/" class="md-nav__link"> <span class="md-ellipsis"> Portkey </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/predibase/" class="md-nav__link"> <span class="md-ellipsis"> Predibase </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/premai/" class="md-nav__link"> <span class="md-ellipsis"> PremAI LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/qianfan/" class="md-nav__link"> <span class="md-ellipsis"> Client of Baidu Intelligent Cloud's Qianfan LLM Platform </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/rungpt/" class="md-nav__link"> <span class="md-ellipsis"> RunGPT </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/sagemaker_endpoint_llm/" class="md-nav__link"> <span class="md-ellipsis"> Interacting with LLM deployed in Amazon SageMaker Endpoint with LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/sambanovasystems/" class="md-nav__link"> <span class="md-ellipsis"> SambaNova Systems </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/together/" class="md-nav__link"> <span class="md-ellipsis"> Together AI LLM </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/upstage/" class="md-nav__link"> <span class="md-ellipsis"> Upstage </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/vertex/" class="md-nav__link"> <span class="md-ellipsis"> Vertex AI </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/vicuna/" class="md-nav__link"> <span class="md-ellipsis"> Replicate - Vicuna 13B </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/vllm/" class="md-nav__link"> <span class="md-ellipsis"> vLLM </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/xinference_local_deployment/" class="md-nav__link"> <span class="md-ellipsis"> Xorbits Inference </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llm/yi/" class="md-nav__link"> <span class="md-ellipsis"> Yi </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_4_14" > <label class="md-nav__link" for="__nav_4_14" id="__nav_4_14_label" tabindex="0"> <span class="md-ellipsis"> Llama Datasets </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_14_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_14"> <span class="md-nav__icon md-icon"></span> Llama Datasets </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/llama_dataset/downloading_llama_datasets/" class="md-nav__link"> <span class="md-ellipsis"> Downloading a LlamaDataset from LlamaHub </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llama_dataset/labelled-rag-datasets/" class="md-nav__link"> <span class="md-ellipsis"> Benchmarking RAG Pipelines With A </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llama_dataset/ragdataset_submission_template/" class="md-nav__link"> <span class="md-ellipsis"> Submission Template Notebook </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llama_dataset/uploading_llama_dataset/" class="md-nav__link"> <span class="md-ellipsis"> Contributing a LlamaDataset To LlamaHub </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_4_15" > <label class="md-nav__link" for="__nav_4_15" id="__nav_4_15_label" tabindex="0"> <span class="md-ellipsis"> Llama Hub </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_15_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_15"> <span class="md-nav__icon md-icon"></span> Llama Hub </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/llama_hub/llama_hub/" class="md-nav__link"> <span class="md-ellipsis"> LlamaHub Demostration </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llama_hub/llama_pack_ollama/" class="md-nav__link"> <span class="md-ellipsis"> Ollama Llama Pack Example </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llama_hub/llama_pack_resume/" class="md-nav__link"> <span class="md-ellipsis"> Llama Pack - Resume Screener 📄 </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/llama_hub/llama_packs_example/" class="md-nav__link"> <span class="md-ellipsis"> Llama Packs Example </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_4_16" > <label class="md-nav__link" for="__nav_4_16" id="__nav_4_16_label" tabindex="0"> <span class="md-ellipsis"> Low Level </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_16_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_16"> <span class="md-nav__icon md-icon"></span> Low Level </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/low_level/evaluation/" class="md-nav__link"> <span class="md-ellipsis"> Building Evaluation from Scratch </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/low_level/fusion_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Building an Advanced Fusion Retriever from Scratch </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/low_level/ingestion/" class="md-nav__link"> <span class="md-ellipsis"> Building Data Ingestion from Scratch </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/low_level/oss_ingestion_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Building RAG from Scratch (Open-source only!) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/low_level/response_synthesis/" class="md-nav__link"> <span class="md-ellipsis"> Building Response Synthesis from Scratch </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/low_level/retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Building Retrieval from Scratch </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/low_level/router/" class="md-nav__link"> <span class="md-ellipsis"> Building a Router from Scratch </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/low_level/vector_store/" class="md-nav__link"> <span class="md-ellipsis"> Building a (Very Simple) Vector Store from Scratch </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_4_17" > <label class="md-nav__link" for="__nav_4_17" id="__nav_4_17_label" tabindex="0"> <span class="md-ellipsis"> Managed Indexes </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_17_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_17"> <span class="md-nav__icon md-icon"></span> Managed Indexes </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/managed/BGEM3Demo/" class="md-nav__link"> <span class="md-ellipsis"> BGEM3Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/managed/GoogleDemo/" class="md-nav__link"> <span class="md-ellipsis"> Google Generative Language Semantic Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/managed/PostgresMLDemo/" class="md-nav__link"> <span class="md-ellipsis"> PostgresML Managed Index </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/managed/VertexAIDemo/" class="md-nav__link"> <span class="md-ellipsis"> Google Cloud LlamaIndex on Vertex AI for RAG </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/managed/manage_retrieval_benchmark/" class="md-nav__link"> <span class="md-ellipsis"> Semantic Retriever Benchmark </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/managed/vectaraDemo/" class="md-nav__link"> <span class="md-ellipsis"> Vectara Managed Index </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/managed/zcpDemo/" class="md-nav__link"> <span class="md-ellipsis"> Managed Index with Zilliz Cloud Pipelines </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_4_18" > <label class="md-nav__link" for="__nav_4_18" id="__nav_4_18_label" tabindex="0"> <span class="md-ellipsis"> Memory </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_18_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_18"> <span class="md-nav__icon md-icon"></span> Memory </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/memory/Mem0Memory/" class="md-nav__link"> <span class="md-ellipsis"> Mem0 </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_4_19" > <label class="md-nav__link" for="__nav_4_19" id="__nav_4_19_label" tabindex="0"> <span class="md-ellipsis"> Metadata Extractors </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_19_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_19"> <span class="md-nav__icon md-icon"></span> Metadata Extractors </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/metadata_extraction/DocumentContextExtractor/" class="md-nav__link"> <span class="md-ellipsis"> Contextual Retrieval With Llama Index </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/metadata_extraction/EntityExtractionClimate/" class="md-nav__link"> <span class="md-ellipsis"> Entity Metadata Extraction </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/metadata_extraction/MarvinMetadataExtractorDemo/" class="md-nav__link"> <span class="md-ellipsis"> Metadata Extraction and Augmentation w/ Marvin </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/metadata_extraction/MetadataExtractionSEC/" class="md-nav__link"> <span class="md-ellipsis"> Extracting Metadata for Better Document Indexing and Understanding </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/metadata_extraction/MetadataExtraction_LLMSurvey/" class="md-nav__link"> <span class="md-ellipsis"> Automated Metadata Extraction for Better Retrieval + Synthesis </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/metadata_extraction/PydanticExtractor/" class="md-nav__link"> <span class="md-ellipsis"> Pydantic 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_4_20" > <label class="md-nav__link" for="__nav_4_20" id="__nav_4_20_label" tabindex="0"> <span class="md-ellipsis"> Multi-Modal </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_20_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_20"> <span class="md-nav__icon md-icon"></span> Multi-Modal </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/ChromaMultiModalDemo/" class="md-nav__link"> <span class="md-ellipsis"> Chroma Multi-Modal Demo with LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/anthropic_multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal LLM using Anthropic model for image reasoning </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/azure_openai_multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal LLM using Azure OpenAI GPT-4o mini for image reasoning </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/cohere_multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal Retrieval using Cohere Multi-Modal Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/dashscope_multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal LLM using DashScope qwen-vl model for image reasoning </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/gemini/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal LLM using Google's Gemini model for image understanding and build Retrieval Augmented Generation with LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/gpt4o_mm_structured_outputs/" class="md-nav__link"> <span class="md-ellipsis"> Multimodal Structured Outputs: GPT-4o vs. Other GPT-4 Variants </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/gpt4v_experiments_cot/" class="md-nav__link"> <span class="md-ellipsis"> GPT4-V Experiments with General, Specific questions and Chain Of Thought (COT) Prompting Technique. </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/gpt4v_multi_modal_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Advanced Multi-Modal Retrieval using GPT4V and Multi-Modal Index/Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/image_to_image_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Image to Image Retrieval using CLIP embedding and image correlation reasoning using GPT4V </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/llava_demo/" class="md-nav__link"> <span class="md-ellipsis"> LlaVa Demo with LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/llava_multi_modal_tesla_10q/" class="md-nav__link"> <span class="md-ellipsis"> Retrieval-Augmented Image Captioning </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/mistral_multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal LLM using Mistral for image reasoning </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/mm_agent/" class="md-nav__link"> <span class="md-ellipsis"> [Beta] Multi-modal ReAct Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/multi_modal_pydantic/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal GPT4V Pydantic Program </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/multi_modal_rag_nomic/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal RAG using Nomic Embed and Anthropic. </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/multi_modal_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal Retrieval using GPT text embedding and CLIP image embedding for Wikipedia Articles </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/multi_modal_video_RAG/" class="md-nav__link"> <span class="md-ellipsis"> Multimodal RAG for processing videos using OpenAI GPT4V and LanceDB vectorstore </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/multi_modal_videorag_videodb/" class="md-nav__link"> <span class="md-ellipsis"> Multimodal RAG with VideoDB </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/multimodal_rag_guardrail_gemini_llmguard_llmguard/" class="md-nav__link"> <span class="md-ellipsis"> Multimodal rag guardrail gemini llmguard llmguard </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/nebius_multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multimodal models with Nebius </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/nvidia_multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal LLM using NVIDIA endpoints for image reasoning </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/openai_multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Using OpenAI GPT-4V model for image reasoning </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/openvino_multimodal/" class="md-nav__link"> <span class="md-ellipsis"> Local Multimodal pipeline with OpenVINO </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/replicate_multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Modal LLM using Replicate LlaVa, Fuyu 8B, MiniGPT4 models for image reasoning </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/multi_modal/structured_image_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Semi-structured Image Retrieval </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_4_21" > <label class="md-nav__link" for="__nav_4_21" id="__nav_4_21_label" tabindex="0"> <span class="md-ellipsis"> Multi-Tenancy </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_21_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_21"> <span class="md-nav__icon md-icon"></span> Multi-Tenancy </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/multi_tenancy/multi_tenancy_rag/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Tenancy RAG with LlamaIndex </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_4_22" > <label class="md-nav__link" for="__nav_4_22" id="__nav_4_22_label" tabindex="0"> <span class="md-ellipsis"> Node Parsers & Text Splitters </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_22_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_22"> <span class="md-nav__icon md-icon"></span> Node Parsers & Text Splitters </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/node_parsers/semantic_chunking/" class="md-nav__link"> <span class="md-ellipsis"> Semantic Chunker </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_parsers/semantic_double_merging_chunking/" class="md-nav__link"> <span class="md-ellipsis"> Semantic double merging chunking </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_parsers/topic_parser/" class="md-nav__link"> <span class="md-ellipsis"> TopicNodeParser </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_4_23" > <label class="md-nav__link" for="__nav_4_23" id="__nav_4_23_label" tabindex="0"> <span class="md-ellipsis"> Node Postprocessors </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_23_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_23"> <span class="md-nav__icon md-icon"></span> Node Postprocessors </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/CohereRerank/" class="md-nav__link"> <span class="md-ellipsis"> Cohere Rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/ColPaliRerank/" class="md-nav__link"> <span class="md-ellipsis"> Reranking using ColPali, Cohere Reranker and Multi-Modal Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/ColbertRerank/" class="md-nav__link"> <span class="md-ellipsis"> Colbert Rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/FileNodeProcessors/" class="md-nav__link"> <span class="md-ellipsis"> File Based Node Parsers </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/FlagEmbeddingReranker/" class="md-nav__link"> <span class="md-ellipsis"> FlagEmbeddingReranker </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/JinaRerank/" class="md-nav__link"> <span class="md-ellipsis"> Jina Rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/LLMReranker-Gatsby/" class="md-nav__link"> <span class="md-ellipsis"> LLM Reranker Demonstration (Great Gatsby) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/LLMReranker-Lyft-10k/" class="md-nav__link"> <span class="md-ellipsis"> LLM Reranker Demonstration (2021 Lyft 10-k) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/LongContextReorder/" class="md-nav__link"> <span class="md-ellipsis"> LongContextReorder </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/MetadataReplacementDemo/" class="md-nav__link"> <span class="md-ellipsis"> Metadata Replacement + Node Sentence Window </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/MixedbreadAIRerank/" class="md-nav__link"> <span class="md-ellipsis"> Mixedbread AI Rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/NVIDIARerank/" class="md-nav__link"> <span class="md-ellipsis"> NVIDIA NIMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/OptimizerDemo/" class="md-nav__link"> <span class="md-ellipsis"> Sentence Embedding Optimizer </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/PII/" class="md-nav__link"> <span class="md-ellipsis"> PII Masking </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/PrevNextPostprocessorDemo/" class="md-nav__link"> <span class="md-ellipsis"> Forward/Backward Augmentation </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/RecencyPostprocessorDemo/" class="md-nav__link"> <span class="md-ellipsis"> Recency Filtering </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/SentenceTransformerRerank/" class="md-nav__link"> <span class="md-ellipsis"> SentenceTransformerRerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/TimeWeightedPostprocessorDemo/" class="md-nav__link"> <span class="md-ellipsis"> Time-Weighted Rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/VoyageAIRerank/" class="md-nav__link"> <span class="md-ellipsis"> VoyageAI Rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/openvino_rerank/" class="md-nav__link"> <span class="md-ellipsis"> OpenVINO Rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/rankGPT/" class="md-nav__link"> <span class="md-ellipsis"> RankGPT Reranker Demonstration (Van Gogh Wiki) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/node_postprocessor/rankLLM/" class="md-nav__link"> <span class="md-ellipsis"> RankLLM Reranker Demonstration (Van Gogh Wiki) </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_4_24" > <label class="md-nav__link" for="__nav_4_24" id="__nav_4_24_label" tabindex="0"> <span class="md-ellipsis"> Object Stores </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_24_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_24"> <span class="md-nav__icon md-icon"></span> Object Stores </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/objects/object_index/" class="md-nav__link"> <span class="md-ellipsis"> The Class </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_4_25" > <label class="md-nav__link" for="__nav_4_25" id="__nav_4_25_label" tabindex="0"> <span class="md-ellipsis"> Observability </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_25_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_25"> <span class="md-nav__icon md-icon"></span> Observability </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/observability/AimCallback/" class="md-nav__link"> <span class="md-ellipsis"> Aim Callback </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/HoneyHiveLlamaIndexTracer/" class="md-nav__link"> <span class="md-ellipsis"> HoneyHive LlamaIndex Tracer </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/LangfuseCallbackHandler/" class="md-nav__link"> <span class="md-ellipsis"> Langfuse Callback Handler </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/LangfuseMistralPostHog/" class="md-nav__link"> <span class="md-ellipsis"> Analyze and Debug LlamaIndex Applications with PostHog and Langfuse </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/LlamaDebugHandler/" class="md-nav__link"> <span class="md-ellipsis"> Llama Debug Handler </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/MLflow/" class="md-nav__link"> <span class="md-ellipsis"> MLflow Tracing and E2E Integration with LlamaIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/OpenInferenceCallback/" class="md-nav__link"> <span class="md-ellipsis"> OpenInference Callback Handler + Arize Phoenix </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/OpenLLMetry/" class="md-nav__link"> <span class="md-ellipsis"> Observability with OpenLLMetry </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/OpikCallback/" class="md-nav__link"> <span class="md-ellipsis"> Logging traces with Opik </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/PromptLayerHandler/" class="md-nav__link"> <span class="md-ellipsis"> PromptLayer Handler </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/TokenCountingHandler/" class="md-nav__link"> <span class="md-ellipsis"> Token Counting Handler </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/UpTrainCallback/" class="md-nav__link"> <span class="md-ellipsis"> UpTrain Callback Handler </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/observability/WandbCallbackHandler/" class="md-nav__link"> <span class="md-ellipsis"> Wandb Callback Handler </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_4_26" > <label class="md-nav__link" for="__nav_4_26" id="__nav_4_26_label" tabindex="0"> <span class="md-ellipsis"> Output Parsers </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_26_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_26"> <span class="md-nav__icon md-icon"></span> Output Parsers </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/GuardrailsDemo/" class="md-nav__link"> <span class="md-ellipsis"> Guardrails Output Parsing </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/LangchainOutputParserDemo/" class="md-nav__link"> <span class="md-ellipsis"> Langchain Output Parsing </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/df_program/" class="md-nav__link"> <span class="md-ellipsis"> DataFrame Structured Data Extraction </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/evaporate_program/" class="md-nav__link"> <span class="md-ellipsis"> Evaporate Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/function_program/" class="md-nav__link"> <span class="md-ellipsis"> Function Calling Program for Structured Extraction </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/guidance_pydantic_program/" class="md-nav__link"> <span class="md-ellipsis"> Guidance Pydantic Program </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/guidance_sub_question/" class="md-nav__link"> <span class="md-ellipsis"> Guidance for Sub-Question Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/llm_program/" class="md-nav__link"> <span class="md-ellipsis"> LLM Pydantic Program </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/lmformatenforcer_pydantic_program/" class="md-nav__link"> <span class="md-ellipsis"> LM Format Enforcer Pydantic Program </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/lmformatenforcer_regular_expressions/" class="md-nav__link"> <span class="md-ellipsis"> LM Format Enforcer Regular Expression Generation </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/nvidia_output_parsing/" class="md-nav__link"> <span class="md-ellipsis"> LLM Pydantic Program - NVIDIA </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/openai_pydantic_program/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI Pydantic Program </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/output_parsing/openai_sub_question/" class="md-nav__link"> <span class="md-ellipsis"> OpenAI function calling for Sub-Question Query Engine </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_4_27" > <label class="md-nav__link" for="__nav_4_27" id="__nav_4_27_label" tabindex="0"> <span class="md-ellipsis"> Param Optimizer </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_27_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_27"> <span class="md-nav__icon md-icon"></span> Param Optimizer </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/param_optimizer/param_optimizer/" class="md-nav__link"> <span class="md-ellipsis"> [WIP] Hyperparameter Optimization for RAG </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_4_28" > <label class="md-nav__link" for="__nav_4_28" id="__nav_4_28_label" tabindex="0"> <span class="md-ellipsis"> Prompts </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_28_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_28"> <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="../../../../examples/prompts/advanced_prompts/" class="md-nav__link"> <span class="md-ellipsis"> Advanced Prompt Techniques (Variable Mappings, Functions) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/prompts/emotion_prompt/" class="md-nav__link"> <span class="md-ellipsis"> EmotionPrompt in RAG </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/prompts/prompt_mixin/" class="md-nav__link"> <span class="md-ellipsis"> Accessing/Customizing Prompts within Higher-Level Modules </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/prompts/prompt_optimization/" class="md-nav__link"> <span class="md-ellipsis"> "Optimization by Prompting" for RAG </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/prompts/prompts_rag/" class="md-nav__link"> <span class="md-ellipsis"> Prompt Engineering for RAG </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_4_29" > <label class="md-nav__link" for="__nav_4_29" id="__nav_4_29_label" tabindex="0"> <span class="md-ellipsis"> Property Graph </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_29_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_29"> <span class="md-nav__icon md-icon"></span> Property Graph </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/property_graph/graph_store/" class="md-nav__link"> <span class="md-ellipsis"> Using a Property Graph Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/property_graph/property_graph_advanced/" class="md-nav__link"> <span class="md-ellipsis"> Property Graph Construction with Predefined Schemas </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/property_graph/property_graph_basic/" class="md-nav__link"> <span class="md-ellipsis"> Property Graph Index </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/property_graph/property_graph_custom_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Defining a Custom Property Graph Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/property_graph/property_graph_memgraph/" class="md-nav__link"> <span class="md-ellipsis"> Memgraph Property Graph Index </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/property_graph/property_graph_neo4j/" class="md-nav__link"> <span class="md-ellipsis"> Neo4j Property Graph 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_4_30" > <label class="md-nav__link" for="__nav_4_30" id="__nav_4_30_label" tabindex="0"> <span class="md-ellipsis"> Query Engines </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_30_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_30"> <span class="md-nav__icon md-icon"></span> Query Engines </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/query_engine/CustomRetrievers/" class="md-nav__link"> <span class="md-ellipsis"> Retriever Query Engine with Custom Retrievers - Simple Hybrid Search </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/JSONalyze_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> JSONalyze Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/JointQASummary/" class="md-nav__link"> <span class="md-ellipsis"> Joint QA Summary Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/RetrieverRouterQueryEngine/" class="md-nav__link"> <span class="md-ellipsis"> Retriever Router Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/RouterQueryEngine/" class="md-nav__link"> <span class="md-ellipsis"> Router Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/SQLAutoVectorQueryEngine/" class="md-nav__link"> <span class="md-ellipsis"> SQL Auto Vector Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/SQLJoinQueryEngine/" class="md-nav__link"> <span class="md-ellipsis"> SQL Join Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/SQLRouterQueryEngine/" class="md-nav__link"> <span class="md-ellipsis"> SQL Router Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/citation_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> CitationQueryEngine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/cogniswitch_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Cogniswitch query engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/custom_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Defining a Custom Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/ensemble_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Ensemble Query Engine Guide </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/flare_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> FLARE Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/json_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> JSON Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/knowledge_graph_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Knowledge Graph Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/knowledge_graph_rag_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Knowledge Graph RAG Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/multi_doc_auto_retrieval/multi_doc_auto_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Structured Hierarchical Retrieval </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/pandas_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Pandas Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/pdf_tables/recursive_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Recursive Retriever + Query Engine Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/pgvector_sql_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> [Beta] Text-to-SQL with PGVector </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/pydantic_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Query Engine with Pydantic Outputs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/recursive_retriever_agents/" class="md-nav__link"> <span class="md-ellipsis"> Recursive Retriever + Document Agents </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/sec_tables/tesla_10q_table/" class="md-nav__link"> <span class="md-ellipsis"> Joint Tabular/Semantic QA over Tesla 10K </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_engine/sub_question_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Sub Question Query Engine </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_4_31" > <label class="md-nav__link" for="__nav_4_31" id="__nav_4_31_label" tabindex="0"> <span class="md-ellipsis"> Query Pipeline </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_31_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_31"> <span class="md-nav__icon md-icon"></span> Query Pipeline </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/pipeline/query_pipeline/" class="md-nav__link"> <span class="md-ellipsis"> An Introduction to LlamaIndex Query Pipelines </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/pipeline/query_pipeline_async/" class="md-nav__link"> <span class="md-ellipsis"> Query Pipeline with Async/Parallel Execution </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/pipeline/query_pipeline_memory/" class="md-nav__link"> <span class="md-ellipsis"> Query Pipeline Chat Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/pipeline/query_pipeline_pandas/" class="md-nav__link"> <span class="md-ellipsis"> Query Pipeline over Pandas DataFrames </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/pipeline/query_pipeline_routing/" class="md-nav__link"> <span class="md-ellipsis"> Query Pipeline with Routing </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/pipeline/query_pipeline_sql/" class="md-nav__link"> <span class="md-ellipsis"> Query Pipeline for Advanced Text-to-SQL </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_4_32" > <label class="md-nav__link" for="__nav_4_32" id="__nav_4_32_label" tabindex="0"> <span class="md-ellipsis"> Query Transformations </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_32_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_32"> <span class="md-nav__icon md-icon"></span> Query Transformations </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/query_transformations/HyDEQueryTransformDemo/" class="md-nav__link"> <span class="md-ellipsis"> HyDE Query Transform </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_transformations/SimpleIndexDemo-multistep/" class="md-nav__link"> <span class="md-ellipsis"> Multi-Step Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/query_transformations/query_transform_cookbook/" class="md-nav__link"> <span class="md-ellipsis"> Query Transform Cookbook </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_4_33" > <label class="md-nav__link" for="__nav_4_33" id="__nav_4_33_label" tabindex="0"> <span class="md-ellipsis"> Response Synthesizers </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_33_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_33"> <span class="md-nav__icon md-icon"></span> Response Synthesizers </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/response_synthesizers/custom_prompt_synthesizer/" class="md-nav__link"> <span class="md-ellipsis"> Pydantic Tree Summarize </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/response_synthesizers/long_context_test/" class="md-nav__link"> <span class="md-ellipsis"> Stress-Testing Long Context LLMs with a Recall Task </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/response_synthesizers/pydantic_tree_summarize/" class="md-nav__link"> <span class="md-ellipsis"> Pydantic Tree Summarize </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/response_synthesizers/refine/" class="md-nav__link"> <span class="md-ellipsis"> Refine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/response_synthesizers/structured_refine/" class="md-nav__link"> <span class="md-ellipsis"> Refine with Structured Answer Filtering </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/response_synthesizers/tree_summarize/" class="md-nav__link"> <span class="md-ellipsis"> Tree Summarize </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_4_34" > <label class="md-nav__link" for="__nav_4_34" id="__nav_4_34_label" tabindex="0"> <span class="md-ellipsis"> Retrievers </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_34_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_34"> <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="../../../../examples/retrievers/auto_merging_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Auto Merging Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/auto_vs_recursive_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Comparing Methods for Structured Retrieval (Auto-Retrieval vs. Recursive Retrieval) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/bedrock_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Bedrock (Knowledge Bases) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/bm25_retriever/" class="md-nav__link"> <span class="md-ellipsis"> BM25 Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/composable_retrievers/" class="md-nav__link"> <span class="md-ellipsis"> Composable Objects </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/deep_memory/" class="md-nav__link"> <span class="md-ellipsis"> Activeloop Deep Memory </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/ensemble_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Ensemble Retrieval Guide </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/multi_doc_together_hybrid/" class="md-nav__link"> <span class="md-ellipsis"> Chunk + Document Hybrid Retrieval with Long-Context Embeddings (Together.ai) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/pathway_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Pathway Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/reciprocal_rerank_fusion/" class="md-nav__link"> <span class="md-ellipsis"> Reciprocal Rerank Fusion Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/recurisve_retriever_nodes_braintrust/" class="md-nav__link"> <span class="md-ellipsis"> Recursive Retriever + Node References + Braintrust </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/recursive_retriever_nodes/" class="md-nav__link"> <span class="md-ellipsis"> Recursive Retriever + Node References </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/relative_score_dist_fusion/" class="md-nav__link"> <span class="md-ellipsis"> Relative Score Fusion and Distribution-Based Score Fusion </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/router_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Router Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/simple_fusion/" class="md-nav__link"> <span class="md-ellipsis"> Simple Fusion Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/vectara_auto_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Auto-Retrieval from a Vectara Index </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/vertex_ai_search_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Vertex AI Search Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/videodb_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Videodb retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/retrievers/you_retriever/" class="md-nav__link"> <span class="md-ellipsis"> You.com Retriever </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_4_35" > <label class="md-nav__link" for="__nav_4_35" id="__nav_4_35_label" tabindex="0"> <span class="md-ellipsis"> Tools </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_35_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_35"> <span class="md-nav__icon md-icon"></span> Tools </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/tools/OnDemandLoaderTool/" class="md-nav__link"> <span class="md-ellipsis"> OnDemandLoaderTool Tutorial </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/tools/azure_code_interpreter/" class="md-nav__link"> <span class="md-ellipsis"> Azure Code Interpreter Tool Spec </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/tools/cassandra/" class="md-nav__link"> <span class="md-ellipsis"> Cassandra Database Tools </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/tools/eval_query_engine_tool/" class="md-nav__link"> <span class="md-ellipsis"> Evaluation Query Engine Tool </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_4_36" > <label class="md-nav__link" for="__nav_4_36" id="__nav_4_36_label" tabindex="0"> <span class="md-ellipsis"> Transforms </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_36_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_36"> <span class="md-nav__icon md-icon"></span> Transforms </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/transforms/TransformsEval/" class="md-nav__link"> <span class="md-ellipsis"> Transforms Evaluation </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_4_37" > <label class="md-nav__link" for="__nav_4_37" id="__nav_4_37_label" tabindex="0"> <span class="md-ellipsis"> Use Cases </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_37_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_37"> <span class="md-nav__icon md-icon"></span> Use Cases </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/usecases/10k_sub_question/" class="md-nav__link"> <span class="md-ellipsis"> 10K Analysis </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/usecases/10q_sub_question/" class="md-nav__link"> <span class="md-ellipsis"> 10Q Analysis </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/usecases/email_data_extraction/" class="md-nav__link"> <span class="md-ellipsis"> Email Data Extraction </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/usecases/github_issue_analysis/" class="md-nav__link"> <span class="md-ellipsis"> Github Issue Analysis </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_4_38" > <label class="md-nav__link" for="__nav_4_38" id="__nav_4_38_label" tabindex="0"> <span class="md-ellipsis"> Vector Stores </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_38_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_38"> <span class="md-nav__icon md-icon"></span> Vector Stores </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/AWSDocDBDemo/" class="md-nav__link"> <span class="md-ellipsis"> AWSDocDBDemo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/AlibabaCloudOpenSearchIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Alibaba Cloud OpenSearch Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/AmazonNeptuneVectorDemo/" class="md-nav__link"> <span class="md-ellipsis"> Amazon Neptune - Neptune Analytics vector store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/AnalyticDBDemo/" class="md-nav__link"> <span class="md-ellipsis"> AnalyticDB </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/AstraDBIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Astra DB </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/AsyncIndexCreationDemo/" class="md-nav__link"> <span class="md-ellipsis"> Simple Vector Store - Async Index Creation </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/AwadbDemo/" class="md-nav__link"> <span class="md-ellipsis"> Awadb Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/AzureAISearchIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Azure AI Search </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/AzureCosmosDBMongoDBvCoreDemo/" class="md-nav__link"> <span class="md-ellipsis"> Azure CosmosDB MongoDB Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/AzureCosmosDBNoSqlDemo/" class="md-nav__link"> <span class="md-ellipsis"> Azure Cosmos DB No SQL Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/BagelAutoRetriever/" class="md-nav__link"> <span class="md-ellipsis"> Bagel Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/BagelIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Bagel Network </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/BaiduVectorDBIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Baidu VectorDB </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/CassandraIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Cassandra Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/ChromaFireworksNomic/" class="md-nav__link"> <span class="md-ellipsis"> Chroma + Fireworks + Nomic with Matryoshka embedding </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/ChromaIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Chroma </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/ClickHouseIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> ClickHouse Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/CouchbaseVectorStoreDemo/" class="md-nav__link"> <span class="md-ellipsis"> CouchbaseVectorStoreDemo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/DashvectorIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> DashVector Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/DatabricksVectorSearchDemo/" class="md-nav__link"> <span class="md-ellipsis"> Databricks Vector Search </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/DeepLakeIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Deep Lake Vector Store Quickstart </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/DocArrayHnswIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> DocArray Hnsw Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/DocArrayInMemoryIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> DocArray InMemory Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/DuckDBDemo/" class="md-nav__link"> <span class="md-ellipsis"> DuckDB </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/ElasticsearchIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Elasticsearch Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/Elasticsearch_demo/" class="md-nav__link"> <span class="md-ellipsis"> Elasticsearch </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/EpsillaIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Epsilla Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/FaissIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Faiss Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/FirestoreVectorStore/" class="md-nav__link"> <span class="md-ellipsis"> Firestore Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/HnswlibIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Hnswlib </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/HologresDemo/" class="md-nav__link"> <span class="md-ellipsis"> Hologres </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/JaguarIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Jaguar Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/KDBAI_Advanced_RAG_Demo/" class="md-nav__link"> <span class="md-ellipsis"> Advanced RAG with temporal filters using LlamaIndex and KDB.AI vector store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/LanceDBIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> LanceDB Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/LanternAutoRetriever/" class="md-nav__link"> <span class="md-ellipsis"> Lantern Vector Store (auto-retriever) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/LanternIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Lantern Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/LindormDemo/" class="md-nav__link"> <span class="md-ellipsis"> Lindorm </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/MilvusHybridIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Milvus Vector Store With Hybrid Retrieval </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/MilvusIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Milvus Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/MilvusOperatorFunctionDemo/" class="md-nav__link"> <span class="md-ellipsis"> MilvusOperatorFunctionDemo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/MongoDBAtlasVectorSearch/" class="md-nav__link"> <span class="md-ellipsis"> MongoDB Atlas Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/MongoDBAtlasVectorSearchRAGFireworks/" class="md-nav__link"> <span class="md-ellipsis"> MongoDB Atlas + Fireworks AI RAG Example </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/MongoDBAtlasVectorSearchRAGOpenAI/" class="md-nav__link"> <span class="md-ellipsis"> MongoDB Atlas + OpenAI RAG Example </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/MyScaleIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> MyScale Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/Neo4jVectorDemo/" class="md-nav__link"> <span class="md-ellipsis"> Neo4j vector store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/NileVectorStore/" class="md-nav__link"> <span class="md-ellipsis"> Nile Vector Store (Multi-tenant PostgreSQL) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/ObjectBoxIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> ObjectBox VectorStore Demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/OceanBaseVectorStore/" class="md-nav__link"> <span class="md-ellipsis"> OceanBase Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/OpensearchDemo/" class="md-nav__link"> <span class="md-ellipsis"> Opensearch Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/PGVectoRsDemo/" class="md-nav__link"> <span class="md-ellipsis"> pgvecto.rs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/PineconeIndexDemo-Hybrid/" class="md-nav__link"> <span class="md-ellipsis"> Pinecone Vector Store - Hybrid Search </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/PineconeIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Pinecone Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/QdrantIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Qdrant Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/Qdrant_metadata_filter/" class="md-nav__link"> <span class="md-ellipsis"> Qdrant Vector Store - Metadata Filter </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/Qdrant_using_qdrant_filters/" class="md-nav__link"> <span class="md-ellipsis"> Qdrant Vector Store - Default Qdrant Filters </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/RedisIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Redis Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/RelytDemo/" class="md-nav__link"> <span class="md-ellipsis"> Relyt </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/RocksetIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Rockset Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/SimpleIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Simple Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/SimpleIndexDemoLlama-Local/" class="md-nav__link"> <span class="md-ellipsis"> Local Llama2 + VectorStoreIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/SimpleIndexDemoLlama2/" class="md-nav__link"> <span class="md-ellipsis"> Llama2 + VectorStoreIndex </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/SimpleIndexDemoMMR/" class="md-nav__link"> <span class="md-ellipsis"> Simple Vector Stores - Maximum Marginal Relevance Retrieval </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/SimpleIndexOnS3/" class="md-nav__link"> <span class="md-ellipsis"> S3/R2 Storage </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/SupabaseVectorIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Supabase Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/TablestoreDemo/" class="md-nav__link"> <span class="md-ellipsis"> TablestoreVectorStore </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/TairIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Tair Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/TencentVectorDBIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Tencent Cloud VectorDB </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/TiDBVector/" class="md-nav__link"> <span class="md-ellipsis"> TiDB Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/Timescalevector/" class="md-nav__link"> <span class="md-ellipsis"> Timescale Vector Store (PostgreSQL) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/TxtaiIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> txtai Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/TypesenseDemo/" class="md-nav__link"> <span class="md-ellipsis"> Typesense Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/UpstashVectorDemo/" class="md-nav__link"> <span class="md-ellipsis"> Upstash Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/VearchDemo/" class="md-nav__link"> <span class="md-ellipsis"> VearchDemo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/VertexAIVectorSearchDemo/" class="md-nav__link"> <span class="md-ellipsis"> Google Vertex AI Vector Search </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/VespaIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Vespa Vector Store demo </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/WeaviateIndexDemo-Hybrid/" class="md-nav__link"> <span class="md-ellipsis"> Weaviate Vector Store - Hybrid Search </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/WeaviateIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Weaviate Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/WeaviateIndex_auto_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Auto-Retrieval from a Weaviate Vector Database </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/WeaviateIndex_metadata_filter/" class="md-nav__link"> <span class="md-ellipsis"> Weaviate Vector Store Metadata Filter </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/WordLiftDemo/" class="md-nav__link"> <span class="md-ellipsis"> WordLift Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/ZepIndexDemo/" class="md-nav__link"> <span class="md-ellipsis"> Zep Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/chroma_auto_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Auto-Retrieval from a Vector Database </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/chroma_metadata_filter/" class="md-nav__link"> <span class="md-ellipsis"> Chroma Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/elasticsearch_auto_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Auto-Retrieval from a Vector Database </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/existing_data/pinecone_existing_data/" class="md-nav__link"> <span class="md-ellipsis"> Guide: Using Vector Store Index with Existing Pinecone Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/existing_data/weaviate_existing_data/" class="md-nav__link"> <span class="md-ellipsis"> Guide: Using Vector Store Index with Existing Weaviate Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/neo4j_metadata_filter/" class="md-nav__link"> <span class="md-ellipsis"> Neo4j Vector Store - Metadata Filter </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/orallamavs/" class="md-nav__link"> <span class="md-ellipsis"> Oracle AI Vector Search: Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/pinecone_auto_retriever/" class="md-nav__link"> <span class="md-ellipsis"> A Simple to Advanced Guide with Auto-Retrieval (with Pinecone + Arize Phoenix) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/pinecone_metadata_filter/" class="md-nav__link"> <span class="md-ellipsis"> Pinecone Vector Store - Metadata Filter </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/postgres/" class="md-nav__link"> <span class="md-ellipsis"> Postgres Vector Store </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/qdrant_bm42/" class="md-nav__link"> <span class="md-ellipsis"> Hybrid Search with Qdrant BM42 </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/vector_stores/qdrant_hybrid/" class="md-nav__link"> <span class="md-ellipsis"> Qdrant Hybrid Search </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_4_39" > <label class="md-nav__link" for="__nav_4_39" id="__nav_4_39_label" tabindex="0"> <span class="md-ellipsis"> Workflow </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_39_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_39"> <span class="md-nav__icon md-icon"></span> Workflow </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../examples/workflow/JSONalyze_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> JSONalyze Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/advanced_text_to_sql/" class="md-nav__link"> <span class="md-ellipsis"> Workflows for Advanced Text-to-SQL </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/auto_retrieval.ipynb" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/checkpointing_workflows/" class="md-nav__link"> <span class="md-ellipsis"> Checkpointing Workflow Runs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/citation_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Build RAG with in-line citations </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/corrective_rag_pack/" class="md-nav__link"> <span class="md-ellipsis"> Corrective RAG Workflow </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/function_calling_agent/" class="md-nav__link"> <span class="md-ellipsis"> Workflow for a Function Calling Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/human_in_the_loop_story_crafting/" class="md-nav__link"> <span class="md-ellipsis"> Choose Your Own Adventure Workflow (Human In The Loop) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/long_rag_pack/" class="md-nav__link"> <span class="md-ellipsis"> LongRAG Workflow </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/multi_step_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> MultiStep Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/multi_strategy_workflow/" class="md-nav__link"> <span class="md-ellipsis"> Multi-strategy workflow with reflection </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/parallel_execution/" class="md-nav__link"> <span class="md-ellipsis"> Parallel Execution of Same Event Example </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/planning_workflow/" class="md-nav__link"> <span class="md-ellipsis"> Query Planning Workflow </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/rag/" class="md-nav__link"> <span class="md-ellipsis"> RAG Workflow with Reranking </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/react_agent/" class="md-nav__link"> <span class="md-ellipsis"> Workflow for a ReAct Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/reflection/" class="md-nav__link"> <span class="md-ellipsis"> Reflection Workflow for Structured Outputs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/router_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Router Query Engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/self_discover_workflow/" class="md-nav__link"> <span class="md-ellipsis"> Self-Discover Workflow </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/sub_question_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Sub Question Query Engine as a workflow </span> </a> </li> <li class="md-nav__item"> <a href="../../../../examples/workflow/workflows_cookbook/" class="md-nav__link"> <span class="md-ellipsis"> Workflows cookbook: walking through all features of Workflows </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_5" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/" class="md-nav__link "> <span class="md-ellipsis"> Component Guides </span> </a> <label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5"> <span class="md-nav__icon md-icon"></span> Component Guides </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_5_2" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/models/" class="md-nav__link "> <span class="md-ellipsis"> Models </span> </a> <label class="md-nav__link " for="__nav_5_2" id="__nav_5_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_5_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_2"> <span class="md-nav__icon md-icon"></span> Models </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_5_2_2" > <label class="md-nav__link" for="__nav_5_2_2" id="__nav_5_2_2_label" tabindex="0"> <span class="md-ellipsis"> LLMs </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_5_2_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_2_2"> <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="../../../../module_guides/models/llms/" class="md-nav__link"> <span class="md-ellipsis"> Using LLMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/models/llms/usage_standalone/" class="md-nav__link"> <span class="md-ellipsis"> Standalone Usage </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/models/llms/usage_custom/" class="md-nav__link"> <span class="md-ellipsis"> Customizing LLMs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/models/llms/modules/" class="md-nav__link"> <span class="md-ellipsis"> Available LLM Integrations </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../module_guides/models/embeddings/" class="md-nav__link"> <span class="md-ellipsis"> Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/models/multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multi Modal </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_5_3" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/models/prompts/" class="md-nav__link "> <span class="md-ellipsis"> Prompts </span> </a> <label class="md-nav__link " for="__nav_5_3" id="__nav_5_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_5_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_3"> <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="../../../../module_guides/models/prompts/usage_pattern/" class="md-nav__link"> <span class="md-ellipsis"> Usage pattern </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_5_4" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/loading/" class="md-nav__link "> <span class="md-ellipsis"> Loading </span> </a> <label class="md-nav__link " for="__nav_5_4" id="__nav_5_4_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_4"> <span class="md-nav__icon md-icon"></span> Loading </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_5_4_2" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/loading/documents_and_nodes/" class="md-nav__link "> <span class="md-ellipsis"> Documents and Nodes </span> </a> <label class="md-nav__link " for="__nav_5_4_2" id="__nav_5_4_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_5_4_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_4_2"> <span class="md-nav__icon md-icon"></span> Documents and Nodes </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/loading/documents_and_nodes/usage_documents/" class="md-nav__link"> <span class="md-ellipsis"> Using Documents </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/loading/documents_and_nodes/usage_nodes/" class="md-nav__link"> <span class="md-ellipsis"> Using Nodes </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/loading/documents_and_nodes/usage_metadata_extractor/" class="md-nav__link"> <span class="md-ellipsis"> Metadata Extraction </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../module_guides/loading/simpledirectoryreader/" class="md-nav__link"> <span class="md-ellipsis"> SimpleDirectoryReader </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_4_4" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/loading/connector/" class="md-nav__link "> <span class="md-ellipsis"> Data Connectors </span> </a> <label class="md-nav__link " for="__nav_5_4_4" id="__nav_5_4_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_5_4_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_4_4"> <span class="md-nav__icon md-icon"></span> Data Connectors </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/loading/connector/usage_pattern/" class="md-nav__link"> <span class="md-ellipsis"> Usage Pattern </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/loading/connector/llama_parse/" class="md-nav__link"> <span class="md-ellipsis"> LlamaParse </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/loading/connector/modules/" class="md-nav__link"> <span class="md-ellipsis"> Module Guides </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_5_4_5" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/loading/node_parsers/" class="md-nav__link "> <span class="md-ellipsis"> Node Parsers / Text Splitters </span> </a> <label class="md-nav__link " for="__nav_5_4_5" id="__nav_5_4_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_5_4_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_4_5"> <span class="md-nav__icon md-icon"></span> Node Parsers / Text Splitters </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/loading/node_parsers/modules/" class="md-nav__link"> <span class="md-ellipsis"> Node Parser Modules </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_5_4_6" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/loading/ingestion_pipeline/" class="md-nav__link "> <span class="md-ellipsis"> Ingestion Pipeline </span> </a> <label class="md-nav__link " for="__nav_5_4_6" id="__nav_5_4_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_5_4_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_4_6"> <span class="md-nav__icon md-icon"></span> Ingestion Pipeline </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/loading/ingestion_pipeline/transformations/" class="md-nav__link"> <span class="md-ellipsis"> Transformations </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_5_5" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/indexing/" class="md-nav__link "> <span class="md-ellipsis"> Indexing </span> </a> <label class="md-nav__link " for="__nav_5_5" id="__nav_5_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_5_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_5"> <span class="md-nav__icon md-icon"></span> Indexing </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/indexing/index_guide/" class="md-nav__link"> <span class="md-ellipsis"> Index Guide </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/indexing/vector_store_index/" class="md-nav__link"> <span class="md-ellipsis"> Vector Store Index </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/indexing/lpg_index_guide/" class="md-nav__link"> <span class="md-ellipsis"> Property Graph Index </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/indexing/document_management/" class="md-nav__link"> <span class="md-ellipsis"> Document Management </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/indexing/llama_cloud_index/" class="md-nav__link"> <span class="md-ellipsis"> LlamaCloud </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/indexing/metadata_extraction/" class="md-nav__link"> <span class="md-ellipsis"> Metadata Extraction </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/indexing/modules/" class="md-nav__link"> <span class="md-ellipsis"> Modules </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_5_6" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/storing/" class="md-nav__link "> <span class="md-ellipsis"> Storing </span> </a> <label class="md-nav__link " for="__nav_5_6" id="__nav_5_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_5_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_6"> <span class="md-nav__icon md-icon"></span> Storing </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/storing/vector_stores/" class="md-nav__link"> <span class="md-ellipsis"> Vector Stores </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/storing/docstores/" class="md-nav__link"> <span class="md-ellipsis"> Document Stores </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/storing/index_stores/" class="md-nav__link"> <span class="md-ellipsis"> Index Stores </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/storing/chat_stores/" class="md-nav__link"> <span class="md-ellipsis"> Chat Stores </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/storing/kv_stores/" class="md-nav__link"> <span class="md-ellipsis"> Key-Value Stores </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/storing/save_load/" class="md-nav__link"> <span class="md-ellipsis"> Persisting & Loading Data </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/storing/customization/" class="md-nav__link"> <span class="md-ellipsis"> Customizing Storage </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_5_7" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/querying/" class="md-nav__link "> <span class="md-ellipsis"> Querying </span> </a> <label class="md-nav__link " for="__nav_5_7" id="__nav_5_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_5_7_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_7"> <span class="md-nav__icon md-icon"></span> Querying </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_5_7_2" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/deploying/query_engine/" class="md-nav__link "> <span class="md-ellipsis"> Query Engines </span> </a> <label class="md-nav__link " for="__nav_5_7_2" id="__nav_5_7_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_5_7_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_7_2"> <span class="md-nav__icon md-icon"></span> Query Engines </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/deploying/query_engine/usage_pattern/" class="md-nav__link"> <span class="md-ellipsis"> Usage Pattern </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/deploying/query_engine/response_modes/" class="md-nav__link"> <span class="md-ellipsis"> Response Modes </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/deploying/query_engine/streaming/" class="md-nav__link"> <span class="md-ellipsis"> Streaming </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/deploying/query_engine/modules/" class="md-nav__link"> <span class="md-ellipsis"> Module Guides </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/deploying/query_engine/supporting_modules/" class="md-nav__link"> <span class="md-ellipsis"> Supporting Modules </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_5_7_3" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/deploying/chat_engines/" class="md-nav__link "> <span class="md-ellipsis"> Chat Engines </span> </a> <label class="md-nav__link " for="__nav_5_7_3" id="__nav_5_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_5_7_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_7_3"> <span class="md-nav__icon md-icon"></span> Chat Engines </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/deploying/chat_engines/usage_pattern/" class="md-nav__link"> <span class="md-ellipsis"> Usage Pattern </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/deploying/chat_engines/modules/" class="md-nav__link"> <span class="md-ellipsis"> Module Guides </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_5_7_4" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/querying/retriever/" class="md-nav__link "> <span class="md-ellipsis"> Retrieval </span> </a> <label class="md-nav__link " for="__nav_5_7_4" id="__nav_5_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_5_7_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_7_4"> <span class="md-nav__icon md-icon"></span> Retrieval </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/querying/retriever/retrievers/" class="md-nav__link"> <span class="md-ellipsis"> Retriever Modules </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/querying/retriever/retriever_modes/" class="md-nav__link"> <span class="md-ellipsis"> Retriever Modes </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_5_7_5" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/querying/node_postprocessors/" class="md-nav__link "> <span class="md-ellipsis"> Node Postprocessors </span> </a> <label class="md-nav__link " for="__nav_5_7_5" id="__nav_5_7_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_5_7_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_7_5"> <span class="md-nav__icon md-icon"></span> Node Postprocessors </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/querying/node_postprocessors/node_postprocessors/" class="md-nav__link"> <span class="md-ellipsis"> Node Postprocessor Modules </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_5_7_6" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/querying/response_synthesizers/" class="md-nav__link "> <span class="md-ellipsis"> Response Synthesis </span> </a> <label class="md-nav__link " for="__nav_5_7_6" id="__nav_5_7_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_5_7_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_7_6"> <span class="md-nav__icon md-icon"></span> Response Synthesis </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/querying/response_synthesizers/response_synthesizers/" class="md-nav__link"> <span class="md-ellipsis"> Response Synthesis Modules </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../module_guides/querying/router/" class="md-nav__link"> <span class="md-ellipsis"> Routing </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/workflow/" class="md-nav__link"> <span class="md-ellipsis"> Workflows </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_7_9" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/querying/pipeline/" class="md-nav__link "> <span class="md-ellipsis"> Query Pipelines (Deprecated) </span> </a> <label class="md-nav__link " for="__nav_5_7_9" id="__nav_5_7_9_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_5_7_9_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_7_9"> <span class="md-nav__icon md-icon"></span> Query Pipelines (Deprecated) </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/querying/pipeline/usage_pattern/" class="md-nav__link"> <span class="md-ellipsis"> Usage Pattern </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/querying/pipeline/modules/" class="md-nav__link"> <span class="md-ellipsis"> Module Guides </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/querying/pipeline/module_usage/" class="md-nav__link"> <span class="md-ellipsis"> Module Usage </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_5_7_10" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/querying/structured_outputs/" class="md-nav__link "> <span class="md-ellipsis"> Structured Outputs </span> </a> <label class="md-nav__link " for="__nav_5_7_10" id="__nav_5_7_10_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_5_7_10_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_7_10"> <span class="md-nav__icon md-icon"></span> Structured Outputs </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/querying/structured_outputs/output_parser/" class="md-nav__link"> <span class="md-ellipsis"> Output Parsing Modules </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/querying/structured_outputs/query_engine/" class="md-nav__link"> <span class="md-ellipsis"> (Deprecated) Query Engines + Pydantic Outputs </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/querying/structured_outputs/pydantic_program/" class="md-nav__link"> <span class="md-ellipsis"> Pydantic Programs </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_5_8" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/deploying/agents/" class="md-nav__link "> <span class="md-ellipsis"> Agents </span> </a> <label class="md-nav__link " for="__nav_5_8" id="__nav_5_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_5_8_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_8"> <span class="md-nav__icon md-icon"></span> Agents </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/deploying/agents/usage_pattern/" class="md-nav__link"> <span class="md-ellipsis"> Usage Pattern </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/deploying/agents/agent_runner/" class="md-nav__link"> <span class="md-ellipsis"> Lower-Level Agent API </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/deploying/agents/modules/" class="md-nav__link"> <span class="md-ellipsis"> Module Guides </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/deploying/agents/tools/" class="md-nav__link"> <span class="md-ellipsis"> Tools </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_5_9" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/workflow/" class="md-nav__link "> <span class="md-ellipsis"> Workflows </span> </a> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_9_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_9"> <span class="md-nav__icon md-icon"></span> Workflows </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_10" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/evaluating/" class="md-nav__link "> <span class="md-ellipsis"> Evaluation </span> </a> <label class="md-nav__link " for="__nav_5_10" id="__nav_5_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_5_10_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_10"> <span class="md-nav__icon md-icon"></span> Evaluation </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/evaluating/usage_pattern/" class="md-nav__link"> <span class="md-ellipsis"> Usage Pattern (Response Evaluation) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/evaluating/usage_pattern_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Usage Pattern (Retrieval) </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/evaluating/modules/" class="md-nav__link"> <span class="md-ellipsis"> Modules </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_10_5" > <label class="md-nav__link" for="__nav_5_10_5" id="__nav_5_10_5_label" tabindex="0"> <span class="md-ellipsis"> LlamaDatasets </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_5_10_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_10_5"> <span class="md-nav__icon md-icon"></span> LlamaDatasets </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/evaluating/contributing_llamadatasets/" class="md-nav__link"> <span class="md-ellipsis"> Contributing A LabelledRagDataset </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/evaluating/evaluating_with_llamadatasets/" class="md-nav__link"> <span class="md-ellipsis"> Evaluating With LabelledRagDataset's </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/evaluating/evaluating_evaluators_with_llamadatasets/" class="md-nav__link"> <span class="md-ellipsis"> Evaluating Evaluators with LabelledEvaluatorDataset's </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_5_11" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/observability/" class="md-nav__link "> <span class="md-ellipsis"> Observability </span> </a> <label class="md-nav__link " for="__nav_5_11" id="__nav_5_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_5_11_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_11"> <span class="md-nav__icon md-icon"></span> Observability </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/observability/instrumentation/" class="md-nav__link"> <span class="md-ellipsis"> Instrumentation </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../module_guides/supporting_modules/settings/" class="md-nav__link"> <span class="md-ellipsis"> Settings </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_13" > <div class="md-nav__link md-nav__container"> <a href="../../../../module_guides/llama_deploy/" class="md-nav__link "> <span class="md-ellipsis"> Llama Deploy </span> </a> <label class="md-nav__link " for="__nav_5_13" id="__nav_5_13_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_13_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_13"> <span class="md-nav__icon md-icon"></span> Llama Deploy </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../module_guides/llama_deploy/10_getting_started/" class="md-nav__link"> <span class="md-ellipsis"> Getting Started </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/llama_deploy/20_core_components/" class="md-nav__link"> <span class="md-ellipsis"> Core Components </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/llama_deploy/30_manual_orchestration/" class="md-nav__link"> <span class="md-ellipsis"> Manual orchestration </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/llama_deploy/40_python_sdk/" class="md-nav__link"> <span class="md-ellipsis"> Python SDK </span> </a> </li> <li class="md-nav__item"> <a href="../../../../module_guides/llama_deploy/50_llamactl/" class="md-nav__link"> <span class="md-ellipsis"> CLI </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_6" > <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0"> <span class="md-ellipsis"> Advanced Topics </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_6"> <span class="md-nav__icon md-icon"></span> Advanced Topics </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../optimizing/production_rag/" class="md-nav__link"> <span class="md-ellipsis"> Building Performant RAG Applications for Production </span> </a> </li> <li class="md-nav__item"> <a href="../../../../optimizing/basic_strategies/basic_strategies/" class="md-nav__link"> <span class="md-ellipsis"> Basic Strategies </span> </a> </li> <li class="md-nav__item"> <a href="../../../../optimizing/agentic_strategies/agentic_strategies/" class="md-nav__link"> <span class="md-ellipsis"> Agentic strategies </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_4" > <label class="md-nav__link" for="__nav_6_4" id="__nav_6_4_label" tabindex="0"> <span class="md-ellipsis"> Retrieval </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_6_4"> <span class="md-nav__icon md-icon"></span> Retrieval </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../optimizing/advanced_retrieval/advanced_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Advanced Retrieval Strategies </span> </a> </li> <li class="md-nav__item"> <a href="../../../../optimizing/advanced_retrieval/query_transformations/" class="md-nav__link"> <span class="md-ellipsis"> Query Transformations </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_6_5" > <label class="md-nav__link" for="__nav_6_5" id="__nav_6_5_label" tabindex="0"> <span class="md-ellipsis"> Evaluation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_6_5"> <span class="md-nav__icon md-icon"></span> Evaluation </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../optimizing/evaluation/component_wise_evaluation/" class="md-nav__link"> <span class="md-ellipsis"> Component Wise Evaluation </span> </a> </li> <li class="md-nav__item"> <a href="../../../../optimizing/evaluation/e2e_evaluation/" class="md-nav__link"> <span class="md-ellipsis"> End-to-End Evaluation </span> </a> </li> <li class="md-nav__item"> <a href="../../../../optimizing/evaluation/evaluation/" class="md-nav__link"> <span class="md-ellipsis"> Evaluation </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../optimizing/fine-tuning/fine-tuning/" class="md-nav__link"> <span class="md-ellipsis"> Fine-Tuning </span> </a> </li> <li class="md-nav__item"> <a href="../../../../optimizing/custom_modules/" class="md-nav__link"> <span class="md-ellipsis"> Writing Custom Modules </span> </a> </li> <li class="md-nav__item"> <a href="../../../../optimizing/building_rag_from_scratch/" class="md-nav__link"> <span class="md-ellipsis"> Building RAG from Scratch (Lower-Level) </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_7" checked> <div class="md-nav__link md-nav__container"> <a href="../../../" class="md-nav__link "> <span class="md-ellipsis"> API Reference </span> </a> <label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex=""> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_7"> <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_7_2" > <div class="md-nav__link md-nav__container"> <a href="../../../agent/" class="md-nav__link "> <span class="md-ellipsis"> Agents </span> </a> <label class="md-nav__link " for="__nav_7_2" id="__nav_7_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_7_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_2"> <span class="md-nav__icon md-icon"></span> Agents </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../agent/coa/" class="md-nav__link"> <span class="md-ellipsis"> Coa </span> </a> </li> <li class="md-nav__item"> <a href="../../../agent/dashscope/" class="md-nav__link"> <span class="md-ellipsis"> Dashscope </span> </a> </li> <li class="md-nav__item"> <a href="../../../agent/introspective/" class="md-nav__link"> <span class="md-ellipsis"> Introspective </span> </a> </li> <li class="md-nav__item"> <a href="../../../agent/lats/" class="md-nav__link"> <span class="md-ellipsis"> Lats </span> </a> </li> <li class="md-nav__item"> <a href="../../../agent/llm_compiler/" class="md-nav__link"> <span class="md-ellipsis"> Llm compiler </span> </a> </li> <li class="md-nav__item"> <a href="../../../agent/openai/" class="md-nav__link"> <span class="md-ellipsis"> Openai </span> </a> </li> <li class="md-nav__item"> <a href="../../../agent/openai_legacy/" class="md-nav__link"> <span class="md-ellipsis"> Openai legacy </span> </a> </li> <li class="md-nav__item"> <a href="../../../agent/react/" class="md-nav__link"> <span class="md-ellipsis"> React </span> </a> </li> <li class="md-nav__item"> <a href="../../../agent/workflow/" class="md-nav__link"> <span class="md-ellipsis"> Workflow </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_7_3" > <div class="md-nav__link md-nav__container"> <a href="../../../callbacks/" class="md-nav__link "> <span class="md-ellipsis"> Callbacks </span> </a> <label class="md-nav__link " for="__nav_7_3" id="__nav_7_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_7_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_3"> <span class="md-nav__icon md-icon"></span> Callbacks </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../callbacks/agentops/" class="md-nav__link"> <span class="md-ellipsis"> Agentops </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/aim/" class="md-nav__link"> <span class="md-ellipsis"> Aim </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/argilla/" class="md-nav__link"> <span class="md-ellipsis"> Argilla </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/arize_phoenix/" class="md-nav__link"> <span class="md-ellipsis"> Arize phoenix </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/deepeval/" class="md-nav__link"> <span class="md-ellipsis"> Deepeval </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/honeyhive/" class="md-nav__link"> <span class="md-ellipsis"> Honeyhive </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/langfuse/" class="md-nav__link"> <span class="md-ellipsis"> Langfuse </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/literalai/" class="md-nav__link"> <span class="md-ellipsis"> Literalai </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/llama_debug/" class="md-nav__link"> <span class="md-ellipsis"> Llama debug </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/openinference/" class="md-nav__link"> <span class="md-ellipsis"> Openinference </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/opentelemetry.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/opik/" class="md-nav__link"> <span class="md-ellipsis"> Opik </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/promptlayer/" class="md-nav__link"> <span class="md-ellipsis"> Promptlayer </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/token_counter/" class="md-nav__link"> <span class="md-ellipsis"> Token counter </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/uptrain/" class="md-nav__link"> <span class="md-ellipsis"> Uptrain </span> </a> </li> <li class="md-nav__item"> <a href="../../../callbacks/wandb/" class="md-nav__link"> <span class="md-ellipsis"> Wandb </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_7_4" > <div class="md-nav__link md-nav__container"> <a href="../../../chat_engines/" class="md-nav__link "> <span class="md-ellipsis"> Chat Engines </span> </a> <label class="md-nav__link " for="__nav_7_4" id="__nav_7_4_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_4"> <span class="md-nav__icon md-icon"></span> Chat Engines </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../chat_engines/condense_plus_context/" class="md-nav__link"> <span class="md-ellipsis"> Condense plus context </span> </a> </li> <li class="md-nav__item"> <a href="../../../chat_engines/condense_question/" class="md-nav__link"> <span class="md-ellipsis"> Condense question </span> </a> </li> <li class="md-nav__item"> <a href="../../../chat_engines/context/" class="md-nav__link"> <span class="md-ellipsis"> Context </span> </a> </li> <li class="md-nav__item"> <a href="../../../chat_engines/simple/" class="md-nav__link"> <span class="md-ellipsis"> Simple </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_7_5" > <div class="md-nav__link md-nav__container"> <a href="../../../embeddings/" class="md-nav__link "> <span class="md-ellipsis"> Embeddings </span> </a> <label class="md-nav__link " for="__nav_7_5" id="__nav_7_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_7_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_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="../../../embeddings/adapter/" class="md-nav__link"> <span class="md-ellipsis"> Adapter </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/alephalpha/" class="md-nav__link"> <span class="md-ellipsis"> Alephalpha </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/alibabacloud_aisearch/" class="md-nav__link"> <span class="md-ellipsis"> Alibabacloud aisearch </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/anyscale/" class="md-nav__link"> <span class="md-ellipsis"> Anyscale </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/azure_inference/" class="md-nav__link"> <span class="md-ellipsis"> Azure inference </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/azure_openai/" class="md-nav__link"> <span class="md-ellipsis"> Azure openai </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/bedrock/" class="md-nav__link"> <span class="md-ellipsis"> Bedrock </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/clarifai/" class="md-nav__link"> <span class="md-ellipsis"> Clarifai </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/clip/" class="md-nav__link"> <span class="md-ellipsis"> Clip </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/cloudflare_workersai/" class="md-nav__link"> <span class="md-ellipsis"> Cloudflare workersai </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/cohere/" class="md-nav__link"> <span class="md-ellipsis"> Cohere </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/dashscope/" class="md-nav__link"> <span class="md-ellipsis"> Dashscope </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/databricks/" class="md-nav__link"> <span class="md-ellipsis"> Databricks </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/deepinfra/" class="md-nav__link"> <span class="md-ellipsis"> Deepinfra </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/elasticsearch/" class="md-nav__link"> <span class="md-ellipsis"> Elasticsearch </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/fastembed/" class="md-nav__link"> <span class="md-ellipsis"> Fastembed </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/fireworks/" class="md-nav__link"> <span class="md-ellipsis"> Fireworks </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/gaudi/" class="md-nav__link"> <span class="md-ellipsis"> Gaudi </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/gemini/" class="md-nav__link"> <span class="md-ellipsis"> Gemini </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/gigachat/" class="md-nav__link"> <span class="md-ellipsis"> Gigachat </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/google/" class="md-nav__link"> <span class="md-ellipsis"> Google </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/gradient.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/huggingface/" class="md-nav__link"> <span class="md-ellipsis"> Huggingface </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/huggingface_api/" class="md-nav__link"> <span class="md-ellipsis"> Huggingface api </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/huggingface_openvino/" class="md-nav__link"> <span class="md-ellipsis"> Huggingface openvino </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/huggingface_optimum/" class="md-nav__link"> <span class="md-ellipsis"> Huggingface optimum </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/huggingface_optimum_intel/" class="md-nav__link"> <span class="md-ellipsis"> Huggingface optimum intel </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/ibm/" class="md-nav__link"> <span class="md-ellipsis"> Ibm </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/instructor/" class="md-nav__link"> <span class="md-ellipsis"> Instructor </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/ipex_llm/" class="md-nav__link"> <span class="md-ellipsis"> Ipex llm </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/jinaai/" class="md-nav__link"> <span class="md-ellipsis"> Jinaai </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/langchain/" class="md-nav__link"> <span class="md-ellipsis"> Langchain </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/litellm/" class="md-nav__link"> <span class="md-ellipsis"> Litellm </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/llamafile/" class="md-nav__link"> <span class="md-ellipsis"> Llamafile </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/llm_rails/" class="md-nav__link"> <span class="md-ellipsis"> Llm rails </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/mistralai/" class="md-nav__link"> <span class="md-ellipsis"> Mistralai </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/mixedbreadai/" class="md-nav__link"> <span class="md-ellipsis"> Mixedbreadai </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/modelscope/" class="md-nav__link"> <span class="md-ellipsis"> Modelscope </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/nebius/" class="md-nav__link"> <span class="md-ellipsis"> Nebius </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/nomic/" class="md-nav__link"> <span class="md-ellipsis"> Nomic </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/nvidia/" class="md-nav__link"> <span class="md-ellipsis"> Nvidia </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/oci_data_science/" class="md-nav__link"> <span class="md-ellipsis"> Oci data science </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/oci_genai/" class="md-nav__link"> <span class="md-ellipsis"> Oci genai </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/octoai.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/ollama/" class="md-nav__link"> <span class="md-ellipsis"> Ollama </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/opea/" class="md-nav__link"> <span class="md-ellipsis"> Opea </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/openai/" class="md-nav__link"> <span class="md-ellipsis"> Openai </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/oracleai/" class="md-nav__link"> <span class="md-ellipsis"> Oracleai </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/premai/" class="md-nav__link"> <span class="md-ellipsis"> Premai </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/sagemaker_endpoint/" class="md-nav__link"> <span class="md-ellipsis"> Sagemaker endpoint </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/siliconflow/" class="md-nav__link"> <span class="md-ellipsis"> Siliconflow </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/text_embeddings_inference/" class="md-nav__link"> <span class="md-ellipsis"> Text embeddings inference </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/textembed/" class="md-nav__link"> <span class="md-ellipsis"> Textembed </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/together/" class="md-nav__link"> <span class="md-ellipsis"> Together </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/upstage/" class="md-nav__link"> <span class="md-ellipsis"> Upstage </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/vertex/" class="md-nav__link"> <span class="md-ellipsis"> Vertex </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/vertex_endpoint/" class="md-nav__link"> <span class="md-ellipsis"> Vertex endpoint </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/vllm/" class="md-nav__link"> <span class="md-ellipsis"> Vllm </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/voyageai/" class="md-nav__link"> <span class="md-ellipsis"> Voyageai </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/xinference/" class="md-nav__link"> <span class="md-ellipsis"> Xinference </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/yandexgpt/" class="md-nav__link"> <span class="md-ellipsis"> Yandexgpt </span> </a> </li> <li class="md-nav__item"> <a href="../../../embeddings/zhipuai/" class="md-nav__link"> <span class="md-ellipsis"> Zhipuai </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_7_6" > <div class="md-nav__link md-nav__container"> <a href="../../../evaluation/" class="md-nav__link "> <span class="md-ellipsis"> Evaluation </span> </a> <label class="md-nav__link " for="__nav_7_6" id="__nav_7_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_7_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_6"> <span class="md-nav__icon md-icon"></span> Evaluation </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../evaluation/answer_relevancy/" class="md-nav__link"> <span class="md-ellipsis"> Answer relevancy </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/context_relevancy/" class="md-nav__link"> <span class="md-ellipsis"> Context relevancy </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/correctness/" class="md-nav__link"> <span class="md-ellipsis"> Correctness </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/dataset_generation/" class="md-nav__link"> <span class="md-ellipsis"> Dataset generation </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/faithfullness/" class="md-nav__link"> <span class="md-ellipsis"> Faithfullness </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/guideline/" class="md-nav__link"> <span class="md-ellipsis"> Guideline </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/metrics/" class="md-nav__link"> <span class="md-ellipsis"> Metrics </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multi modal </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/pairwise_comparison/" class="md-nav__link"> <span class="md-ellipsis"> Pairwise comparison </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/query_response/" class="md-nav__link"> <span class="md-ellipsis"> Query response </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/response/" class="md-nav__link"> <span class="md-ellipsis"> Response </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Retrieval </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/semantic_similarity/" class="md-nav__link"> <span class="md-ellipsis"> Semantic similarity </span> </a> </li> <li class="md-nav__item"> <a href="../../../evaluation/tonic_validate/" class="md-nav__link"> <span class="md-ellipsis"> Tonic validate </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_7_7" > <label class="md-nav__link" for="__nav_7_7" id="__nav_7_7_label" tabindex="0"> <span class="md-ellipsis"> Graph RAG </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_7_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_7"> <span class="md-nav__icon md-icon"></span> Graph RAG </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../graph_rag/cognee/" class="md-nav__link"> <span class="md-ellipsis"> Cognee </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_7_8" > <div class="md-nav__link md-nav__container"> <a href="../../../indices/" class="md-nav__link "> <span class="md-ellipsis"> Indexes </span> </a> <label class="md-nav__link " for="__nav_7_8" id="__nav_7_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_7_8_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_8"> <span class="md-nav__icon md-icon"></span> Indexes </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../indices/bge_m3/" class="md-nav__link"> <span class="md-ellipsis"> Bge m3 </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/colbert/" class="md-nav__link"> <span class="md-ellipsis"> Colbert </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/dashscope/" class="md-nav__link"> <span class="md-ellipsis"> Dashscope </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/document_summary/" class="md-nav__link"> <span class="md-ellipsis"> Document summary </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/google/" class="md-nav__link"> <span class="md-ellipsis"> Google </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/keyword/" class="md-nav__link"> <span class="md-ellipsis"> Keyword </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/knowledge_graph/" class="md-nav__link"> <span class="md-ellipsis"> Knowledge graph </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/llama_cloud/" class="md-nav__link"> <span class="md-ellipsis"> Llama cloud </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/postgresml/" class="md-nav__link"> <span class="md-ellipsis"> Postgresml </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/property_graph/" class="md-nav__link"> <span class="md-ellipsis"> Property graph </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/summary/" class="md-nav__link"> <span class="md-ellipsis"> Summary </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/tree/" class="md-nav__link"> <span class="md-ellipsis"> Tree </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/vectara/" class="md-nav__link"> <span class="md-ellipsis"> Vectara </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/vector/" class="md-nav__link"> <span class="md-ellipsis"> Vector </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/vertexai/" class="md-nav__link"> <span class="md-ellipsis"> Vertexai </span> </a> </li> <li class="md-nav__item"> <a href="../../../indices/zilliz/" class="md-nav__link"> <span class="md-ellipsis"> Zilliz </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_7_9" > <div class="md-nav__link md-nav__container"> <a href="../../../ingestion/" class="md-nav__link "> <span class="md-ellipsis"> Ingestion </span> </a> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_9_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_9"> <span class="md-nav__icon md-icon"></span> Ingestion </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_10" > <div class="md-nav__link md-nav__container"> <a href="../../../instrumentation/" class="md-nav__link "> <span class="md-ellipsis"> Instrumentation </span> </a> <label class="md-nav__link " for="__nav_7_10" id="__nav_7_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_7_10_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_10"> <span class="md-nav__icon md-icon"></span> Instrumentation </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../instrumentation/event_handlers/" class="md-nav__link"> <span class="md-ellipsis"> Event handlers </span> </a> </li> <li class="md-nav__item"> <a href="../../../instrumentation/event_types/" class="md-nav__link"> <span class="md-ellipsis"> Event types </span> </a> </li> <li class="md-nav__item"> <a href="../../../instrumentation/span_handlers/" class="md-nav__link"> <span class="md-ellipsis"> Span handlers </span> </a> </li> <li class="md-nav__item"> <a href="../../../instrumentation/span_types/" class="md-nav__link"> <span class="md-ellipsis"> Span types </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_7_11" > <div class="md-nav__link md-nav__container"> <a href="../../../llms/" class="md-nav__link "> <span class="md-ellipsis"> LLMs </span> </a> <label class="md-nav__link " for="__nav_7_11" id="__nav_7_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_7_11_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_11"> <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="../../../llms/OptimumIntelLLM.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/ai21/" class="md-nav__link"> <span class="md-ellipsis"> Ai21 </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/alephalpha/" class="md-nav__link"> <span class="md-ellipsis"> Alephalpha </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/alibabacloud_aisearch/" class="md-nav__link"> <span class="md-ellipsis"> Alibabacloud aisearch </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/anthropic/" class="md-nav__link"> <span class="md-ellipsis"> Anthropic </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/anyscale/" class="md-nav__link"> <span class="md-ellipsis"> Anyscale </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/azure_inference/" class="md-nav__link"> <span class="md-ellipsis"> Azure inference </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/azure_openai/" class="md-nav__link"> <span class="md-ellipsis"> Azure openai </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/bedrock/" class="md-nav__link"> <span class="md-ellipsis"> Bedrock </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/bedrock_converse/" class="md-nav__link"> <span class="md-ellipsis"> Bedrock converse </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/cerebras/" class="md-nav__link"> <span class="md-ellipsis"> Cerebras </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/clarifai/" class="md-nav__link"> <span class="md-ellipsis"> Clarifai </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/cleanlab/" class="md-nav__link"> <span class="md-ellipsis"> Cleanlab </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/cohere/" class="md-nav__link"> <span class="md-ellipsis"> Cohere </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/cortex/" class="md-nav__link"> <span class="md-ellipsis"> Cortex </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/custom_llm/" class="md-nav__link"> <span class="md-ellipsis"> Custom llm </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/dashscope/" class="md-nav__link"> <span class="md-ellipsis"> Dashscope </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/databricks/" class="md-nav__link"> <span class="md-ellipsis"> Databricks </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/deepinfra/" class="md-nav__link"> <span class="md-ellipsis"> Deepinfra </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/deepseek/" class="md-nav__link"> <span class="md-ellipsis"> Deepseek </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/everlyai/" class="md-nav__link"> <span class="md-ellipsis"> Everlyai </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/fireworks/" class="md-nav__link"> <span class="md-ellipsis"> Fireworks </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/friendli/" class="md-nav__link"> <span class="md-ellipsis"> Friendli </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/gaudi/" class="md-nav__link"> <span class="md-ellipsis"> Gaudi </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/gemini/" class="md-nav__link"> <span class="md-ellipsis"> Gemini </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/gigachat/" class="md-nav__link"> <span class="md-ellipsis"> Gigachat </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/gradient.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/groq/" class="md-nav__link"> <span class="md-ellipsis"> Groq </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/huggingface/" class="md-nav__link"> <span class="md-ellipsis"> Huggingface </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/huggingface_api/" class="md-nav__link"> <span class="md-ellipsis"> Huggingface api </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/ibm/" class="md-nav__link"> <span class="md-ellipsis"> Ibm </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/ipex_llm/" class="md-nav__link"> <span class="md-ellipsis"> Ipex llm </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/keywordsai/" class="md-nav__link"> <span class="md-ellipsis"> Keywordsai </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/konko/" class="md-nav__link"> <span class="md-ellipsis"> Konko </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/langchain/" class="md-nav__link"> <span class="md-ellipsis"> Langchain </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/litellm/" class="md-nav__link"> <span class="md-ellipsis"> Litellm </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/llama_api/" class="md-nav__link"> <span class="md-ellipsis"> Llama api </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/llama_cpp/" class="md-nav__link"> <span class="md-ellipsis"> Llama cpp </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/llamafile/" class="md-nav__link"> <span class="md-ellipsis"> Llamafile </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/lmstudio/" class="md-nav__link"> <span class="md-ellipsis"> Lmstudio </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/localai/" class="md-nav__link"> <span class="md-ellipsis"> Localai </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/maritalk/" class="md-nav__link"> <span class="md-ellipsis"> Maritalk </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/mistral_rs/" class="md-nav__link"> <span class="md-ellipsis"> Mistral rs </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/mistralai/" class="md-nav__link"> <span class="md-ellipsis"> Mistralai </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/mlx/" class="md-nav__link"> <span class="md-ellipsis"> Mlx </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/modelscope/" class="md-nav__link"> <span class="md-ellipsis"> Modelscope </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/monsterapi/" class="md-nav__link"> <span class="md-ellipsis"> Monsterapi </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/mymagic/" class="md-nav__link"> <span class="md-ellipsis"> Mymagic </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/nebius/" class="md-nav__link"> <span class="md-ellipsis"> Nebius </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/neutrino/" class="md-nav__link"> <span class="md-ellipsis"> Neutrino </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/nvidia/" class="md-nav__link"> <span class="md-ellipsis"> Nvidia </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/nvidia_tensorrt/" class="md-nav__link"> <span class="md-ellipsis"> Nvidia tensorrt </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/nvidia_triton/" class="md-nav__link"> <span class="md-ellipsis"> Nvidia triton </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/oci_data_science/" class="md-nav__link"> <span class="md-ellipsis"> Oci data science </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/oci_genai/" class="md-nav__link"> <span class="md-ellipsis"> Oci genai </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/octoai/" class="md-nav__link"> <span class="md-ellipsis"> Octoai </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/ollama/" class="md-nav__link"> <span class="md-ellipsis"> Ollama </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/opea/" class="md-nav__link"> <span class="md-ellipsis"> Opea </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/openai/" class="md-nav__link"> <span class="md-ellipsis"> Openai </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/openai_like/" class="md-nav__link"> <span class="md-ellipsis"> Openai like </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/openllm/" class="md-nav__link"> <span class="md-ellipsis"> Openllm </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/openrouter/" class="md-nav__link"> <span class="md-ellipsis"> Openrouter </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/openvino/" class="md-nav__link"> <span class="md-ellipsis"> Openvino </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/openvino_genai/" class="md-nav__link"> <span class="md-ellipsis"> Openvino genai </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/optimum_intel/" class="md-nav__link"> <span class="md-ellipsis"> Optimum intel </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/paieas/" class="md-nav__link"> <span class="md-ellipsis"> Paieas </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/palm/" class="md-nav__link"> <span class="md-ellipsis"> Palm </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/perplexity/" class="md-nav__link"> <span class="md-ellipsis"> Perplexity </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/pipeshift/" class="md-nav__link"> <span class="md-ellipsis"> Pipeshift </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/portkey/" class="md-nav__link"> <span class="md-ellipsis"> Portkey </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/predibase/" class="md-nav__link"> <span class="md-ellipsis"> Predibase </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/premai/" class="md-nav__link"> <span class="md-ellipsis"> Premai </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/qianfan/" class="md-nav__link"> <span class="md-ellipsis"> Qianfan </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/reka/" class="md-nav__link"> <span class="md-ellipsis"> Reka </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/replicate/" class="md-nav__link"> <span class="md-ellipsis"> Replicate </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/rungpt/" class="md-nav__link"> <span class="md-ellipsis"> Rungpt </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/sagemaker_endpoint/" class="md-nav__link"> <span class="md-ellipsis"> Sagemaker endpoint </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/sambanovasystems/" class="md-nav__link"> <span class="md-ellipsis"> Sambanovasystems </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/siliconflow/" class="md-nav__link"> <span class="md-ellipsis"> Siliconflow </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/solar.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/stepfun/" class="md-nav__link"> <span class="md-ellipsis"> Stepfun </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/text_generation_inference/" class="md-nav__link"> <span class="md-ellipsis"> Text generation inference </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/together/" class="md-nav__link"> <span class="md-ellipsis"> Together </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/unify.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/upstage/" class="md-nav__link"> <span class="md-ellipsis"> Upstage </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/vertex/" class="md-nav__link"> <span class="md-ellipsis"> Vertex </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/vllm/" class="md-nav__link"> <span class="md-ellipsis"> Vllm </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/xinference/" class="md-nav__link"> <span class="md-ellipsis"> Xinference </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/yi/" class="md-nav__link"> <span class="md-ellipsis"> Yi </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/you/" class="md-nav__link"> <span class="md-ellipsis"> You </span> </a> </li> <li class="md-nav__item"> <a href="../../../llms/zhipuai/" class="md-nav__link"> <span class="md-ellipsis"> Zhipuai </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_7_12" > <div class="md-nav__link md-nav__container"> <a href="../../../llama_dataset/" class="md-nav__link "> <span class="md-ellipsis"> Llama Datasets </span> </a> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_12_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_12"> <span class="md-nav__icon md-icon"></span> Llama Datasets </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_13" > <label class="md-nav__link" for="__nav_7_13" id="__nav_7_13_label" tabindex="0"> <span class="md-ellipsis"> Llama Deploy </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_13_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_13"> <span class="md-nav__icon md-icon"></span> Llama Deploy </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../llama_deploy/apiserver/" class="md-nav__link"> <span class="md-ellipsis"> apiserver </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/control_plane/" class="md-nav__link"> <span class="md-ellipsis"> control_plane </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/deploy/" class="md-nav__link"> <span class="md-ellipsis"> deploy </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/message_consumers/" class="md-nav__link"> <span class="md-ellipsis"> message_consumers </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/message_publishers/" class="md-nav__link"> <span class="md-ellipsis"> message_publishers </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/messages/" class="md-nav__link"> <span class="md-ellipsis"> messages </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/orchestrators/" class="md-nav__link"> <span class="md-ellipsis"> orchestrators </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/python_sdk/" class="md-nav__link"> <span class="md-ellipsis"> Python SDK </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/services/" class="md-nav__link"> <span class="md-ellipsis"> services </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/types/" class="md-nav__link"> <span class="md-ellipsis"> types </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_13_11" > <div class="md-nav__link md-nav__container"> <a href="../../../llama_deploy/message_queues/" class="md-nav__link "> <span class="md-ellipsis"> message_queues </span> </a> <label class="md-nav__link " for="__nav_7_13_11" id="__nav_7_13_11_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_7_13_11_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_13_11"> <span class="md-nav__icon md-icon"></span> message_queues </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../llama_deploy/message_queues/kafka/" class="md-nav__link"> <span class="md-ellipsis"> apache_kafka </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/message_queues/rabbitmq/" class="md-nav__link"> <span class="md-ellipsis"> rabbitmq </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/message_queues/redis/" class="md-nav__link"> <span class="md-ellipsis"> redis </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/message_queues/simple/" class="md-nav__link"> <span class="md-ellipsis"> simple </span> </a> </li> <li class="md-nav__item"> <a href="../../../llama_deploy/message_queues/solace/" class="md-nav__link"> <span class="md-ellipsis"> solace </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_7_14" > <div class="md-nav__link md-nav__container"> <a href="../../../packs/" class="md-nav__link "> <span class="md-ellipsis"> Llama Packs </span> </a> <label class="md-nav__link " for="__nav_7_14" id="__nav_7_14_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_14_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_14"> <span class="md-nav__icon md-icon"></span> Llama Packs </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../packs/agent_search_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Agent search retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/agents_coa/" class="md-nav__link"> <span class="md-ellipsis"> Agents coa </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/agents_lats/" class="md-nav__link"> <span class="md-ellipsis"> Agents lats </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/agents_llm_compiler/" class="md-nav__link"> <span class="md-ellipsis"> Agents llm compiler </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/amazon_product_extraction/" class="md-nav__link"> <span class="md-ellipsis"> Amazon product extraction </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/arize_phoenix_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Arize phoenix query engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/auto_merging_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Auto merging retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/chroma_autoretrieval/" class="md-nav__link"> <span class="md-ellipsis"> Chroma autoretrieval </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/code_hierarchy/" class="md-nav__link"> <span class="md-ellipsis"> Code hierarchy </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/cogniswitch_agent/" class="md-nav__link"> <span class="md-ellipsis"> Cogniswitch agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/cohere_citation_chat/" class="md-nav__link"> <span class="md-ellipsis"> Cohere citation chat </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/corrective_rag/" class="md-nav__link"> <span class="md-ellipsis"> Corrective rag </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/deeplake_deepmemory_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Deeplake deepmemory retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/deeplake_multimodal_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Deeplake multimodal retrieval </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/dense_x_retrieval/" class="md-nav__link"> <span class="md-ellipsis"> Dense x retrieval </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/diff_private_simple_dataset/" class="md-nav__link"> <span class="md-ellipsis"> Diff private simple dataset </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/evaluator_benchmarker/" class="md-nav__link"> <span class="md-ellipsis"> Evaluator benchmarker </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/fusion_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Fusion retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/fuzzy_citation/" class="md-nav__link"> <span class="md-ellipsis"> Fuzzy citation </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/gmail_openai_agent/" class="md-nav__link"> <span class="md-ellipsis"> Gmail openai agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/gradio_agent_chat/" class="md-nav__link"> <span class="md-ellipsis"> Gradio agent chat </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/gradio_react_agent_chatbot/" class="md-nav__link"> <span class="md-ellipsis"> Gradio react agent chatbot </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/infer_retrieve_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Infer retrieve rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/koda_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Koda retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/llama_dataset_metadata/" class="md-nav__link"> <span class="md-ellipsis"> Llama dataset metadata </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/llama_guard_moderator/" class="md-nav__link"> <span class="md-ellipsis"> Llama guard moderator </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/llava_completion/" class="md-nav__link"> <span class="md-ellipsis"> Llava completion </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/longrag/" class="md-nav__link"> <span class="md-ellipsis"> Longrag </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/mixture_of_agents/" class="md-nav__link"> <span class="md-ellipsis"> Mixture of agents </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/multi_document_agents/" class="md-nav__link"> <span class="md-ellipsis"> Multi document agents </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/multi_tenancy_rag/" class="md-nav__link"> <span class="md-ellipsis"> Multi tenancy rag </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/multidoc_autoretrieval/" class="md-nav__link"> <span class="md-ellipsis"> Multidoc autoretrieval </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/nebulagraph_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Nebulagraph query engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/neo4j_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Neo4j query engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/node_parser_semantic_chunking/" class="md-nav__link"> <span class="md-ellipsis"> Node parser semantic chunking </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/ollama_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Ollama query engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/panel_chatbot/" class="md-nav__link"> <span class="md-ellipsis"> Panel chatbot </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/query_understanding_agent/" class="md-nav__link"> <span class="md-ellipsis"> Query understanding agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/raft_dataset/" class="md-nav__link"> <span class="md-ellipsis"> Raft dataset </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/rag_cli_local/" class="md-nav__link"> <span class="md-ellipsis"> Rag cli local </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/rag_evaluator/" class="md-nav__link"> <span class="md-ellipsis"> Rag evaluator </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/rag_fusion_query_pipeline/" class="md-nav__link"> <span class="md-ellipsis"> Rag fusion query pipeline </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/ragatouille_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Ragatouille retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/raptor/" class="md-nav__link"> <span class="md-ellipsis"> Raptor </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/recursive_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Recursive retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/resume_screener/" class="md-nav__link"> <span class="md-ellipsis"> Resume screener </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/retry_engine_weaviate/" class="md-nav__link"> <span class="md-ellipsis"> Retry engine weaviate </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/secgpt/" class="md-nav__link"> <span class="md-ellipsis"> Secgpt </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/self_discover/" class="md-nav__link"> <span class="md-ellipsis"> Self discover </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/self_rag/" class="md-nav__link"> <span class="md-ellipsis"> Self rag </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/sentence_window_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Sentence window retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/snowflake_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Snowflake query engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/stock_market_data_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Stock market data query engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/streamlit_chatbot/" class="md-nav__link"> <span class="md-ellipsis"> Streamlit chatbot </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/sub_question_weaviate/" class="md-nav__link"> <span class="md-ellipsis"> Sub question weaviate </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/tables/" class="md-nav__link"> <span class="md-ellipsis"> Tables </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/timescale_vector_autoretrieval/" class="md-nav__link"> <span class="md-ellipsis"> Timescale vector autoretrieval </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/trulens_eval_packs/" class="md-nav__link"> <span class="md-ellipsis"> Trulens eval packs </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/vanna.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/vectara_rag/" class="md-nav__link"> <span class="md-ellipsis"> Vectara rag </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/voyage_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Voyage query engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/zenguard/" class="md-nav__link"> <span class="md-ellipsis"> Zenguard </span> </a> </li> <li class="md-nav__item"> <a href="../../../packs/zephyr_query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Zephyr query engine </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_7_15" > <div class="md-nav__link md-nav__container"> <a href="../../../memory/" class="md-nav__link "> <span class="md-ellipsis"> Memory </span> </a> <label class="md-nav__link " for="__nav_7_15" id="__nav_7_15_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_15_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_15"> <span class="md-nav__icon md-icon"></span> Memory </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../memory/chat_memory_buffer/" class="md-nav__link"> <span class="md-ellipsis"> Chat memory buffer </span> </a> </li> <li class="md-nav__item"> <a href="../../../memory/mem0/" class="md-nav__link"> <span class="md-ellipsis"> Mem0 </span> </a> </li> <li class="md-nav__item"> <a href="../../../memory/simple_composable_memory/" class="md-nav__link"> <span class="md-ellipsis"> Simple composable memory </span> </a> </li> <li class="md-nav__item"> <a href="../../../memory/vector_memory/" class="md-nav__link"> <span class="md-ellipsis"> Vector memory </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_7_16" > <div class="md-nav__link md-nav__container"> <a href="../../../extractors/" class="md-nav__link "> <span class="md-ellipsis"> Metadata Extractors </span> </a> <label class="md-nav__link " for="__nav_7_16" id="__nav_7_16_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_16_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_16"> <span class="md-nav__icon md-icon"></span> Metadata Extractors </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../extractors/documentcontext/" class="md-nav__link"> <span class="md-ellipsis"> Documentcontext </span> </a> </li> <li class="md-nav__item"> <a href="../../../extractors/entity/" class="md-nav__link"> <span class="md-ellipsis"> Entity </span> </a> </li> <li class="md-nav__item"> <a href="../../../extractors/keyword/" class="md-nav__link"> <span class="md-ellipsis"> Keyword </span> </a> </li> <li class="md-nav__item"> <a href="../../../extractors/llama_extract.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../extractors/marvin/" class="md-nav__link"> <span class="md-ellipsis"> Marvin </span> </a> </li> <li class="md-nav__item"> <a href="../../../extractors/pydantic/" class="md-nav__link"> <span class="md-ellipsis"> Pydantic </span> </a> </li> <li class="md-nav__item"> <a href="../../../extractors/question/" class="md-nav__link"> <span class="md-ellipsis"> Question </span> </a> </li> <li class="md-nav__item"> <a href="../../../extractors/relik/" class="md-nav__link"> <span class="md-ellipsis"> Relik </span> </a> </li> <li class="md-nav__item"> <a href="../../../extractors/summary/" class="md-nav__link"> <span class="md-ellipsis"> Summary </span> </a> </li> <li class="md-nav__item"> <a href="../../../extractors/title/" class="md-nav__link"> <span class="md-ellipsis"> Title </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_7_17" > <div class="md-nav__link md-nav__container"> <a href="../../../multi_modal_llms/" class="md-nav__link "> <span class="md-ellipsis"> Multi-Modal LLMs </span> </a> <label class="md-nav__link " for="__nav_7_17" id="__nav_7_17_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_17_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_17"> <span class="md-nav__icon md-icon"></span> Multi-Modal LLMs </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../multi_modal_llms/anthropic/" class="md-nav__link"> <span class="md-ellipsis"> Anthropic </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/azure_openai/" class="md-nav__link"> <span class="md-ellipsis"> Azure openai </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/bedrock/" class="md-nav__link"> <span class="md-ellipsis"> Bedrock </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/dashscope/" class="md-nav__link"> <span class="md-ellipsis"> Dashscope </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/gemini/" class="md-nav__link"> <span class="md-ellipsis"> Gemini </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/huggingface/" class="md-nav__link"> <span class="md-ellipsis"> Huggingface </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/mistralai/" class="md-nav__link"> <span class="md-ellipsis"> Mistralai </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/nebius/" class="md-nav__link"> <span class="md-ellipsis"> Nebius </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/nvidia/" class="md-nav__link"> <span class="md-ellipsis"> Nvidia </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/ollama/" class="md-nav__link"> <span class="md-ellipsis"> Ollama </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/openai/" class="md-nav__link"> <span class="md-ellipsis"> Openai </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/openvino/" class="md-nav__link"> <span class="md-ellipsis"> Openvino </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/reka/" class="md-nav__link"> <span class="md-ellipsis"> Reka </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/replicate/" class="md-nav__link"> <span class="md-ellipsis"> Replicate </span> </a> </li> <li class="md-nav__item"> <a href="../../../multi_modal_llms/zhipuai/" class="md-nav__link"> <span class="md-ellipsis"> Zhipuai </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_7_18" > <div class="md-nav__link md-nav__container"> <a href="../../../node_parsers/" class="md-nav__link "> <span class="md-ellipsis"> Node Parsers & Text Splitters </span> </a> <label class="md-nav__link " for="__nav_7_18" id="__nav_7_18_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_18_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_18"> <span class="md-nav__icon md-icon"></span> Node Parsers & Text Splitters </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../node_parser/alibabacloud_aisearch/" class="md-nav__link"> <span class="md-ellipsis"> Alibabacloud aisearch </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parser/dashscope/" class="md-nav__link"> <span class="md-ellipsis"> Dashscope </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parser/docling/" class="md-nav__link"> <span class="md-ellipsis"> Docling </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parser/topic/" class="md-nav__link"> <span class="md-ellipsis"> Topic </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/code/" class="md-nav__link"> <span class="md-ellipsis"> Code </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/hierarchical/" class="md-nav__link"> <span class="md-ellipsis"> Hierarchical </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/html/" class="md-nav__link"> <span class="md-ellipsis"> Html </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/json/" class="md-nav__link"> <span class="md-ellipsis"> Json </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/langchain/" class="md-nav__link"> <span class="md-ellipsis"> Langchain </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/markdown/" class="md-nav__link"> <span class="md-ellipsis"> Markdown </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/markdown_element/" class="md-nav__link"> <span class="md-ellipsis"> Markdown element </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/semantic_splitter/" class="md-nav__link"> <span class="md-ellipsis"> Semantic splitter </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/sentence_splitter/" class="md-nav__link"> <span class="md-ellipsis"> Sentence splitter </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/sentence_window/" class="md-nav__link"> <span class="md-ellipsis"> Sentence window </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/token_text_splitter/" class="md-nav__link"> <span class="md-ellipsis"> Token text splitter </span> </a> </li> <li class="md-nav__item"> <a href="../../../node_parsers/unstructured_element/" class="md-nav__link"> <span class="md-ellipsis"> Unstructured element </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_7_19" > <div class="md-nav__link md-nav__container"> <a href="../../../postprocessor/" class="md-nav__link "> <span class="md-ellipsis"> Node Postprocessors </span> </a> <label class="md-nav__link " for="__nav_7_19" id="__nav_7_19_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_19_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_19"> <span class="md-nav__icon md-icon"></span> Node Postprocessors </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../postprocessor/NER_PII/" class="md-nav__link"> <span class="md-ellipsis"> NER PII </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/PII/" class="md-nav__link"> <span class="md-ellipsis"> PII </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/alibabacloud_aisearch_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Alibabacloud aisearch rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/auto_prev_next/" class="md-nav__link"> <span class="md-ellipsis"> Auto prev next </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/bedrock_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Bedrock rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/cohere_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Cohere rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/colbert_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Colbert rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/colpali_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Colpali rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/dashscope_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Dashscope rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/embedding_recency/" class="md-nav__link"> <span class="md-ellipsis"> Embedding recency </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/fixed_recency/" class="md-nav__link"> <span class="md-ellipsis"> Fixed recency </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/flag_embedding_reranker/" class="md-nav__link"> <span class="md-ellipsis"> Flag embedding reranker </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/jinaai_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Jinaai rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/keyword/" class="md-nav__link"> <span class="md-ellipsis"> Keyword </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/llm_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Llm rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/long_context_reorder/" class="md-nav__link"> <span class="md-ellipsis"> Long context reorder </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/longllmlingua/" class="md-nav__link"> <span class="md-ellipsis"> Longllmlingua </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/metadata_replacement/" class="md-nav__link"> <span class="md-ellipsis"> Metadata replacement </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/mixedbreadai_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Mixedbreadai rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/nvidia_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Nvidia rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/openvino_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Openvino rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/pinecone_native_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Pinecone native rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/presidio/" class="md-nav__link"> <span class="md-ellipsis"> Presidio </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/prev_next/" class="md-nav__link"> <span class="md-ellipsis"> Prev next </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/rankgpt_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Rankgpt rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/rankllm_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Rankllm rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/sbert_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Sbert rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/sentence_optimizer/" class="md-nav__link"> <span class="md-ellipsis"> Sentence optimizer </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/siliconflow_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Siliconflow rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/similarity/" class="md-nav__link"> <span class="md-ellipsis"> Similarity </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/tei_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Tei rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/time_weighted/" class="md-nav__link"> <span class="md-ellipsis"> Time weighted </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/voyageai_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Voyageai rerank </span> </a> </li> <li class="md-nav__item"> <a href="../../../postprocessor/xinference_rerank/" class="md-nav__link"> <span class="md-ellipsis"> Xinference 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_7_20" > <div class="md-nav__link md-nav__container"> <a href="../../../objects/" class="md-nav__link "> <span class="md-ellipsis"> Object Stores </span> </a> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_20_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_20"> <span class="md-nav__icon md-icon"></span> Object Stores </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_21" > <div class="md-nav__link md-nav__container"> <a href="../../../output_parsers/" class="md-nav__link "> <span class="md-ellipsis"> Output Parsers </span> </a> <label class="md-nav__link " for="__nav_7_21" id="__nav_7_21_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_21_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_21"> <span class="md-nav__icon md-icon"></span> Output Parsers </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../output_parsers/guardrails/" class="md-nav__link"> <span class="md-ellipsis"> Guardrails </span> </a> </li> <li class="md-nav__item"> <a href="../../../output_parsers/langchain/" class="md-nav__link"> <span class="md-ellipsis"> Langchain </span> </a> </li> <li class="md-nav__item"> <a href="../../../output_parsers/pydantic/" class="md-nav__link"> <span class="md-ellipsis"> Pydantic </span> </a> </li> <li class="md-nav__item"> <a href="../../../output_parsers/selection/" class="md-nav__link"> <span class="md-ellipsis"> Selection </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_7_22" > <div class="md-nav__link md-nav__container"> <a href="../../../program/" class="md-nav__link "> <span class="md-ellipsis"> Programs </span> </a> <label class="md-nav__link " for="__nav_7_22" id="__nav_7_22_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_22_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_22"> <span class="md-nav__icon md-icon"></span> Programs </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../program/evaporate/" class="md-nav__link"> <span class="md-ellipsis"> Evaporate </span> </a> </li> <li class="md-nav__item"> <a href="../../../program/guidance/" class="md-nav__link"> <span class="md-ellipsis"> Guidance </span> </a> </li> <li class="md-nav__item"> <a href="../../../program/llm_text_completion/" class="md-nav__link"> <span class="md-ellipsis"> Llm text completion </span> </a> </li> <li class="md-nav__item"> <a href="../../../program/lmformatenforcer/" class="md-nav__link"> <span class="md-ellipsis"> Lmformatenforcer </span> </a> </li> <li class="md-nav__item"> <a href="../../../program/multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multi modal </span> </a> </li> <li class="md-nav__item"> <a href="../../../program/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_7_23" > <div class="md-nav__link md-nav__container"> <a href="../../../prompts/" class="md-nav__link "> <span class="md-ellipsis"> Prompts </span> </a> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_23_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_23"> <span class="md-nav__icon md-icon"></span> Prompts </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_24" > <div class="md-nav__link md-nav__container"> <a href="../../../query_engine/" class="md-nav__link "> <span class="md-ellipsis"> Query Engines </span> </a> <label class="md-nav__link " for="__nav_7_24" id="__nav_7_24_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_24_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_24"> <span class="md-nav__icon md-icon"></span> Query Engines </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../query_engine/FLARE/" class="md-nav__link"> <span class="md-ellipsis"> FLARE </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/JSONalayze/" class="md-nav__link"> <span class="md-ellipsis"> JSONalayze </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/NL_SQL_table/" class="md-nav__link"> <span class="md-ellipsis"> NL SQL table </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/PGVector_SQL/" class="md-nav__link"> <span class="md-ellipsis"> PGVector SQL </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/SQL_join/" class="md-nav__link"> <span class="md-ellipsis"> SQL join </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/SQL_table_retriever/" class="md-nav__link"> <span class="md-ellipsis"> SQL table retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/citation/" class="md-nav__link"> <span class="md-ellipsis"> Citation </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/cogniswitch/" class="md-nav__link"> <span class="md-ellipsis"> Cogniswitch </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/custom/" class="md-nav__link"> <span class="md-ellipsis"> Custom </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/knowledge_graph/" class="md-nav__link"> <span class="md-ellipsis"> Knowledge graph </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/multi_step/" class="md-nav__link"> <span class="md-ellipsis"> Multi step </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/pandas/" class="md-nav__link"> <span class="md-ellipsis"> Pandas </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/retriever/" class="md-nav__link"> <span class="md-ellipsis"> Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/retriever_router/" class="md-nav__link"> <span class="md-ellipsis"> Retriever router </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/retry/" class="md-nav__link"> <span class="md-ellipsis"> Retry </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/router/" class="md-nav__link"> <span class="md-ellipsis"> Router </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/simple_multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Simple multi modal </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/sub_question/" class="md-nav__link"> <span class="md-ellipsis"> Sub question </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/tool_retriever_router/" class="md-nav__link"> <span class="md-ellipsis"> Tool retriever router </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_engine/transform/" class="md-nav__link"> <span class="md-ellipsis"> Transform </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_7_25" > <div class="md-nav__link md-nav__container"> <a href="../../../query_pipeline/" class="md-nav__link "> <span class="md-ellipsis"> Query Pipeline </span> </a> <label class="md-nav__link " for="__nav_7_25" id="__nav_7_25_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_25_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_25"> <span class="md-nav__icon md-icon"></span> Query Pipeline </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../query_pipeline/agent/" class="md-nav__link"> <span class="md-ellipsis"> Agent </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/arg_pack/" class="md-nav__link"> <span class="md-ellipsis"> Arg pack </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/custom/" class="md-nav__link"> <span class="md-ellipsis"> Custom </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/function/" class="md-nav__link"> <span class="md-ellipsis"> Function </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/input/" class="md-nav__link"> <span class="md-ellipsis"> Input </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/llm/" class="md-nav__link"> <span class="md-ellipsis"> Llm </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/multi_modal/" class="md-nav__link"> <span class="md-ellipsis"> Multi modal </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/object/" class="md-nav__link"> <span class="md-ellipsis"> Object </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/output_parser/" class="md-nav__link"> <span class="md-ellipsis"> Output parser </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/postprocessor/" class="md-nav__link"> <span class="md-ellipsis"> Postprocessor </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/prompt/" class="md-nav__link"> <span class="md-ellipsis"> Prompt </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Query engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/query_transform/" class="md-nav__link"> <span class="md-ellipsis"> Query transform </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/retriever/" class="md-nav__link"> <span class="md-ellipsis"> Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/router/" class="md-nav__link"> <span class="md-ellipsis"> Router </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/synthesizer/" class="md-nav__link"> <span class="md-ellipsis"> Synthesizer </span> </a> </li> <li class="md-nav__item"> <a href="../../../query_pipeline/tool_runner/" class="md-nav__link"> <span class="md-ellipsis"> Tool runner </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_7_26" > <div class="md-nav__link md-nav__container"> <a href="../../../question_gen/" class="md-nav__link "> <span class="md-ellipsis"> Question Generators </span> </a> <label class="md-nav__link " for="__nav_7_26" id="__nav_7_26_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_26_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_26"> <span class="md-nav__icon md-icon"></span> Question Generators </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../question_gen/guidance/" class="md-nav__link"> <span class="md-ellipsis"> Guidance </span> </a> </li> <li class="md-nav__item"> <a href="../../../question_gen/llm_question_gen/" class="md-nav__link"> <span class="md-ellipsis"> Llm question gen </span> </a> </li> <li class="md-nav__item"> <a href="../../../question_gen/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_7_27" > <div class="md-nav__link md-nav__container"> <a href="../../../readers/" class="md-nav__link "> <span class="md-ellipsis"> Readers </span> </a> <label class="md-nav__link " for="__nav_7_27" id="__nav_7_27_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_27_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_27"> <span class="md-nav__icon md-icon"></span> Readers </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../readers/agent_search/" class="md-nav__link"> <span class="md-ellipsis"> Agent search </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/airbyte_cdk/" class="md-nav__link"> <span class="md-ellipsis"> Airbyte cdk </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/airbyte_gong/" class="md-nav__link"> <span class="md-ellipsis"> Airbyte gong </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/airbyte_hubspot/" class="md-nav__link"> <span class="md-ellipsis"> Airbyte hubspot </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/airbyte_salesforce/" class="md-nav__link"> <span class="md-ellipsis"> Airbyte salesforce </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/airbyte_shopify/" class="md-nav__link"> <span class="md-ellipsis"> Airbyte shopify </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/airbyte_stripe/" class="md-nav__link"> <span class="md-ellipsis"> Airbyte stripe </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/airbyte_typeform/" class="md-nav__link"> <span class="md-ellipsis"> Airbyte typeform </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/airbyte_zendesk_support/" class="md-nav__link"> <span class="md-ellipsis"> Airbyte zendesk support </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/airtable/" class="md-nav__link"> <span class="md-ellipsis"> Airtable </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/alibabacloud_aisearch/" class="md-nav__link"> <span class="md-ellipsis"> Alibabacloud aisearch </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/apify/" class="md-nav__link"> <span class="md-ellipsis"> Apify </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/arango_db/" class="md-nav__link"> <span class="md-ellipsis"> Arango db </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/arxiv/" class="md-nav__link"> <span class="md-ellipsis"> Arxiv </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/asana/" class="md-nav__link"> <span class="md-ellipsis"> Asana </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/assemblyai/" class="md-nav__link"> <span class="md-ellipsis"> Assemblyai </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/astra_db/" class="md-nav__link"> <span class="md-ellipsis"> Astra db </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/athena/" class="md-nav__link"> <span class="md-ellipsis"> Athena </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/awadb/" class="md-nav__link"> <span class="md-ellipsis"> Awadb </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/azcognitive_search/" class="md-nav__link"> <span class="md-ellipsis"> Azcognitive search </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/azstorage_blob/" class="md-nav__link"> <span class="md-ellipsis"> Azstorage blob </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/bagel/" class="md-nav__link"> <span class="md-ellipsis"> Bagel </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/bilibili/" class="md-nav__link"> <span class="md-ellipsis"> Bilibili </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/bitbucket/" class="md-nav__link"> <span class="md-ellipsis"> Bitbucket </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/boarddocs/" class="md-nav__link"> <span class="md-ellipsis"> Boarddocs </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/box/" class="md-nav__link"> <span class="md-ellipsis"> Box </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/chatgpt_plugin/" class="md-nav__link"> <span class="md-ellipsis"> Chatgpt plugin </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/chroma/" class="md-nav__link"> <span class="md-ellipsis"> Chroma </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/clickhouse.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/confluence/" class="md-nav__link"> <span class="md-ellipsis"> Confluence </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/couchbase/" class="md-nav__link"> <span class="md-ellipsis"> Couchbase </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/couchdb/" class="md-nav__link"> <span class="md-ellipsis"> Couchdb </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/dad_jokes/" class="md-nav__link"> <span class="md-ellipsis"> Dad jokes </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/dashscope/" class="md-nav__link"> <span class="md-ellipsis"> Dashscope </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/dashvector/" class="md-nav__link"> <span class="md-ellipsis"> Dashvector </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/database/" class="md-nav__link"> <span class="md-ellipsis"> Database </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/deeplake/" class="md-nav__link"> <span class="md-ellipsis"> Deeplake </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/discord/" class="md-nav__link"> <span class="md-ellipsis"> Discord </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/docling/" class="md-nav__link"> <span class="md-ellipsis"> Docling </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/docstring_walker/" class="md-nav__link"> <span class="md-ellipsis"> Docstring walker </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/docugami/" class="md-nav__link"> <span class="md-ellipsis"> Docugami </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/document360/" class="md-nav__link"> <span class="md-ellipsis"> Document360 </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/earnings_call_transcript/" class="md-nav__link"> <span class="md-ellipsis"> Earnings call transcript </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/elasticsearch/" class="md-nav__link"> <span class="md-ellipsis"> Elasticsearch </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/faiss/" class="md-nav__link"> <span class="md-ellipsis"> Faiss </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/feedly_rss/" class="md-nav__link"> <span class="md-ellipsis"> Feedly rss </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/feishu_docs/" class="md-nav__link"> <span class="md-ellipsis"> Feishu docs </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/file/" class="md-nav__link"> <span class="md-ellipsis"> File </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/firebase_realtimedb/" class="md-nav__link"> <span class="md-ellipsis"> Firebase realtimedb </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/firestore/" class="md-nav__link"> <span class="md-ellipsis"> Firestore </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/gcs/" class="md-nav__link"> <span class="md-ellipsis"> Gcs </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/genius/" class="md-nav__link"> <span class="md-ellipsis"> Genius </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/gitbook/" class="md-nav__link"> <span class="md-ellipsis"> Gitbook </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/github/" class="md-nav__link"> <span class="md-ellipsis"> Github </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/gitlab/" class="md-nav__link"> <span class="md-ellipsis"> Gitlab </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/google/" class="md-nav__link"> <span class="md-ellipsis"> Google </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/gpt_repo/" class="md-nav__link"> <span class="md-ellipsis"> Gpt repo </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/graphdb_cypher/" class="md-nav__link"> <span class="md-ellipsis"> Graphdb cypher </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/graphql/" class="md-nav__link"> <span class="md-ellipsis"> Graphql </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/guru/" class="md-nav__link"> <span class="md-ellipsis"> Guru </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/hatena_blog/" class="md-nav__link"> <span class="md-ellipsis"> Hatena blog </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/hive/" class="md-nav__link"> <span class="md-ellipsis"> Hive </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/hubspot/" class="md-nav__link"> <span class="md-ellipsis"> Hubspot </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/huggingface_fs/" class="md-nav__link"> <span class="md-ellipsis"> Huggingface fs </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/hwp/" class="md-nav__link"> <span class="md-ellipsis"> Hwp </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/iceberg/" class="md-nav__link"> <span class="md-ellipsis"> Iceberg </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/imdb_review/" class="md-nav__link"> <span class="md-ellipsis"> Imdb review </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/intercom/" class="md-nav__link"> <span class="md-ellipsis"> Intercom </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/jaguar/" class="md-nav__link"> <span class="md-ellipsis"> Jaguar </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/jira/" class="md-nav__link"> <span class="md-ellipsis"> Jira </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/joplin/" class="md-nav__link"> <span class="md-ellipsis"> Joplin </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/json/" class="md-nav__link"> <span class="md-ellipsis"> Json </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/kaltura_esearch/" class="md-nav__link"> <span class="md-ellipsis"> Kaltura esearch </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/kibela/" class="md-nav__link"> <span class="md-ellipsis"> Kibela </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/lilac/" class="md-nav__link"> <span class="md-ellipsis"> Lilac </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/linear/" class="md-nav__link"> <span class="md-ellipsis"> Linear </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/llama_parse/" class="md-nav__link"> <span class="md-ellipsis"> Llama parse </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/macrometa_gdn/" class="md-nav__link"> <span class="md-ellipsis"> Macrometa gdn </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/make_com/" class="md-nav__link"> <span class="md-ellipsis"> Make com </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/mangadex/" class="md-nav__link"> <span class="md-ellipsis"> Mangadex </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/mangoapps_guides/" class="md-nav__link"> <span class="md-ellipsis"> Mangoapps guides </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/maps/" class="md-nav__link"> <span class="md-ellipsis"> Maps </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/mbox/" class="md-nav__link"> <span class="md-ellipsis"> Mbox </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/memos/" class="md-nav__link"> <span class="md-ellipsis"> Memos </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/metal/" class="md-nav__link"> <span class="md-ellipsis"> Metal </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/microsoft_onedrive/" class="md-nav__link"> <span class="md-ellipsis"> Microsoft onedrive </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/microsoft_outlook/" class="md-nav__link"> <span class="md-ellipsis"> Microsoft outlook </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/microsoft_sharepoint/" class="md-nav__link"> <span class="md-ellipsis"> Microsoft sharepoint </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/milvus/" class="md-nav__link"> <span class="md-ellipsis"> Milvus </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/minio/" class="md-nav__link"> <span class="md-ellipsis"> Minio </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/mondaydotcom/" class="md-nav__link"> <span class="md-ellipsis"> Mondaydotcom </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/mongodb/" class="md-nav__link"> <span class="md-ellipsis"> Mongodb </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/myscale/" class="md-nav__link"> <span class="md-ellipsis"> Myscale </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/notion/" class="md-nav__link"> <span class="md-ellipsis"> Notion </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/nougat_ocr/" class="md-nav__link"> <span class="md-ellipsis"> Nougat ocr </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/obsidian/" class="md-nav__link"> <span class="md-ellipsis"> Obsidian </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/openalex/" class="md-nav__link"> <span class="md-ellipsis"> Openalex </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/openapi.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/opendal/" class="md-nav__link"> <span class="md-ellipsis"> Opendal </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/opensearch/" class="md-nav__link"> <span class="md-ellipsis"> Opensearch </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/oracleai/" class="md-nav__link"> <span class="md-ellipsis"> Oracleai </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/pandas_ai/" class="md-nav__link"> <span class="md-ellipsis"> Pandas ai </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/papers/" class="md-nav__link"> <span class="md-ellipsis"> Papers </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/patentsview/" class="md-nav__link"> <span class="md-ellipsis"> Patentsview </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/pathway/" class="md-nav__link"> <span class="md-ellipsis"> Pathway </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/pdb/" class="md-nav__link"> <span class="md-ellipsis"> Pdb </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/pdf_marker/" class="md-nav__link"> <span class="md-ellipsis"> Pdf marker </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/pdf_table/" class="md-nav__link"> <span class="md-ellipsis"> Pdf table </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/pebblo/" class="md-nav__link"> <span class="md-ellipsis"> Pebblo </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/pinecone.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/preprocess/" class="md-nav__link"> <span class="md-ellipsis"> Preprocess </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/psychic/" class="md-nav__link"> <span class="md-ellipsis"> Psychic </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/qdrant/" class="md-nav__link"> <span class="md-ellipsis"> Qdrant </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/quip/" class="md-nav__link"> <span class="md-ellipsis"> Quip </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/rayyan/" class="md-nav__link"> <span class="md-ellipsis"> Rayyan </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/readme.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/readwise/" class="md-nav__link"> <span class="md-ellipsis"> Readwise </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/reddit/" class="md-nav__link"> <span class="md-ellipsis"> Reddit </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/remote/" class="md-nav__link"> <span class="md-ellipsis"> Remote </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/remote_depth/" class="md-nav__link"> <span class="md-ellipsis"> Remote depth </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/s3/" class="md-nav__link"> <span class="md-ellipsis"> S3 </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/sec_filings/" class="md-nav__link"> <span class="md-ellipsis"> Sec filings </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/semanticscholar/" class="md-nav__link"> <span class="md-ellipsis"> Semanticscholar </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/simple_directory_reader/" class="md-nav__link"> <span class="md-ellipsis"> Simple directory reader </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/singlestore/" class="md-nav__link"> <span class="md-ellipsis"> Singlestore </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/slack/" class="md-nav__link"> <span class="md-ellipsis"> Slack </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/smart_pdf_loader/" class="md-nav__link"> <span class="md-ellipsis"> Smart pdf loader </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/snowflake/" class="md-nav__link"> <span class="md-ellipsis"> Snowflake </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/spotify/" class="md-nav__link"> <span class="md-ellipsis"> Spotify </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/stackoverflow/" class="md-nav__link"> <span class="md-ellipsis"> Stackoverflow </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/steamship/" class="md-nav__link"> <span class="md-ellipsis"> Steamship </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/string_iterable/" class="md-nav__link"> <span class="md-ellipsis"> String iterable </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/stripe_docs/" class="md-nav__link"> <span class="md-ellipsis"> Stripe docs </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/structured_data/" class="md-nav__link"> <span class="md-ellipsis"> Structured data </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/telegram/" class="md-nav__link"> <span class="md-ellipsis"> Telegram </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/toggl/" class="md-nav__link"> <span class="md-ellipsis"> Toggl </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/trello/" class="md-nav__link"> <span class="md-ellipsis"> Trello </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/twitter/" class="md-nav__link"> <span class="md-ellipsis"> Twitter </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/txtai/" class="md-nav__link"> <span class="md-ellipsis"> Txtai </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/upstage/" class="md-nav__link"> <span class="md-ellipsis"> Upstage </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/weather/" class="md-nav__link"> <span class="md-ellipsis"> Weather </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/weaviate/" class="md-nav__link"> <span class="md-ellipsis"> Weaviate </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/web/" class="md-nav__link"> <span class="md-ellipsis"> Web </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/whatsapp/" class="md-nav__link"> <span class="md-ellipsis"> Whatsapp </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/whisper/" class="md-nav__link"> <span class="md-ellipsis"> Whisper </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/wikipedia/" class="md-nav__link"> <span class="md-ellipsis"> Wikipedia </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/wordlift/" class="md-nav__link"> <span class="md-ellipsis"> Wordlift </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/wordpress/" class="md-nav__link"> <span class="md-ellipsis"> Wordpress </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/youtube_transcript/" class="md-nav__link"> <span class="md-ellipsis"> Youtube transcript </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/zendesk/" class="md-nav__link"> <span class="md-ellipsis"> Zendesk </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/zep/" class="md-nav__link"> <span class="md-ellipsis"> Zep </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/zulip/" class="md-nav__link"> <span class="md-ellipsis"> Zulip </span> </a> </li> <li class="md-nav__item"> <a href="../../../readers/zyte_serp/" class="md-nav__link"> <span class="md-ellipsis"> Zyte serp </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_7_28" > <div class="md-nav__link md-nav__container"> <a href="../../../response_synthesizers/" class="md-nav__link "> <span class="md-ellipsis"> Response Synthesizers </span> </a> <label class="md-nav__link " for="__nav_7_28" id="__nav_7_28_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_28_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_28"> <span class="md-nav__icon md-icon"></span> Response Synthesizers </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../response_synthesizers/accumulate/" class="md-nav__link"> <span class="md-ellipsis"> Accumulate </span> </a> </li> <li class="md-nav__item"> <a href="../../../response_synthesizers/compact_accumulate/" class="md-nav__link"> <span class="md-ellipsis"> Compact accumulate </span> </a> </li> <li class="md-nav__item"> <a href="../../../response_synthesizers/compact_and_refine/" class="md-nav__link"> <span class="md-ellipsis"> Compact and refine </span> </a> </li> <li class="md-nav__item"> <a href="../../../response_synthesizers/generation/" class="md-nav__link"> <span class="md-ellipsis"> Generation </span> </a> </li> <li class="md-nav__item"> <a href="../../../response_synthesizers/google/" class="md-nav__link"> <span class="md-ellipsis"> Google </span> </a> </li> <li class="md-nav__item"> <a href="../../../response_synthesizers/refine/" class="md-nav__link"> <span class="md-ellipsis"> Refine </span> </a> </li> <li class="md-nav__item"> <a href="../../../response_synthesizers/simple_summarize/" class="md-nav__link"> <span class="md-ellipsis"> Simple summarize </span> </a> </li> <li class="md-nav__item"> <a href="../../../response_synthesizers/tree_summarize/" class="md-nav__link"> <span class="md-ellipsis"> Tree summarize </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_7_29" > <div class="md-nav__link md-nav__container"> <a href="../../../retrievers/" class="md-nav__link "> <span class="md-ellipsis"> Retrievers </span> </a> <label class="md-nav__link " for="__nav_7_29" id="__nav_7_29_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_29_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_29"> <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="../../../retrievers/auto_merging/" class="md-nav__link"> <span class="md-ellipsis"> Auto merging </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/bedrock/" class="md-nav__link"> <span class="md-ellipsis"> Bedrock </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/bm25/" class="md-nav__link"> <span class="md-ellipsis"> Bm25 </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/duckdb_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Duckdb retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/kendra/" class="md-nav__link"> <span class="md-ellipsis"> Kendra </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/keyword/" class="md-nav__link"> <span class="md-ellipsis"> Keyword </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/knowledge_graph/" class="md-nav__link"> <span class="md-ellipsis"> Knowledge graph </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/mongodb_atlas_bm25_retriever/" class="md-nav__link"> <span class="md-ellipsis"> Mongodb atlas bm25 retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/pathway/" class="md-nav__link"> <span class="md-ellipsis"> Pathway </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/query_fusion/" class="md-nav__link"> <span class="md-ellipsis"> Query fusion </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/recursive/" class="md-nav__link"> <span class="md-ellipsis"> Recursive </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/router/" class="md-nav__link"> <span class="md-ellipsis"> Router </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/sql/" class="md-nav__link"> <span class="md-ellipsis"> Sql </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/summary/" class="md-nav__link"> <span class="md-ellipsis"> Summary </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/transform/" class="md-nav__link"> <span class="md-ellipsis"> Transform </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/tree/" class="md-nav__link"> <span class="md-ellipsis"> Tree </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/vector/" class="md-nav__link"> <span class="md-ellipsis"> Vector </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/vertexai_search/" class="md-nav__link"> <span class="md-ellipsis"> Vertexai search </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/videodb/" class="md-nav__link"> <span class="md-ellipsis"> Videodb </span> </a> </li> <li class="md-nav__item"> <a href="../../../retrievers/you/" class="md-nav__link"> <span class="md-ellipsis"> You </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_7_30" > <div class="md-nav__link md-nav__container"> <a href="../../../schema/" class="md-nav__link "> <span class="md-ellipsis"> Schema </span> </a> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_30_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_30"> <span class="md-nav__icon md-icon"></span> Schema </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_31" > <label class="md-nav__link" for="__nav_7_31" id="__nav_7_31_label" tabindex="0"> <span class="md-ellipsis"> Selectors </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_31_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_31"> <span class="md-nav__icon md-icon"></span> Selectors </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../selectors/notdiamond/" class="md-nav__link"> <span class="md-ellipsis"> Notdiamond </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_7_32" > <label class="md-nav__link" for="__nav_7_32" id="__nav_7_32_label" tabindex="0"> <span class="md-ellipsis"> Sparse Embeddings </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_32_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_32"> <span class="md-nav__icon md-icon"></span> Sparse Embeddings </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../sparse_embeddings/fastembed/" class="md-nav__link"> <span class="md-ellipsis"> Fastembed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_33" checked> <label class="md-nav__link" for="__nav_7_33" id="__nav_7_33_label" tabindex="0"> <span class="md-ellipsis"> Storage </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_33_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_7_33"> <span class="md-nav__icon md-icon"></span> Storage </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_7_33_1" > <div class="md-nav__link md-nav__container"> <a href="../../chat_store/" class="md-nav__link "> <span class="md-ellipsis"> Chat Store </span> </a> <label class="md-nav__link " for="__nav_7_33_1" id="__nav_7_33_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_7_33_1_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_33_1"> <span class="md-nav__icon md-icon"></span> Chat Store </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../chat_store/azure/" class="md-nav__link"> <span class="md-ellipsis"> Azure </span> </a> </li> <li class="md-nav__item"> <a href="../../chat_store/azurecosmosmongovcore/" class="md-nav__link"> <span class="md-ellipsis"> Azurecosmosmongovcore </span> </a> </li> <li class="md-nav__item"> <a href="../../chat_store/azurecosmosnosql/" class="md-nav__link"> <span class="md-ellipsis"> Azurecosmosnosql </span> </a> </li> <li class="md-nav__item"> <a href="../../chat_store/dynamodb/" class="md-nav__link"> <span class="md-ellipsis"> Dynamodb </span> </a> </li> <li class="md-nav__item"> <a href="../../chat_store/postgres/" class="md-nav__link"> <span class="md-ellipsis"> Postgres </span> </a> </li> <li class="md-nav__item"> <a href="../../chat_store/redis/" class="md-nav__link"> <span class="md-ellipsis"> Redis </span> </a> </li> <li class="md-nav__item"> <a href="../../chat_store/simple/" class="md-nav__link"> <span class="md-ellipsis"> Simple </span> </a> </li> <li class="md-nav__item"> <a href="../../chat_store/tablestore/" class="md-nav__link"> <span class="md-ellipsis"> Tablestore </span> </a> </li> <li class="md-nav__item"> <a href="../../chat_store/upstash/" class="md-nav__link"> <span class="md-ellipsis"> Upstash </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_7_33_2" > <div class="md-nav__link md-nav__container"> <a href="../../docstore/" class="md-nav__link "> <span class="md-ellipsis"> Docstore </span> </a> <label class="md-nav__link " for="__nav_7_33_2" id="__nav_7_33_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_7_33_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_33_2"> <span class="md-nav__icon md-icon"></span> Docstore </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../docstore/azure/" class="md-nav__link"> <span class="md-ellipsis"> Azure </span> </a> </li> <li class="md-nav__item"> <a href="../../docstore/azurecosmosnosql/" class="md-nav__link"> <span class="md-ellipsis"> Azurecosmosnosql </span> </a> </li> <li class="md-nav__item"> <a href="../../docstore/couchbase/" class="md-nav__link"> <span class="md-ellipsis"> Couchbase </span> </a> </li> <li class="md-nav__item"> <a href="../../docstore/dynamodb/" class="md-nav__link"> <span class="md-ellipsis"> Dynamodb </span> </a> </li> <li class="md-nav__item"> <a href="../../docstore/elasticsearch/" class="md-nav__link"> <span class="md-ellipsis"> Elasticsearch </span> </a> </li> <li class="md-nav__item"> <a href="../../docstore/firestore/" class="md-nav__link"> <span class="md-ellipsis"> Firestore </span> </a> </li> <li class="md-nav__item"> <a href="../../docstore/mongodb/" class="md-nav__link"> <span class="md-ellipsis"> Mongodb </span> </a> </li> <li class="md-nav__item"> <a href="../../docstore/postgres/" class="md-nav__link"> <span class="md-ellipsis"> Postgres </span> </a> </li> <li class="md-nav__item"> <a href="../../docstore/redis/" class="md-nav__link"> <span class="md-ellipsis"> Redis </span> </a> </li> <li class="md-nav__item"> <a href="../../docstore/simple/" class="md-nav__link"> <span class="md-ellipsis"> Simple </span> </a> </li> <li class="md-nav__item"> <a href="../../docstore/tablestore/" class="md-nav__link"> <span class="md-ellipsis"> Tablestore </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_33_3" checked> <div class="md-nav__link md-nav__container"> <a href="../" class="md-nav__link "> <span class="md-ellipsis"> Graph Stores </span> </a> <label class="md-nav__link " for="__nav_7_33_3" id="__nav_7_33_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_7_33_3_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_7_33_3"> <span class="md-nav__icon md-icon"></span> Graph Stores </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../falkordb/" class="md-nav__link"> <span class="md-ellipsis"> Falkordb </span> </a> </li> <li class="md-nav__item"> <a href="../kuzu/" class="md-nav__link"> <span class="md-ellipsis"> Kuzu </span> </a> </li> <li class="md-nav__item"> <a href="../memgraph/" class="md-nav__link"> <span class="md-ellipsis"> Memgraph </span> </a> </li> <li class="md-nav__item"> <a href="../nebula/" class="md-nav__link"> <span class="md-ellipsis"> Nebula </span> </a> </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"> Neo4j </span> <span class="md-nav__icon md-icon"></span> </label> <a href="./" class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> Neo4j </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore" class="md-nav__link"> <span class="md-ellipsis"> Neo4jGraphStore </span> </a> <nav class="md-nav" aria-label="Neo4jGraphStore"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.get" class="md-nav__link"> <span class="md-ellipsis"> get </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.get_rel_map" class="md-nav__link"> <span class="md-ellipsis"> get_rel_map </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.upsert_triplet" class="md-nav__link"> <span class="md-ellipsis"> upsert_triplet </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.delete" class="md-nav__link"> <span class="md-ellipsis"> delete </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.refresh_schema" class="md-nav__link"> <span class="md-ellipsis"> refresh_schema </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.get_schema" class="md-nav__link"> <span class="md-ellipsis"> get_schema </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.close" class="md-nav__link"> <span class="md-ellipsis"> close </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore" class="md-nav__link"> <span class="md-ellipsis"> Neo4jPropertyGraphStore </span> </a> <nav class="md-nav" aria-label="Neo4jPropertyGraphStore"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.close" class="md-nav__link"> <span class="md-ellipsis"> close </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.refresh_schema" class="md-nav__link"> <span class="md-ellipsis"> refresh_schema </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.upsert_relations" class="md-nav__link"> <span class="md-ellipsis"> upsert_relations </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.get" class="md-nav__link"> <span class="md-ellipsis"> get </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.get_rel_map" class="md-nav__link"> <span class="md-ellipsis"> get_rel_map </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.vector_query" class="md-nav__link"> <span class="md-ellipsis"> vector_query </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.delete" class="md-nav__link"> <span class="md-ellipsis"> delete </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.verify_version" class="md-nav__link"> <span class="md-ellipsis"> verify_version </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../neptune/" class="md-nav__link"> <span class="md-ellipsis"> Neptune </span> </a> </li> <li class="md-nav__item"> <a href="../simple/" class="md-nav__link"> <span class="md-ellipsis"> Simple </span> </a> </li> <li class="md-nav__item"> <a href="../tidb/" class="md-nav__link"> <span class="md-ellipsis"> Tidb </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_7_33_4" > <div class="md-nav__link md-nav__container"> <a href="../../index_store/" class="md-nav__link "> <span class="md-ellipsis"> Index Store </span> </a> <label class="md-nav__link " for="__nav_7_33_4" id="__nav_7_33_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_7_33_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_33_4"> <span class="md-nav__icon md-icon"></span> Index Store </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../index_store/azure/" class="md-nav__link"> <span class="md-ellipsis"> Azure </span> </a> </li> <li class="md-nav__item"> <a href="../../index_store/azurecosmosnosql/" class="md-nav__link"> <span class="md-ellipsis"> Azurecosmosnosql </span> </a> </li> <li class="md-nav__item"> <a href="../../index_store/couchbase/" class="md-nav__link"> <span class="md-ellipsis"> Couchbase </span> </a> </li> <li class="md-nav__item"> <a href="../../index_store/dynamodb/" class="md-nav__link"> <span class="md-ellipsis"> Dynamodb </span> </a> </li> <li class="md-nav__item"> <a href="../../index_store/elasticsearch/" class="md-nav__link"> <span class="md-ellipsis"> Elasticsearch </span> </a> </li> <li class="md-nav__item"> <a href="../../index_store/firestore/" class="md-nav__link"> <span class="md-ellipsis"> Firestore </span> </a> </li> <li class="md-nav__item"> <a href="../../index_store/mongodb/" class="md-nav__link"> <span class="md-ellipsis"> Mongodb </span> </a> </li> <li class="md-nav__item"> <a href="../../index_store/postgres/" class="md-nav__link"> <span class="md-ellipsis"> Postgres </span> </a> </li> <li class="md-nav__item"> <a href="../../index_store/redis/" class="md-nav__link"> <span class="md-ellipsis"> Redis </span> </a> </li> <li class="md-nav__item"> <a href="../../index_store/simple/" class="md-nav__link"> <span class="md-ellipsis"> Simple </span> </a> </li> <li class="md-nav__item"> <a href="../../index_store/tablestore/" class="md-nav__link"> <span class="md-ellipsis"> Tablestore </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_7_33_5" > <div class="md-nav__link md-nav__container"> <a href="../../kvstore/" class="md-nav__link "> <span class="md-ellipsis"> Kvstore </span> </a> <label class="md-nav__link " for="__nav_7_33_5" id="__nav_7_33_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_7_33_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_33_5"> <span class="md-nav__icon md-icon"></span> Kvstore </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../kvstore/azure/" class="md-nav__link"> <span class="md-ellipsis"> Azure </span> </a> </li> <li class="md-nav__item"> <a href="../../kvstore/azurecosmosnosql/" class="md-nav__link"> <span class="md-ellipsis"> Azurecosmosnosql </span> </a> </li> <li class="md-nav__item"> <a href="../../kvstore/couchbase/" class="md-nav__link"> <span class="md-ellipsis"> Couchbase </span> </a> </li> <li class="md-nav__item"> <a href="../../kvstore/dynamodb/" class="md-nav__link"> <span class="md-ellipsis"> Dynamodb </span> </a> </li> <li class="md-nav__item"> <a href="../../kvstore/elasticsearch/" class="md-nav__link"> <span class="md-ellipsis"> Elasticsearch </span> </a> </li> <li class="md-nav__item"> <a href="../../kvstore/firestore/" class="md-nav__link"> <span class="md-ellipsis"> Firestore </span> </a> </li> <li class="md-nav__item"> <a href="../../kvstore/mongodb/" class="md-nav__link"> <span class="md-ellipsis"> Mongodb </span> </a> </li> <li class="md-nav__item"> <a href="../../kvstore/postgres/" class="md-nav__link"> <span class="md-ellipsis"> Postgres </span> </a> </li> <li class="md-nav__item"> <a href="../../kvstore/redis/" class="md-nav__link"> <span class="md-ellipsis"> Redis </span> </a> </li> <li class="md-nav__item"> <a href="../../kvstore/s3/" class="md-nav__link"> <span class="md-ellipsis"> S3 </span> </a> </li> <li class="md-nav__item"> <a href="../../kvstore/simple/" class="md-nav__link"> <span class="md-ellipsis"> Simple </span> </a> </li> <li class="md-nav__item"> <a href="../../kvstore/tablestore/" class="md-nav__link"> <span class="md-ellipsis"> Tablestore </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_7_33_6" > <label class="md-nav__link" for="__nav_7_33_6" id="__nav_7_33_6_label" tabindex="0"> <span class="md-ellipsis"> Storage </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_7_33_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_33_6"> <span class="md-nav__icon md-icon"></span> Storage </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../storage_context/" class="md-nav__link"> <span class="md-ellipsis"> Storage context </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_7_33_7" > <div class="md-nav__link md-nav__container"> <a href="../../vector_store/" class="md-nav__link "> <span class="md-ellipsis"> Vector Store </span> </a> <label class="md-nav__link " for="__nav_7_33_7" id="__nav_7_33_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_7_33_7_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_33_7"> <span class="md-nav__icon md-icon"></span> Vector Store </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../vector_store/alibabacloud_opensearch/" class="md-nav__link"> <span class="md-ellipsis"> Alibabacloud opensearch </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/analyticdb/" class="md-nav__link"> <span class="md-ellipsis"> Analyticdb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/astra_db/" class="md-nav__link"> <span class="md-ellipsis"> Astra db </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/awadb/" class="md-nav__link"> <span class="md-ellipsis"> Awadb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/awsdocdb/" class="md-nav__link"> <span class="md-ellipsis"> Awsdocdb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/azureaisearch/" class="md-nav__link"> <span class="md-ellipsis"> Azureaisearch </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/azurecosmosmongo/" class="md-nav__link"> <span class="md-ellipsis"> Azurecosmosmongo </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/azurecosmosnosql/" class="md-nav__link"> <span class="md-ellipsis"> Azurecosmosnosql </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/bagel/" class="md-nav__link"> <span class="md-ellipsis"> Bagel </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/baiduvectordb/" class="md-nav__link"> <span class="md-ellipsis"> Baiduvectordb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/cassandra/" class="md-nav__link"> <span class="md-ellipsis"> Cassandra </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/chatgpt_plugin.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/chroma/" class="md-nav__link"> <span class="md-ellipsis"> Chroma </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/clickhouse/" class="md-nav__link"> <span class="md-ellipsis"> Clickhouse </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/couchbase/" class="md-nav__link"> <span class="md-ellipsis"> Couchbase </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/dashvector/" class="md-nav__link"> <span class="md-ellipsis"> Dashvector </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/databricks/" class="md-nav__link"> <span class="md-ellipsis"> Databricks </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/deeplake/" class="md-nav__link"> <span class="md-ellipsis"> Deeplake </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/docarray/" class="md-nav__link"> <span class="md-ellipsis"> Docarray </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/duckdb/" class="md-nav__link"> <span class="md-ellipsis"> Duckdb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/dynamodb/" class="md-nav__link"> <span class="md-ellipsis"> Dynamodb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/elasticsearch/" class="md-nav__link"> <span class="md-ellipsis"> Elasticsearch </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/epsilla/" class="md-nav__link"> <span class="md-ellipsis"> Epsilla </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/faiss/" class="md-nav__link"> <span class="md-ellipsis"> Faiss </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/firestore/" class="md-nav__link"> <span class="md-ellipsis"> Firestore </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/google/" class="md-nav__link"> <span class="md-ellipsis"> Google </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/hologres/" class="md-nav__link"> <span class="md-ellipsis"> Hologres </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/jaguar/" class="md-nav__link"> <span class="md-ellipsis"> Jaguar </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/kdbai/" class="md-nav__link"> <span class="md-ellipsis"> Kdbai </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/lancedb/" class="md-nav__link"> <span class="md-ellipsis"> Lancedb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/lantern/" class="md-nav__link"> <span class="md-ellipsis"> Lantern </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/lindorm/" class="md-nav__link"> <span class="md-ellipsis"> Lindorm </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/mariadb/" class="md-nav__link"> <span class="md-ellipsis"> Mariadb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/metal.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/milvus/" class="md-nav__link"> <span class="md-ellipsis"> Milvus </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/mongodb/" class="md-nav__link"> <span class="md-ellipsis"> Mongodb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/myscale/" class="md-nav__link"> <span class="md-ellipsis"> Myscale </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/neo4jvector/" class="md-nav__link"> <span class="md-ellipsis"> Neo4jvector </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/neptune/" class="md-nav__link"> <span class="md-ellipsis"> Neptune </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/nile/" class="md-nav__link"> <span class="md-ellipsis"> Nile </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/objectbox/" class="md-nav__link"> <span class="md-ellipsis"> Objectbox </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/oceanbase/" class="md-nav__link"> <span class="md-ellipsis"> Oceanbase </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/opensearch/" class="md-nav__link"> <span class="md-ellipsis"> Opensearch </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/oracledb/" class="md-nav__link"> <span class="md-ellipsis"> Oracledb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/pgvecto_rs/" class="md-nav__link"> <span class="md-ellipsis"> Pgvecto rs </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/pinecone/" class="md-nav__link"> <span class="md-ellipsis"> Pinecone </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/postgres/" class="md-nav__link"> <span class="md-ellipsis"> Postgres </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/qdrant/" class="md-nav__link"> <span class="md-ellipsis"> Qdrant </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/redis/" class="md-nav__link"> <span class="md-ellipsis"> Redis </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/relyt/" class="md-nav__link"> <span class="md-ellipsis"> Relyt </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/rocksetdb/" class="md-nav__link"> <span class="md-ellipsis"> Rocksetdb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/simple/" class="md-nav__link"> <span class="md-ellipsis"> Simple </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/singlestoredb/" class="md-nav__link"> <span class="md-ellipsis"> Singlestoredb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/sqlalchemy.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/supabase/" class="md-nav__link"> <span class="md-ellipsis"> Supabase </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/tablestore/" class="md-nav__link"> <span class="md-ellipsis"> Tablestore </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/tair/" class="md-nav__link"> <span class="md-ellipsis"> Tair </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/tencentvectordb/" class="md-nav__link"> <span class="md-ellipsis"> Tencentvectordb </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/tidbvector/" class="md-nav__link"> <span class="md-ellipsis"> Tidbvector </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/timescalevector/" class="md-nav__link"> <span class="md-ellipsis"> Timescalevector </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/txtai/" class="md-nav__link"> <span class="md-ellipsis"> Txtai </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/typesense/" class="md-nav__link"> <span class="md-ellipsis"> Typesense </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/upstash/" class="md-nav__link"> <span class="md-ellipsis"> Upstash </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/vearch/" class="md-nav__link"> <span class="md-ellipsis"> Vearch </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/vertexaivectorsearch/" class="md-nav__link"> <span class="md-ellipsis"> Vertexaivectorsearch </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/vespa/" class="md-nav__link"> <span class="md-ellipsis"> Vespa </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/weaviate/" class="md-nav__link"> <span class="md-ellipsis"> Weaviate </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/wordlift/" class="md-nav__link"> <span class="md-ellipsis"> Wordlift </span> </a> </li> <li class="md-nav__item"> <a href="../../vector_store/zep/" class="md-nav__link"> <span class="md-ellipsis"> Zep </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_7_34" > <div class="md-nav__link md-nav__container"> <a href="../../../tools/" class="md-nav__link "> <span class="md-ellipsis"> Tools </span> </a> <label class="md-nav__link " for="__nav_7_34" id="__nav_7_34_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_34_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_34"> <span class="md-nav__icon md-icon"></span> Tools </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../tools/arxiv/" class="md-nav__link"> <span class="md-ellipsis"> Arxiv </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/azure_code_interpreter/" class="md-nav__link"> <span class="md-ellipsis"> Azure code interpreter </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/azure_cv/" class="md-nav__link"> <span class="md-ellipsis"> Azure cv </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/azure_speech/" class="md-nav__link"> <span class="md-ellipsis"> Azure speech </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/azure_translate/" class="md-nav__link"> <span class="md-ellipsis"> Azure translate </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/bing_search/" class="md-nav__link"> <span class="md-ellipsis"> Bing search </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/box/" class="md-nav__link"> <span class="md-ellipsis"> Box </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/brave_search/" class="md-nav__link"> <span class="md-ellipsis"> Brave search </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/cassandra/" class="md-nav__link"> <span class="md-ellipsis"> Cassandra </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/chatgpt_plugin/" class="md-nav__link"> <span class="md-ellipsis"> Chatgpt plugin </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/code_interpreter/" class="md-nav__link"> <span class="md-ellipsis"> Code interpreter </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/cogniswitch/" class="md-nav__link"> <span class="md-ellipsis"> Cogniswitch </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/database/" class="md-nav__link"> <span class="md-ellipsis"> Database </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/docker_code.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/duckduckgo/" class="md-nav__link"> <span class="md-ellipsis"> Duckduckgo </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/elevenlabs/" class="md-nav__link"> <span class="md-ellipsis"> Elevenlabs </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/exa/" class="md-nav__link"> <span class="md-ellipsis"> Exa </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/finance/" class="md-nav__link"> <span class="md-ellipsis"> Finance </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/function/" class="md-nav__link"> <span class="md-ellipsis"> Function </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/google/" class="md-nav__link"> <span class="md-ellipsis"> Google </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/graphql/" class="md-nav__link"> <span class="md-ellipsis"> Graphql </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/ionic_shopping/" class="md-nav__link"> <span class="md-ellipsis"> Ionic shopping </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/jina/" class="md-nav__link"> <span class="md-ellipsis"> Jina </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/jira/" class="md-nav__link"> <span class="md-ellipsis"> Jira </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/linkup_research/" class="md-nav__link"> <span class="md-ellipsis"> Linkup research </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/load_and_search/" class="md-nav__link"> <span class="md-ellipsis"> Load and search </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/metaphor/" class="md-nav__link"> <span class="md-ellipsis"> Metaphor </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/multion/" class="md-nav__link"> <span class="md-ellipsis"> Multion </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/neo4j/" class="md-nav__link"> <span class="md-ellipsis"> Neo4j </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/notion/" class="md-nav__link"> <span class="md-ellipsis"> Notion </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/ondemand_loader/" class="md-nav__link"> <span class="md-ellipsis"> Ondemand loader </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/openai/" class="md-nav__link"> <span class="md-ellipsis"> Openai </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/openapi/" class="md-nav__link"> <span class="md-ellipsis"> Openapi </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/oracleai.md" class="md-nav__link"> <span class="md-ellipsis"> None </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/playgrounds/" class="md-nav__link"> <span class="md-ellipsis"> Playgrounds </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/playwright/" class="md-nav__link"> <span class="md-ellipsis"> Playwright </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/python_file/" class="md-nav__link"> <span class="md-ellipsis"> Python file </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/query_engine/" class="md-nav__link"> <span class="md-ellipsis"> Query engine </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/query_plan/" class="md-nav__link"> <span class="md-ellipsis"> Query plan </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/requests/" class="md-nav__link"> <span class="md-ellipsis"> Requests </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/retriever/" class="md-nav__link"> <span class="md-ellipsis"> Retriever </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/salesforce/" class="md-nav__link"> <span class="md-ellipsis"> Salesforce </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/scrapegraph/" class="md-nav__link"> <span class="md-ellipsis"> Scrapegraph </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/shopify/" class="md-nav__link"> <span class="md-ellipsis"> Shopify </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/slack/" class="md-nav__link"> <span class="md-ellipsis"> Slack </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/tavily_research/" class="md-nav__link"> <span class="md-ellipsis"> Tavily research </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/text_to_image/" class="md-nav__link"> <span class="md-ellipsis"> Text to image </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/tool_spec/" class="md-nav__link"> <span class="md-ellipsis"> Tool spec </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/vectara_query/" class="md-nav__link"> <span class="md-ellipsis"> Vectara query </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/vector_db/" class="md-nav__link"> <span class="md-ellipsis"> Vector db </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/waii/" class="md-nav__link"> <span class="md-ellipsis"> Waii </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/weather/" class="md-nav__link"> <span class="md-ellipsis"> Weather </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/wikipedia/" class="md-nav__link"> <span class="md-ellipsis"> Wikipedia </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/wolfram_alpha/" class="md-nav__link"> <span class="md-ellipsis"> Wolfram alpha </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/yahoo_finance/" class="md-nav__link"> <span class="md-ellipsis"> Yahoo finance </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/yelp/" class="md-nav__link"> <span class="md-ellipsis"> Yelp </span> </a> </li> <li class="md-nav__item"> <a href="../../../tools/zapier/" class="md-nav__link"> <span class="md-ellipsis"> Zapier </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_7_35" > <label class="md-nav__link" for="__nav_7_35" id="__nav_7_35_label" tabindex="0"> <span class="md-ellipsis"> Workflow </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_35_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7_35"> <span class="md-nav__icon md-icon"></span> Workflow </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../workflow/decorators/" class="md-nav__link"> <span class="md-ellipsis"> Decorators </span> </a> </li> <li class="md-nav__item"> <a href="../../../workflow/context/" class="md-nav__link"> <span class="md-ellipsis"> Context </span> </a> </li> <li class="md-nav__item"> <a href="../../../workflow/events/" class="md-nav__link"> <span class="md-ellipsis"> Events </span> </a> </li> <li class="md-nav__item"> <a href="../../../workflow/retry_policy/" class="md-nav__link"> <span class="md-ellipsis"> Retry policy </span> </a> </li> <li class="md-nav__item"> <a href="../../../workflow/workflow/" class="md-nav__link"> <span class="md-ellipsis"> Workflow </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_8" > <div class="md-nav__link md-nav__container"> <a href="../../../../community/llama_packs/" class="md-nav__link "> <span class="md-ellipsis"> Open-Source Community </span> </a> <label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_8"> <span class="md-nav__icon md-icon"></span> Open-Source Community </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../community/integrations/" class="md-nav__link"> <span class="md-ellipsis"> Integrations </span> </a> </li> <li class="md-nav__item"> <a href="../../../../community/full_stack_projects/" class="md-nav__link"> <span class="md-ellipsis"> Full Stack Projects </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_3" > <label class="md-nav__link" for="__nav_8_3" id="__nav_8_3_label" tabindex="0"> <span class="md-ellipsis"> Community FAQ </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_8_3"> <span class="md-nav__icon md-icon"></span> Community FAQ </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../community/faq/chat_engines/" class="md-nav__link"> <span class="md-ellipsis"> Chat Engines </span> </a> </li> <li class="md-nav__item"> <a href="../../../../community/faq/documents_and_nodes/" class="md-nav__link"> <span class="md-ellipsis"> Documents and Nodes </span> </a> </li> <li class="md-nav__item"> <a href="../../../../community/faq/embeddings/" class="md-nav__link"> <span class="md-ellipsis"> Embeddings </span> </a> </li> <li class="md-nav__item"> <a href="../../../../community/faq/llms/" class="md-nav__link"> <span class="md-ellipsis"> Large Language Models </span> </a> </li> <li class="md-nav__item"> <a href="../../../../community/faq/query_engines/" class="md-nav__link"> <span class="md-ellipsis"> Query Engines </span> </a> </li> <li class="md-nav__item"> <a href="../../../../community/faq/vector_database/" class="md-nav__link"> <span class="md-ellipsis"> Vector Database </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_8_5" > <label class="md-nav__link" for="__nav_8_5" id="__nav_8_5_label" tabindex="0"> <span class="md-ellipsis"> Contributing </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_8_5"> <span class="md-nav__icon md-icon"></span> Contributing </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../CONTRIBUTING/" class="md-nav__link"> <span class="md-ellipsis"> Code </span> </a> </li> <li class="md-nav__item"> <a href="../../../../DOCS_README/" class="md-nav__link"> <span class="md-ellipsis"> Docs </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../../../CHANGELOG/" class="md-nav__link"> <span class="md-ellipsis"> Changelog </span> </a> </li> <li class="md-nav__item"> <a href="../../../../presentations/past_presentations/" class="md-nav__link"> <span class="md-ellipsis"> Presentations </span> </a> </li> <li class="md-nav__item"> <a href="../../../../changes/deprecated_terms/" class="md-nav__link"> <span class="md-ellipsis"> Deprecated Terms </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_9" > <div class="md-nav__link md-nav__container"> <a href="../../../../llama_cloud/" class="md-nav__link "> <span class="md-ellipsis"> LlamaCloud </span> </a> <label class="md-nav__link " for="__nav_9" id="__nav_9_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_9"> <span class="md-nav__icon md-icon"></span> LlamaCloud </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../../llama_cloud/llama_parse/" class="md-nav__link"> <span class="md-ellipsis"> LlamaParse </span> </a> </li> </ul> </nav> </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="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore" class="md-nav__link"> <span class="md-ellipsis"> Neo4jGraphStore </span> </a> <nav class="md-nav" aria-label="Neo4jGraphStore"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.get" class="md-nav__link"> <span class="md-ellipsis"> get </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.get_rel_map" class="md-nav__link"> <span class="md-ellipsis"> get_rel_map </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.upsert_triplet" class="md-nav__link"> <span class="md-ellipsis"> upsert_triplet </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.delete" class="md-nav__link"> <span class="md-ellipsis"> delete </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.refresh_schema" class="md-nav__link"> <span class="md-ellipsis"> refresh_schema </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.get_schema" class="md-nav__link"> <span class="md-ellipsis"> get_schema </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.close" class="md-nav__link"> <span class="md-ellipsis"> close </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore" class="md-nav__link"> <span class="md-ellipsis"> Neo4jPropertyGraphStore </span> </a> <nav class="md-nav" aria-label="Neo4jPropertyGraphStore"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.close" class="md-nav__link"> <span class="md-ellipsis"> close </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.refresh_schema" class="md-nav__link"> <span class="md-ellipsis"> refresh_schema </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.upsert_relations" class="md-nav__link"> <span class="md-ellipsis"> upsert_relations </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.get" class="md-nav__link"> <span class="md-ellipsis"> get </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.get_rel_map" class="md-nav__link"> <span class="md-ellipsis"> get_rel_map </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.vector_query" class="md-nav__link"> <span class="md-ellipsis"> vector_query </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.delete" class="md-nav__link"> <span class="md-ellipsis"> delete </span> </a> </li> <li class="md-nav__item"> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.verify_version" class="md-nav__link"> <span class="md-ellipsis"> verify_version </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <h1>Neo4j</h1> <div class="doc doc-object doc-module"> <div class="doc doc-contents first"> <div class="doc doc-children"> <div class="doc doc-object doc-class"> <h2 id="llama_index.graph_stores.neo4j.Neo4jGraphStore" class="doc doc-heading"> <span class="doc doc-object-name doc-class-name">Neo4jGraphStore</span> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore" class="headerlink" title="Permanent link">#</a></h2> <div class="doc doc-contents "> <p class="doc doc-class-bases"> Bases: <code><a class="autorefs autorefs-internal" title="llama_index.core.graph_stores.types.GraphStore" href="../#llama_index.core.graph_stores.types.GraphStore">GraphStore</a></code></p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/base.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 38</span> <span class="normal"> 39</span> <span class="normal"> 40</span> <span class="normal"> 41</span> <span class="normal"> 42</span> <span class="normal"> 43</span> <span class="normal"> 44</span> <span class="normal"> 45</span> <span class="normal"> 46</span> <span class="normal"> 47</span> <span class="normal"> 48</span> <span class="normal"> 49</span> <span class="normal"> 50</span> <span class="normal"> 51</span> <span class="normal"> 52</span> <span class="normal"> 53</span> <span class="normal"> 54</span> <span class="normal"> 55</span> <span class="normal"> 56</span> <span class="normal"> 57</span> <span class="normal"> 58</span> <span class="normal"> 59</span> <span class="normal"> 60</span> <span class="normal"> 61</span> <span class="normal"> 62</span> <span class="normal"> 63</span> <span class="normal"> 64</span> <span class="normal"> 65</span> <span class="normal"> 66</span> <span class="normal"> 67</span> <span class="normal"> 68</span> <span class="normal"> 69</span> <span class="normal"> 70</span> <span class="normal"> 71</span> <span class="normal"> 72</span> <span class="normal"> 73</span> <span class="normal"> 74</span> <span class="normal"> 75</span> <span class="normal"> 76</span> <span class="normal"> 77</span> <span class="normal"> 78</span> <span class="normal"> 79</span> <span class="normal"> 80</span> <span class="normal"> 81</span> <span class="normal"> 82</span> <span class="normal"> 83</span> <span class="normal"> 84</span> <span class="normal"> 85</span> <span class="normal"> 86</span> <span class="normal"> 87</span> <span class="normal"> 88</span> <span class="normal"> 89</span> <span class="normal"> 90</span> <span class="normal"> 91</span> <span class="normal"> 92</span> <span class="normal"> 93</span> <span class="normal"> 94</span> <span class="normal"> 95</span> <span class="normal"> 96</span> <span class="normal"> 97</span> <span class="normal"> 98</span> <span class="normal"> 99</span> <span class="normal">100</span> <span class="normal">101</span> <span class="normal">102</span> <span class="normal">103</span> <span class="normal">104</span> <span class="normal">105</span> <span class="normal">106</span> <span class="normal">107</span> <span class="normal">108</span> <span class="normal">109</span> <span class="normal">110</span> <span class="normal">111</span> <span class="normal">112</span> <span class="normal">113</span> <span class="normal">114</span> <span class="normal">115</span> <span class="normal">116</span> <span class="normal">117</span> <span class="normal">118</span> <span class="normal">119</span> <span class="normal">120</span> <span class="normal">121</span> <span class="normal">122</span> <span class="normal">123</span> <span class="normal">124</span> <span class="normal">125</span> <span class="normal">126</span> <span class="normal">127</span> <span class="normal">128</span> <span class="normal">129</span> <span class="normal">130</span> <span class="normal">131</span> <span class="normal">132</span> <span class="normal">133</span> <span class="normal">134</span> <span class="normal">135</span> <span class="normal">136</span> <span class="normal">137</span> <span class="normal">138</span> <span class="normal">139</span> <span class="normal">140</span> <span class="normal">141</span> <span class="normal">142</span> <span class="normal">143</span> <span class="normal">144</span> <span class="normal">145</span> <span class="normal">146</span> <span class="normal">147</span> <span class="normal">148</span> <span class="normal">149</span> <span class="normal">150</span> <span class="normal">151</span> <span class="normal">152</span> <span class="normal">153</span> <span class="normal">154</span> <span class="normal">155</span> <span class="normal">156</span> <span class="normal">157</span> <span class="normal">158</span> <span class="normal">159</span> <span class="normal">160</span> <span class="normal">161</span> <span class="normal">162</span> <span class="normal">163</span> <span class="normal">164</span> <span class="normal">165</span> <span class="normal">166</span> <span class="normal">167</span> <span class="normal">168</span> <span class="normal">169</span> <span class="normal">170</span> <span class="normal">171</span> <span class="normal">172</span> <span class="normal">173</span> <span class="normal">174</span> <span class="normal">175</span> <span class="normal">176</span> <span class="normal">177</span> <span class="normal">178</span> <span class="normal">179</span> <span class="normal">180</span> <span class="normal">181</span> <span class="normal">182</span> <span class="normal">183</span> <span class="normal">184</span> <span class="normal">185</span> <span class="normal">186</span> <span class="normal">187</span> <span class="normal">188</span> <span class="normal">189</span> <span class="normal">190</span> <span class="normal">191</span> <span class="normal">192</span> <span class="normal">193</span> <span class="normal">194</span> <span class="normal">195</span> <span class="normal">196</span> <span class="normal">197</span> <span class="normal">198</span> <span class="normal">199</span> <span class="normal">200</span> <span class="normal">201</span> <span class="normal">202</span> <span class="normal">203</span> <span class="normal">204</span> <span class="normal">205</span> <span class="normal">206</span> <span class="normal">207</span> <span class="normal">208</span> <span class="normal">209</span> <span class="normal">210</span> <span class="normal">211</span> <span class="normal">212</span> <span class="normal">213</span> <span class="normal">214</span> <span class="normal">215</span> <span class="normal">216</span> <span class="normal">217</span> <span class="normal">218</span> <span class="normal">219</span> <span class="normal">220</span> <span class="normal">221</span> <span class="normal">222</span> <span class="normal">223</span> <span class="normal">224</span> <span class="normal">225</span> <span class="normal">226</span> <span class="normal">227</span> <span class="normal">228</span> <span class="normal">229</span> <span class="normal">230</span> <span class="normal">231</span> <span class="normal">232</span> <span class="normal">233</span> <span class="normal">234</span> <span class="normal">235</span> <span class="normal">236</span> <span class="normal">237</span> <span class="normal">238</span> <span class="normal">239</span> <span class="normal">240</span> <span class="normal">241</span> <span class="normal">242</span> <span class="normal">243</span> <span class="normal">244</span> <span class="normal">245</span> <span class="normal">246</span> <span class="normal">247</span> <span class="normal">248</span> <span class="normal">249</span> <span class="normal">250</span> <span class="normal">251</span> <span class="normal">252</span> <span class="normal">253</span> <span class="normal">254</span> <span class="normal">255</span> <span class="normal">256</span> <span class="normal">257</span> <span class="normal">258</span> <span class="normal">259</span> <span class="normal">260</span> <span class="normal">261</span> <span class="normal">262</span> <span class="normal">263</span> <span class="normal">264</span> <span class="normal">265</span> <span class="normal">266</span> <span class="normal">267</span> <span class="normal">268</span> <span class="normal">269</span> <span class="normal">270</span> <span class="normal">271</span> <span class="normal">272</span> <span class="normal">273</span> <span class="normal">274</span> <span class="normal">275</span> <span class="normal">276</span> <span class="normal">277</span> <span class="normal">278</span> <span class="normal">279</span> <span class="normal">280</span> <span class="normal">281</span> <span class="normal">282</span> <span class="normal">283</span> <span class="normal">284</span> <span class="normal">285</span> <span class="normal">286</span> <span class="normal">287</span> <span class="normal">288</span> <span class="normal">289</span> <span class="normal">290</span> <span class="normal">291</span> <span class="normal">292</span> <span class="normal">293</span> <span class="normal">294</span> <span class="normal">295</span> <span class="normal">296</span> <span class="normal">297</span> <span class="normal">298</span> <span class="normal">299</span> <span class="normal">300</span> <span class="normal">301</span> <span class="normal">302</span> <span class="normal">303</span> <span class="normal">304</span> <span class="normal">305</span> <span class="normal">306</span> <span class="normal">307</span> <span class="normal">308</span> <span class="normal">309</span> <span class="normal">310</span> <span class="normal">311</span> <span class="normal">312</span> <span class="normal">313</span> <span class="normal">314</span> <span class="normal">315</span> <span class="normal">316</span> <span class="normal">317</span> <span class="normal">318</span> <span class="normal">319</span> <span class="normal">320</span> <span class="normal">321</span> <span class="normal">322</span> <span class="normal">323</span> <span class="normal">324</span> <span class="normal">325</span> <span class="normal">326</span> <span class="normal">327</span> <span class="normal">328</span> <span class="normal">329</span> <span class="normal">330</span> <span class="normal">331</span> <span class="normal">332</span> <span class="normal">333</span> <span class="normal">334</span> <span class="normal">335</span> <span class="normal">336</span> <span class="normal">337</span> <span class="normal">338</span> <span class="normal">339</span> <span class="normal">340</span> <span class="normal">341</span> <span class="normal">342</span> <span class="normal">343</span> <span class="normal">344</span> <span class="normal">345</span> <span class="normal">346</span> <span class="normal">347</span> <span class="normal">348</span> <span class="normal">349</span> <span class="normal">350</span> <span class="normal">351</span> <span class="normal">352</span> <span class="normal">353</span> <span class="normal">354</span> <span class="normal">355</span> <span class="normal">356</span> <span class="normal">357</span> <span class="normal">358</span> <span class="normal">359</span> <span class="normal">360</span> <span class="normal">361</span> <span class="normal">362</span> <span class="normal">363</span> <span class="normal">364</span> <span class="normal">365</span> <span class="normal">366</span> <span class="normal">367</span> <span class="normal">368</span> <span class="normal">369</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Neo4jGraphStore</span><span class="p">(</span><span class="n">GraphStore</span><span class="p">):</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">username</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">database</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"neo4j"</span><span class="p">,</span> <span class="n">node_label</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"Entity"</span><span class="p">,</span> <span class="n">refresh_schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_label</span> <span class="o">=</span> <span class="n">node_label</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span> <span class="o">=</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">GraphDatabase</span><span class="o">.</span><span class="n">driver</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="p">))</span> <span class="bp">self</span><span class="o">.</span><span class="n">_database</span> <span class="o">=</span> <span class="n">database</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">=</span> <span class="n">timeout</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="o">=</span> <span class="s2">""</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># Verify connection</span> <span class="k">try</span><span class="p">:</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span> <span class="k">as</span> <span class="n">driver</span><span class="p">:</span> <span class="n">driver</span><span class="o">.</span><span class="n">verify_connectivity</span><span class="p">()</span> <span class="k">except</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">ServiceUnavailable</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> <span class="s2">"Could not connect to Neo4j database. "</span> <span class="s2">"Please ensure that the url is correct"</span> <span class="p">)</span> <span class="k">except</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">AuthError</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> <span class="s2">"Could not connect to Neo4j database. "</span> <span class="s2">"Please ensure that the username and password are correct"</span> <span class="p">)</span> <span class="c1"># Set schema</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="o">=</span> <span class="s2">""</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">if</span> <span class="n">refresh_schema</span><span class="p">:</span> <span class="k">try</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">refresh_schema</span><span class="p">()</span> <span class="k">except</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">ClientError</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> <span class="s2">"Could not use APOC procedures. "</span> <span class="s2">"Please ensure the APOC plugin is installed in Neo4j and that "</span> <span class="s2">"'apoc.meta.data()' is allowed in Neo4j configuration "</span> <span class="p">)</span> <span class="c1"># Create constraint for faster insert and retrieval</span> <span class="k">try</span><span class="p">:</span> <span class="c1"># Using Neo4j 5</span> <span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">(</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> CREATE CONSTRAINT IF NOT EXISTS FOR (n:%s) REQUIRE n.id IS UNIQUE;</span> <span class="sd"> """</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">)</span> <span class="p">)</span> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> <span class="c1"># Using Neo4j <5</span> <span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">(</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> CREATE CONSTRAINT IF NOT EXISTS ON (n:%s) ASSERT n.id IS UNIQUE;</span> <span class="sd"> """</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">)</span> <span class="p">)</span> <span class="nd">@property</span> <span class="k">def</span> <span class="nf">client</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subj</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> <span class="w"> </span><span class="sd">"""Get triplets."""</span> <span class="n">query</span> <span class="o">=</span> <span class="s2">"""</span> <span class="s2"> MATCH (n1:</span><span class="si">%s</span><span class="s2">)-[r]->(n2:</span><span class="si">%s</span><span class="s2">)</span> <span class="s2"> WHERE n1.id = $subj</span> <span class="s2"> RETURN type(r), n2.id;</span> <span class="s2"> """</span> <span class="n">prepared_statement</span> <span class="o">=</span> <span class="n">query</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">)</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">data</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">prepared_statement</span><span class="p">,</span> <span class="p">{</span><span class="s2">"subj"</span><span class="p">:</span> <span class="n">subj</span><span class="p">})</span> <span class="k">return</span> <span class="p">[</span><span class="n">record</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">data</span><span class="p">]</span> <span class="k">def</span> <span class="nf">get_rel_map</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">subjs</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">depth</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">30</span> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]]:</span> <span class="w"> </span><span class="sd">"""Get flat rel map."""</span> <span class="c1"># The flat means for multi-hop relation path, we could get</span> <span class="c1"># knowledge like: subj -> rel -> obj -> rel -> obj -> rel -> obj.</span> <span class="c1"># This type of knowledge is useful for some tasks.</span> <span class="c1"># +-------------+------------------------------------+</span> <span class="c1"># | subj | flattened_rels |</span> <span class="c1"># +-------------+------------------------------------+</span> <span class="c1"># | "player101" | [95, "player125", 2002, "team204"] |</span> <span class="c1"># | "player100" | [1997, "team204"] |</span> <span class="c1"># ...</span> <span class="c1"># +-------------+------------------------------------+</span> <span class="n">rel_map</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="n">Any</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">if</span> <span class="n">subjs</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">subjs</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># unlike simple graph_store, we don't do get_all here</span> <span class="k">return</span> <span class="n">rel_map</span> <span class="n">query</span> <span class="o">=</span> <span class="p">(</span> <span class="sa">f</span><span class="s2">"""MATCH p=(n1:</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="si">}</span><span class="s2">)-[*1..</span><span class="si">{</span><span class="n">depth</span><span class="si">}</span><span class="s2">]->() """</span> <span class="sa">f</span><span class="s2">"""WHERE toLower(n1.id) IN </span><span class="si">{</span><span class="p">[</span><span class="n">subj</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">subj</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">subjs</span><span class="p">]</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">subjs</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">[]</span><span class="si">}</span><span class="s2">"""</span> <span class="s2">"UNWIND relationships(p) AS rel "</span> <span class="s2">"WITH n1.id AS subj, p, apoc.coll.flatten(apoc.coll.toSet("</span> <span class="s2">"collect([type(rel), endNode(rel).id]))) AS flattened_rels "</span> <span class="sa">f</span><span class="s2">"RETURN subj, collect(flattened_rels) AS flattened_rels LIMIT </span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> <span class="p">)</span> <span class="n">data</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="p">{</span><span class="s2">"subjs"</span><span class="p">:</span> <span class="n">subjs</span><span class="p">}))</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">data</span><span class="p">:</span> <span class="k">return</span> <span class="n">rel_map</span> <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span> <span class="n">rel_map</span><span class="p">[</span><span class="n">record</span><span class="p">[</span><span class="s2">"subj"</span><span class="p">]]</span> <span class="o">=</span> <span class="n">record</span><span class="p">[</span><span class="s2">"flattened_rels"</span><span class="p">]</span> <span class="k">return</span> <span class="n">rel_map</span> <span class="k">def</span> <span class="nf">upsert_triplet</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subj</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">rel</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">obj</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Add triplet."""</span> <span class="n">query</span> <span class="o">=</span> <span class="s2">"""</span> <span class="s2"> MERGE (n1:`</span><span class="si">%s</span><span class="s2">` {id:$subj})</span> <span class="s2"> MERGE (n2:`</span><span class="si">%s</span><span class="s2">` {id:$obj})</span> <span class="s2"> MERGE (n1)-[:`</span><span class="si">%s</span><span class="s2">`]->(n2)</span> <span class="s2"> """</span> <span class="n">prepared_statement</span> <span class="o">=</span> <span class="n">query</span> <span class="o">%</span> <span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">,</span> <span class="n">rel</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">"_"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="p">)</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">prepared_statement</span><span class="p">,</span> <span class="p">{</span><span class="s2">"subj"</span><span class="p">:</span> <span class="n">subj</span><span class="p">,</span> <span class="s2">"obj"</span><span class="p">:</span> <span class="n">obj</span><span class="p">})</span> <span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subj</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">rel</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">obj</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Delete triplet."""</span> <span class="k">def</span> <span class="nf">delete_rel</span><span class="p">(</span><span class="n">subj</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">obj</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">rel</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span> <span class="p">(</span> <span class="s2">"MATCH (n1:</span><span class="si">{}</span><span class="s2">)-[r:</span><span class="si">{}</span><span class="s2">]->(n2:</span><span class="si">{}</span><span class="s2">) WHERE n1.id = $subj AND n2.id"</span> <span class="s2">" = $obj DELETE r"</span> <span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">,</span> <span class="n">rel</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">),</span> <span class="p">{</span><span class="s2">"subj"</span><span class="p">:</span> <span class="n">subj</span><span class="p">,</span> <span class="s2">"obj"</span><span class="p">:</span> <span class="n">obj</span><span class="p">},</span> <span class="p">)</span> <span class="k">def</span> <span class="nf">delete_entity</span><span class="p">(</span><span class="n">entity</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span> <span class="s2">"MATCH (n:</span><span class="si">%s</span><span class="s2">) WHERE n.id = $entity DELETE n"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">,</span> <span class="p">{</span><span class="s2">"entity"</span><span class="p">:</span> <span class="n">entity</span><span class="p">},</span> <span class="p">)</span> <span class="k">def</span> <span class="nf">check_edges</span><span class="p">(</span><span class="n">entity</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">is_exists_result</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span> <span class="s2">"MATCH (n1:</span><span class="si">%s</span><span class="s2">)--() WHERE n1.id = $entity RETURN count(*)"</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">),</span> <span class="p">{</span><span class="s2">"entity"</span><span class="p">:</span> <span class="n">entity</span><span class="p">},</span> <span class="p">)</span> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">is_exists_result</span><span class="p">))</span> <span class="n">delete_rel</span><span class="p">(</span><span class="n">subj</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">rel</span><span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">check_edges</span><span class="p">(</span><span class="n">subj</span><span class="p">):</span> <span class="n">delete_entity</span><span class="p">(</span><span class="n">subj</span><span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">check_edges</span><span class="p">(</span><span class="n">obj</span><span class="p">):</span> <span class="n">delete_entity</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="k">def</span> <span class="nf">refresh_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Refreshes the Neo4j graph schema information.</span> <span class="sd"> """</span> <span class="n">node_properties</span> <span class="o">=</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">node_properties_query</span><span class="p">)]</span> <span class="n">rel_properties</span> <span class="o">=</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">rel_properties_query</span><span class="p">)]</span> <span class="n">relationships</span> <span class="o">=</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">rel_query</span><span class="p">)]</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"node_props"</span><span class="p">:</span> <span class="p">{</span><span class="n">el</span><span class="p">[</span><span class="s2">"labels"</span><span class="p">]:</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">node_properties</span><span class="p">},</span> <span class="s2">"rel_props"</span><span class="p">:</span> <span class="p">{</span><span class="n">el</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]:</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">rel_properties</span><span class="p">},</span> <span class="s2">"relationships"</span><span class="p">:</span> <span class="n">relationships</span><span class="p">,</span> <span class="p">}</span> <span class="c1"># Format node properties</span> <span class="n">formatted_node_props</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">node_properties</span><span class="p">:</span> <span class="n">props_str</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'property'</span><span class="p">]</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]]</span> <span class="p">)</span> <span class="n">formatted_node_props</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'labels'</span><span class="p">]</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="si">{</span><span class="n">props_str</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span><span class="p">)</span> <span class="c1"># Format relationship properties</span> <span class="n">formatted_rel_props</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">rel_properties</span><span class="p">:</span> <span class="n">props_str</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'property'</span><span class="p">]</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]]</span> <span class="p">)</span> <span class="n">formatted_rel_props</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="si">{</span><span class="n">props_str</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span><span class="p">)</span> <span class="c1"># Format relationships</span> <span class="n">formatted_rels</span> <span class="o">=</span> <span class="p">[</span> <span class="sa">f</span><span class="s2">"(:</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'start'</span><span class="p">]</span><span class="si">}</span><span class="s2">)-[:</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2">]->(:</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'end'</span><span class="p">]</span><span class="si">}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">relationships</span> <span class="p">]</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> <span class="p">[</span> <span class="s2">"Node properties are the following:"</span><span class="p">,</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">formatted_node_props</span><span class="p">),</span> <span class="s2">"Relationship properties are the following:"</span><span class="p">,</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">formatted_rel_props</span><span class="p">),</span> <span class="s2">"The relationships are the following:"</span><span class="p">,</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">formatted_rels</span><span class="p">),</span> <span class="p">]</span> <span class="p">)</span> <span class="k">def</span> <span class="nf">get_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">refresh</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Get the schema of the Neo4jGraph store."""</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">refresh</span><span class="p">:</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="bp">self</span><span class="o">.</span><span class="n">refresh_schema</span><span class="p">()</span> <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">"get_schema() schema:</span><span class="se">\n</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="k">def</span> <span class="nf">query</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">param_map</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span> <span class="n">param_map</span> <span class="o">=</span> <span class="n">param_map</span> <span class="ow">or</span> <span class="p">{}</span> <span class="k">try</span><span class="p">:</span> <span class="n">data</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">execute_query</span><span class="p">(</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">Query</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">query</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">),</span> <span class="n">database_</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">,</span> <span class="n">parameters_</span><span class="o">=</span><span class="n">param_map</span><span class="p">,</span> <span class="p">)</span> <span class="k">return</span> <span class="p">[</span><span class="n">r</span><span class="o">.</span><span class="n">data</span><span class="p">()</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">data</span><span class="p">]</span> <span class="k">except</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">Neo4jError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span> <span class="p">(</span> <span class="p">(</span> <span class="c1"># isCallInTransactionError</span> <span class="n">e</span><span class="o">.</span><span class="n">code</span> <span class="o">==</span> <span class="s2">"Neo.DatabaseError.Statement.ExecutionFailed"</span> <span class="ow">or</span> <span class="n">e</span><span class="o">.</span><span class="n">code</span> <span class="o">==</span> <span class="s2">"Neo.DatabaseError.Transaction.TransactionStartFailed"</span> <span class="p">)</span> <span class="ow">and</span> <span class="s2">"in an implicit transaction"</span> <span class="ow">in</span> <span class="n">e</span><span class="o">.</span><span class="n">message</span> <span class="p">)</span> <span class="ow">or</span> <span class="p">(</span> <span class="c1"># isPeriodicCommitError</span> <span class="n">e</span><span class="o">.</span><span class="n">code</span> <span class="o">==</span> <span class="s2">"Neo.ClientError.Statement.SemanticError"</span> <span class="ow">and</span> <span class="p">(</span> <span class="s2">"in an open transaction is not possible"</span> <span class="ow">in</span> <span class="n">e</span><span class="o">.</span><span class="n">message</span> <span class="ow">or</span> <span class="s2">"tried to execute in an explicit transaction"</span> <span class="ow">in</span> <span class="n">e</span><span class="o">.</span><span class="n">message</span> <span class="p">)</span> <span class="p">)</span> <span class="p">):</span> <span class="k">raise</span> <span class="c1"># Fallback to allow implicit transactions</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">data</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">Query</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">query</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">),</span> <span class="n">param_map</span> <span class="p">)</span> <span class="k">return</span> <span class="p">[</span><span class="n">r</span><span class="o">.</span><span class="n">data</span><span class="p">()</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">data</span><span class="p">]</span> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Explicitly close the Neo4j driver connection.</span> <span class="sd"> Delegates connection management to the Neo4j driver.</span> <span class="sd"> """</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_driver"</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="c1"># Remove the driver attribute to indicate closure</span> <span class="nb">delattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_driver"</span><span class="p">)</span> <span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="s2">"Neo4jGraphStore"</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Enter the runtime context for the Neo4j graph connection.</span> <span class="sd"> Enables use of the graph connection with the 'with' statement.</span> <span class="sd"> This method allows for automatic resource management and ensures</span> <span class="sd"> that the connection is properly handled.</span> <span class="sd"> Returns:</span> <span class="sd"> Neo4jPropertyGraphStore: The current graph connection instance</span> <span class="sd"> """</span> <span class="k">return</span> <span class="bp">self</span> <span class="k">def</span> <span class="fm">__exit__</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Type</span><span class="p">[</span><span class="ne">BaseException</span><span class="p">]],</span> <span class="n">exc_val</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="ne">BaseException</span><span class="p">],</span> <span class="n">exc_tb</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">TracebackType</span><span class="p">],</span> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Exit the runtime context for the Neo4j graph connection.</span> <span class="sd"> This method is automatically called when exiting a 'with' statement.</span> <span class="sd"> It ensures that the database connection is closed, regardless of</span> <span class="sd"> whether an exception occurred during the context's execution.</span> <span class="sd"> Args:</span> <span class="sd"> exc_type: The type of exception that caused the context to exit</span> <span class="sd"> (None if no exception occurred)</span> <span class="sd"> exc_val: The exception instance that caused the context to exit</span> <span class="sd"> (None if no exception occurred)</span> <span class="sd"> exc_tb: The traceback for the exception (None if no exception occurred)</span> <span class="sd"> Note:</span> <span class="sd"> Any exception is re-raised after the connection is closed.</span> <span class="sd"> """</span> <span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Destructor for the Neo4j graph connection.</span> <span class="sd"> This method is called during garbage collection to ensure that</span> <span class="sd"> database resources are released if not explicitly closed.</span> <span class="sd"> Caution:</span> <span class="sd"> - Do not rely on this method for deterministic resource cleanup</span> <span class="sd"> - Always prefer explicit .close() or context manager</span> <span class="sd"> Best practices:</span> <span class="sd"> 1. Use context manager:</span> <span class="sd"> with Neo4jGraph(...) as graph:</span> <span class="sd"> ...</span> <span class="sd"> 2. Explicitly close:</span> <span class="sd"> graph = Neo4jGraph(...)</span> <span class="sd"> try:</span> <span class="sd"> ...</span> <span class="sd"> finally:</span> <span class="sd"> graph.close()</span> <span class="sd"> """</span> <span class="k">try</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> <span class="c1"># Suppress any exceptions during garbage collection</span> <span class="k">pass</span> </code></pre></div></td></tr></table></div> </details> <div class="doc doc-children"> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jGraphStore.get" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">get</span> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.get" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">get</span><span class="p">(</span><span class="n">subj</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-></span> <span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n">str</span><span class="p">]]</span> </code></pre></div> <div class="doc doc-contents "> <p>Get triplets.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/base.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">102</span> <span class="normal">103</span> <span class="normal">104</span> <span class="normal">105</span> <span class="normal">106</span> <span class="normal">107</span> <span class="normal">108</span> <span class="normal">109</span> <span class="normal">110</span> <span class="normal">111</span> <span class="normal">112</span> <span class="normal">113</span> <span class="normal">114</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subj</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> <span class="w"> </span><span class="sd">"""Get triplets."""</span> <span class="n">query</span> <span class="o">=</span> <span class="s2">"""</span> <span class="s2"> MATCH (n1:</span><span class="si">%s</span><span class="s2">)-[r]->(n2:</span><span class="si">%s</span><span class="s2">)</span> <span class="s2"> WHERE n1.id = $subj</span> <span class="s2"> RETURN type(r), n2.id;</span> <span class="s2"> """</span> <span class="n">prepared_statement</span> <span class="o">=</span> <span class="n">query</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">)</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">data</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">prepared_statement</span><span class="p">,</span> <span class="p">{</span><span class="s2">"subj"</span><span class="p">:</span> <span class="n">subj</span><span class="p">})</span> <span class="k">return</span> <span class="p">[</span><span class="n">record</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">data</span><span class="p">]</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jGraphStore.get_rel_map" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">get_rel_map</span> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.get_rel_map" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">get_rel_map</span><span class="p">(</span><span class="n">subjs</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">depth</span><span class="p">:</span> <span class="n">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="n">limit</span><span class="p">:</span> <span class="n">int</span> <span class="o">=</span> <span class="mi">30</span><span class="p">)</span> <span class="o">-></span> <span class="n"><span title="typing.Dict">Dict</span></span><span class="p">[</span><span class="n">str</span><span class="p">,</span> <span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n">str</span><span class="p">]]]</span> </code></pre></div> <div class="doc doc-contents "> <p>Get flat rel map.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/base.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">116</span> <span class="normal">117</span> <span class="normal">118</span> <span class="normal">119</span> <span class="normal">120</span> <span class="normal">121</span> <span class="normal">122</span> <span class="normal">123</span> <span class="normal">124</span> <span class="normal">125</span> <span class="normal">126</span> <span class="normal">127</span> <span class="normal">128</span> <span class="normal">129</span> <span class="normal">130</span> <span class="normal">131</span> <span class="normal">132</span> <span class="normal">133</span> <span class="normal">134</span> <span class="normal">135</span> <span class="normal">136</span> <span class="normal">137</span> <span class="normal">138</span> <span class="normal">139</span> <span class="normal">140</span> <span class="normal">141</span> <span class="normal">142</span> <span class="normal">143</span> <span class="normal">144</span> <span class="normal">145</span> <span class="normal">146</span> <span class="normal">147</span> <span class="normal">148</span> <span class="normal">149</span> <span class="normal">150</span> <span class="normal">151</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">get_rel_map</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">subjs</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">depth</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">30</span> <span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]]:</span> <span class="w"> </span><span class="sd">"""Get flat rel map."""</span> <span class="c1"># The flat means for multi-hop relation path, we could get</span> <span class="c1"># knowledge like: subj -> rel -> obj -> rel -> obj -> rel -> obj.</span> <span class="c1"># This type of knowledge is useful for some tasks.</span> <span class="c1"># +-------------+------------------------------------+</span> <span class="c1"># | subj | flattened_rels |</span> <span class="c1"># +-------------+------------------------------------+</span> <span class="c1"># | "player101" | [95, "player125", 2002, "team204"] |</span> <span class="c1"># | "player100" | [1997, "team204"] |</span> <span class="c1"># ...</span> <span class="c1"># +-------------+------------------------------------+</span> <span class="n">rel_map</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="n">Any</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">if</span> <span class="n">subjs</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">subjs</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># unlike simple graph_store, we don't do get_all here</span> <span class="k">return</span> <span class="n">rel_map</span> <span class="n">query</span> <span class="o">=</span> <span class="p">(</span> <span class="sa">f</span><span class="s2">"""MATCH p=(n1:</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="si">}</span><span class="s2">)-[*1..</span><span class="si">{</span><span class="n">depth</span><span class="si">}</span><span class="s2">]->() """</span> <span class="sa">f</span><span class="s2">"""WHERE toLower(n1.id) IN </span><span class="si">{</span><span class="p">[</span><span class="n">subj</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">subj</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">subjs</span><span class="p">]</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">subjs</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">[]</span><span class="si">}</span><span class="s2">"""</span> <span class="s2">"UNWIND relationships(p) AS rel "</span> <span class="s2">"WITH n1.id AS subj, p, apoc.coll.flatten(apoc.coll.toSet("</span> <span class="s2">"collect([type(rel), endNode(rel).id]))) AS flattened_rels "</span> <span class="sa">f</span><span class="s2">"RETURN subj, collect(flattened_rels) AS flattened_rels LIMIT </span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> <span class="p">)</span> <span class="n">data</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="p">{</span><span class="s2">"subjs"</span><span class="p">:</span> <span class="n">subjs</span><span class="p">}))</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">data</span><span class="p">:</span> <span class="k">return</span> <span class="n">rel_map</span> <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span> <span class="n">rel_map</span><span class="p">[</span><span class="n">record</span><span class="p">[</span><span class="s2">"subj"</span><span class="p">]]</span> <span class="o">=</span> <span class="n">record</span><span class="p">[</span><span class="s2">"flattened_rels"</span><span class="p">]</span> <span class="k">return</span> <span class="n">rel_map</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jGraphStore.upsert_triplet" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">upsert_triplet</span> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.upsert_triplet" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">upsert_triplet</span><span class="p">(</span><span class="n">subj</span><span class="p">:</span> <span class="n">str</span><span class="p">,</span> <span class="n">rel</span><span class="p">:</span> <span class="n">str</span><span class="p">,</span> <span class="n">obj</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span> </code></pre></div> <div class="doc doc-contents "> <p>Add triplet.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/base.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">153</span> <span class="normal">154</span> <span class="normal">155</span> <span class="normal">156</span> <span class="normal">157</span> <span class="normal">158</span> <span class="normal">159</span> <span class="normal">160</span> <span class="normal">161</span> <span class="normal">162</span> <span class="normal">163</span> <span class="normal">164</span> <span class="normal">165</span> <span class="normal">166</span> <span class="normal">167</span> <span class="normal">168</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">upsert_triplet</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subj</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">rel</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">obj</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Add triplet."""</span> <span class="n">query</span> <span class="o">=</span> <span class="s2">"""</span> <span class="s2"> MERGE (n1:`</span><span class="si">%s</span><span class="s2">` {id:$subj})</span> <span class="s2"> MERGE (n2:`</span><span class="si">%s</span><span class="s2">` {id:$obj})</span> <span class="s2"> MERGE (n1)-[:`</span><span class="si">%s</span><span class="s2">`]->(n2)</span> <span class="s2"> """</span> <span class="n">prepared_statement</span> <span class="o">=</span> <span class="n">query</span> <span class="o">%</span> <span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">,</span> <span class="n">rel</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">"_"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="p">)</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">prepared_statement</span><span class="p">,</span> <span class="p">{</span><span class="s2">"subj"</span><span class="p">:</span> <span class="n">subj</span><span class="p">,</span> <span class="s2">"obj"</span><span class="p">:</span> <span class="n">obj</span><span class="p">})</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jGraphStore.delete" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">delete</span> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.delete" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">delete</span><span class="p">(</span><span class="n">subj</span><span class="p">:</span> <span class="n">str</span><span class="p">,</span> <span class="n">rel</span><span class="p">:</span> <span class="n">str</span><span class="p">,</span> <span class="n">obj</span><span class="p">:</span> <span class="n">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span> </code></pre></div> <div class="doc doc-contents "> <p>Delete triplet.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/base.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">170</span> <span class="normal">171</span> <span class="normal">172</span> <span class="normal">173</span> <span class="normal">174</span> <span class="normal">175</span> <span class="normal">176</span> <span class="normal">177</span> <span class="normal">178</span> <span class="normal">179</span> <span class="normal">180</span> <span class="normal">181</span> <span class="normal">182</span> <span class="normal">183</span> <span class="normal">184</span> <span class="normal">185</span> <span class="normal">186</span> <span class="normal">187</span> <span class="normal">188</span> <span class="normal">189</span> <span class="normal">190</span> <span class="normal">191</span> <span class="normal">192</span> <span class="normal">193</span> <span class="normal">194</span> <span class="normal">195</span> <span class="normal">196</span> <span class="normal">197</span> <span class="normal">198</span> <span class="normal">199</span> <span class="normal">200</span> <span class="normal">201</span> <span class="normal">202</span> <span class="normal">203</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subj</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">rel</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">obj</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Delete triplet."""</span> <span class="k">def</span> <span class="nf">delete_rel</span><span class="p">(</span><span class="n">subj</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">obj</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">rel</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span> <span class="p">(</span> <span class="s2">"MATCH (n1:</span><span class="si">{}</span><span class="s2">)-[r:</span><span class="si">{}</span><span class="s2">]->(n2:</span><span class="si">{}</span><span class="s2">) WHERE n1.id = $subj AND n2.id"</span> <span class="s2">" = $obj DELETE r"</span> <span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">,</span> <span class="n">rel</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">),</span> <span class="p">{</span><span class="s2">"subj"</span><span class="p">:</span> <span class="n">subj</span><span class="p">,</span> <span class="s2">"obj"</span><span class="p">:</span> <span class="n">obj</span><span class="p">},</span> <span class="p">)</span> <span class="k">def</span> <span class="nf">delete_entity</span><span class="p">(</span><span class="n">entity</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span> <span class="s2">"MATCH (n:</span><span class="si">%s</span><span class="s2">) WHERE n.id = $entity DELETE n"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">,</span> <span class="p">{</span><span class="s2">"entity"</span><span class="p">:</span> <span class="n">entity</span><span class="p">},</span> <span class="p">)</span> <span class="k">def</span> <span class="nf">check_edges</span><span class="p">(</span><span class="n">entity</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">is_exists_result</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span> <span class="s2">"MATCH (n1:</span><span class="si">%s</span><span class="s2">)--() WHERE n1.id = $entity RETURN count(*)"</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">node_label</span><span class="p">),</span> <span class="p">{</span><span class="s2">"entity"</span><span class="p">:</span> <span class="n">entity</span><span class="p">},</span> <span class="p">)</span> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">is_exists_result</span><span class="p">))</span> <span class="n">delete_rel</span><span class="p">(</span><span class="n">subj</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">rel</span><span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">check_edges</span><span class="p">(</span><span class="n">subj</span><span class="p">):</span> <span class="n">delete_entity</span><span class="p">(</span><span class="n">subj</span><span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">check_edges</span><span class="p">(</span><span class="n">obj</span><span class="p">):</span> <span class="n">delete_entity</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jGraphStore.refresh_schema" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">refresh_schema</span> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.refresh_schema" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">refresh_schema</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span> </code></pre></div> <div class="doc doc-contents "> <p>Refreshes the Neo4j graph schema information.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/base.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">205</span> <span class="normal">206</span> <span class="normal">207</span> <span class="normal">208</span> <span class="normal">209</span> <span class="normal">210</span> <span class="normal">211</span> <span class="normal">212</span> <span class="normal">213</span> <span class="normal">214</span> <span class="normal">215</span> <span class="normal">216</span> <span class="normal">217</span> <span class="normal">218</span> <span class="normal">219</span> <span class="normal">220</span> <span class="normal">221</span> <span class="normal">222</span> <span class="normal">223</span> <span class="normal">224</span> <span class="normal">225</span> <span class="normal">226</span> <span class="normal">227</span> <span class="normal">228</span> <span class="normal">229</span> <span class="normal">230</span> <span class="normal">231</span> <span class="normal">232</span> <span class="normal">233</span> <span class="normal">234</span> <span class="normal">235</span> <span class="normal">236</span> <span class="normal">237</span> <span class="normal">238</span> <span class="normal">239</span> <span class="normal">240</span> <span class="normal">241</span> <span class="normal">242</span> <span class="normal">243</span> <span class="normal">244</span> <span class="normal">245</span> <span class="normal">246</span> <span class="normal">247</span> <span class="normal">248</span> <span class="normal">249</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">refresh_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Refreshes the Neo4j graph schema information.</span> <span class="sd"> """</span> <span class="n">node_properties</span> <span class="o">=</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">node_properties_query</span><span class="p">)]</span> <span class="n">rel_properties</span> <span class="o">=</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">rel_properties_query</span><span class="p">)]</span> <span class="n">relationships</span> <span class="o">=</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">rel_query</span><span class="p">)]</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"node_props"</span><span class="p">:</span> <span class="p">{</span><span class="n">el</span><span class="p">[</span><span class="s2">"labels"</span><span class="p">]:</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">node_properties</span><span class="p">},</span> <span class="s2">"rel_props"</span><span class="p">:</span> <span class="p">{</span><span class="n">el</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]:</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">rel_properties</span><span class="p">},</span> <span class="s2">"relationships"</span><span class="p">:</span> <span class="n">relationships</span><span class="p">,</span> <span class="p">}</span> <span class="c1"># Format node properties</span> <span class="n">formatted_node_props</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">node_properties</span><span class="p">:</span> <span class="n">props_str</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'property'</span><span class="p">]</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]]</span> <span class="p">)</span> <span class="n">formatted_node_props</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'labels'</span><span class="p">]</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="si">{</span><span class="n">props_str</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span><span class="p">)</span> <span class="c1"># Format relationship properties</span> <span class="n">formatted_rel_props</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">rel_properties</span><span class="p">:</span> <span class="n">props_str</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'property'</span><span class="p">]</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]]</span> <span class="p">)</span> <span class="n">formatted_rel_props</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="si">{</span><span class="n">props_str</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span><span class="p">)</span> <span class="c1"># Format relationships</span> <span class="n">formatted_rels</span> <span class="o">=</span> <span class="p">[</span> <span class="sa">f</span><span class="s2">"(:</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'start'</span><span class="p">]</span><span class="si">}</span><span class="s2">)-[:</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2">]->(:</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'end'</span><span class="p">]</span><span class="si">}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">relationships</span> <span class="p">]</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> <span class="p">[</span> <span class="s2">"Node properties are the following:"</span><span class="p">,</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">formatted_node_props</span><span class="p">),</span> <span class="s2">"Relationship properties are the following:"</span><span class="p">,</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">formatted_rel_props</span><span class="p">),</span> <span class="s2">"The relationships are the following:"</span><span class="p">,</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">formatted_rels</span><span class="p">),</span> <span class="p">]</span> <span class="p">)</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jGraphStore.get_schema" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">get_schema</span> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.get_schema" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">get_schema</span><span class="p">(</span><span class="n">refresh</span><span class="p">:</span> <span class="n">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">str</span> </code></pre></div> <div class="doc doc-contents "> <p>Get the schema of the Neo4jGraph store.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/base.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">251</span> <span class="normal">252</span> <span class="normal">253</span> <span class="normal">254</span> <span class="normal">255</span> <span class="normal">256</span> <span class="normal">257</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">get_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">refresh</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Get the schema of the Neo4jGraph store."""</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">refresh</span><span class="p">:</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="bp">self</span><span class="o">.</span><span class="n">refresh_schema</span><span class="p">()</span> <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="sa">f</span><span class="s2">"get_schema() schema:</span><span class="se">\n</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jGraphStore.close" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">close</span> <a href="#llama_index.graph_stores.neo4j.Neo4jGraphStore.close" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">close</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span> </code></pre></div> <div class="doc doc-contents "> <p>Explicitly close the Neo4j driver connection.</p> <p>Delegates connection management to the Neo4j driver.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/base.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">294</span> <span class="normal">295</span> <span class="normal">296</span> <span class="normal">297</span> <span class="normal">298</span> <span class="normal">299</span> <span class="normal">300</span> <span class="normal">301</span> <span class="normal">302</span> <span class="normal">303</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Explicitly close the Neo4j driver connection.</span> <span class="sd"> Delegates connection management to the Neo4j driver.</span> <span class="sd"> """</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_driver"</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="c1"># Remove the driver attribute to indicate closure</span> <span class="nb">delattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_driver"</span><span class="p">)</span> </code></pre></div></td></tr></table></div> </details> </div> </div> </div> </div> </div> <div class="doc doc-object doc-class"> <h2 id="llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore" class="doc doc-heading"> <span class="doc doc-object-name doc-class-name">Neo4jPropertyGraphStore</span> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore" class="headerlink" title="Permanent link">#</a></h2> <div class="doc doc-contents "> <p class="doc doc-class-bases"> Bases: <code><span title="llama_index.core.graph_stores.types.PropertyGraphStore">PropertyGraphStore</span></code></p> <p>Neo4j Property Graph Store.</p> <p>This class implements a Neo4j property graph store.</p> <p>If you are using local Neo4j instead of aura, here's a helpful command for launching the docker container:</p> <div class="highlight"><pre><span></span><code>docker<span class="w"> </span>run<span class="w"> </span><span class="se">\</span> <span class="w"> </span>-p<span class="w"> </span><span class="m">7474</span>:7474<span class="w"> </span>-p<span class="w"> </span><span class="m">7687</span>:7687<span class="w"> </span><span class="se">\</span> <span class="w"> </span>-v<span class="w"> </span><span class="nv">$PWD</span>/data:/data<span class="w"> </span>-v<span class="w"> </span><span class="nv">$PWD</span>/plugins:/plugins<span class="w"> </span><span class="se">\</span> <span class="w"> </span>--name<span class="w"> </span>neo4j-apoc<span class="w"> </span><span class="se">\</span> <span class="w"> </span>-e<span class="w"> </span><span class="nv">NEO4J_apoc_export_file_enabled</span><span class="o">=</span><span class="nb">true</span><span class="w"> </span><span class="se">\</span> <span class="w"> </span>-e<span class="w"> </span><span class="nv">NEO4J_apoc_import_file_enabled</span><span class="o">=</span><span class="nb">true</span><span class="w"> </span><span class="se">\</span> <span class="w"> </span>-e<span class="w"> </span><span class="nv">NEO4J_apoc_import_file_use__neo4j__config</span><span class="o">=</span><span class="nb">true</span><span class="w"> </span><span class="se">\</span> <span class="w"> </span>-e<span class="w"> </span><span class="nv">NEO4JLABS_PLUGINS</span><span class="o">=</span><span class="se">\\</span><span class="o">[</span><span class="se">\"</span>apoc<span class="se">\"\\</span><span class="o">]</span><span class="w"> </span><span class="se">\</span> <span class="w"> </span>neo4j:latest </code></pre></div> <p><span class="doc-section-title">Parameters:</span></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> <th>Default</th> </tr> </thead> <tbody> <tr class="doc-section-item"> <td> <code>username</code> </td> <td> <code>str</code> </td> <td> <div class="doc-md-description"> <p>The username for the Neo4j database.</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class="doc-section-item"> <td> <code>password</code> </td> <td> <code>str</code> </td> <td> <div class="doc-md-description"> <p>The password for the Neo4j database.</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class="doc-section-item"> <td> <code>url</code> </td> <td> <code>str</code> </td> <td> <div class="doc-md-description"> <p>The URL for the Neo4j database.</p> </div> </td> <td> <em>required</em> </td> </tr> <tr class="doc-section-item"> <td> <code>database</code> </td> <td> <code><span title="typing.Optional">Optional</span>[str]</code> </td> <td> <div class="doc-md-description"> <p>The name of the database to connect to. Defaults to "neo4j".</p> </div> </td> <td> <code>'neo4j'</code> </td> </tr> <tr class="doc-section-item"> <td> <code>timeout</code> </td> <td> <code><span title="typing.Optional">Optional</span>[float]</code> </td> <td> <div class="doc-md-description"> <p>The timeout for transactions in seconds.</p> </div> </td> <td> <code>None</code> </td> </tr> </tbody> </table> <p><span class="doc-section-title">Examples:</span></p> <p><code>pip install llama-index-graph-stores-neo4j</code></p> <div class="highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">llama_index.core.indices.property_graph</span> <span class="kn">import</span> <span class="n">PropertyGraphIndex</span> <span class="kn">from</span> <span class="nn">llama_index.graph_stores.neo4j</span> <span class="kn">import</span> <span class="n">Neo4jPropertyGraphStore</span> <span class="c1"># Create a Neo4jPropertyGraphStore instance</span> <span class="n">graph_store</span> <span class="o">=</span> <span class="n">Neo4jPropertyGraphStore</span><span class="p">(</span> <span class="n">username</span><span class="o">=</span><span class="s2">"neo4j"</span><span class="p">,</span> <span class="n">password</span><span class="o">=</span><span class="s2">"neo4j"</span><span class="p">,</span> <span class="n">url</span><span class="o">=</span><span class="s2">"bolt://localhost:7687"</span><span class="p">,</span> <span class="n">database</span><span class="o">=</span><span class="s2">"neo4j"</span> <span class="p">)</span> <span class="c1"># create the index</span> <span class="n">index</span> <span class="o">=</span> <span class="n">PropertyGraphIndex</span><span class="o">.</span><span class="n">from_documents</span><span class="p">(</span> <span class="n">documents</span><span class="p">,</span> <span class="n">property_graph_store</span><span class="o">=</span><span class="n">graph_store</span><span class="p">,</span> <span class="p">)</span> <span class="c1"># Close the neo4j connection explicitly.</span> <span class="n">graph_store</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> </code></pre></div> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/neo4j_property_graph.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 91</span> <span class="normal"> 92</span> <span class="normal"> 93</span> <span class="normal"> 94</span> <span class="normal"> 95</span> <span class="normal"> 96</span> <span class="normal"> 97</span> <span class="normal"> 98</span> <span class="normal"> 99</span> <span class="normal"> 100</span> <span class="normal"> 101</span> <span class="normal"> 102</span> <span class="normal"> 103</span> <span class="normal"> 104</span> <span class="normal"> 105</span> <span class="normal"> 106</span> <span class="normal"> 107</span> <span class="normal"> 108</span> <span class="normal"> 109</span> <span class="normal"> 110</span> <span class="normal"> 111</span> <span class="normal"> 112</span> <span class="normal"> 113</span> <span class="normal"> 114</span> <span class="normal"> 115</span> <span class="normal"> 116</span> <span class="normal"> 117</span> <span class="normal"> 118</span> <span class="normal"> 119</span> <span class="normal"> 120</span> <span class="normal"> 121</span> <span class="normal"> 122</span> <span class="normal"> 123</span> <span class="normal"> 124</span> <span class="normal"> 125</span> <span class="normal"> 126</span> <span class="normal"> 127</span> <span class="normal"> 128</span> <span class="normal"> 129</span> <span class="normal"> 130</span> <span class="normal"> 131</span> <span class="normal"> 132</span> <span class="normal"> 133</span> <span class="normal"> 134</span> <span class="normal"> 135</span> <span class="normal"> 136</span> <span class="normal"> 137</span> <span class="normal"> 138</span> <span class="normal"> 139</span> <span class="normal"> 140</span> <span class="normal"> 141</span> <span class="normal"> 142</span> <span class="normal"> 143</span> <span class="normal"> 144</span> <span class="normal"> 145</span> <span class="normal"> 146</span> <span class="normal"> 147</span> <span class="normal"> 148</span> <span class="normal"> 149</span> <span class="normal"> 150</span> <span class="normal"> 151</span> <span class="normal"> 152</span> <span class="normal"> 153</span> <span class="normal"> 154</span> <span class="normal"> 155</span> <span class="normal"> 156</span> <span class="normal"> 157</span> <span class="normal"> 158</span> <span class="normal"> 159</span> <span class="normal"> 160</span> <span class="normal"> 161</span> <span class="normal"> 162</span> <span class="normal"> 163</span> <span class="normal"> 164</span> <span class="normal"> 165</span> <span class="normal"> 166</span> <span class="normal"> 167</span> <span class="normal"> 168</span> <span class="normal"> 169</span> <span class="normal"> 170</span> <span class="normal"> 171</span> <span class="normal"> 172</span> <span class="normal"> 173</span> <span class="normal"> 174</span> <span class="normal"> 175</span> <span class="normal"> 176</span> <span class="normal"> 177</span> <span class="normal"> 178</span> <span class="normal"> 179</span> <span class="normal"> 180</span> <span class="normal"> 181</span> <span class="normal"> 182</span> <span class="normal"> 183</span> <span class="normal"> 184</span> <span class="normal"> 185</span> <span class="normal"> 186</span> <span class="normal"> 187</span> <span class="normal"> 188</span> <span class="normal"> 189</span> <span class="normal"> 190</span> <span class="normal"> 191</span> <span class="normal"> 192</span> <span class="normal"> 193</span> <span class="normal"> 194</span> <span class="normal"> 195</span> <span class="normal"> 196</span> <span class="normal"> 197</span> <span class="normal"> 198</span> <span class="normal"> 199</span> <span class="normal"> 200</span> <span class="normal"> 201</span> <span class="normal"> 202</span> <span class="normal"> 203</span> <span class="normal"> 204</span> <span class="normal"> 205</span> <span class="normal"> 206</span> <span class="normal"> 207</span> <span class="normal"> 208</span> <span class="normal"> 209</span> <span class="normal"> 210</span> <span class="normal"> 211</span> <span class="normal"> 212</span> <span class="normal"> 213</span> <span class="normal"> 214</span> <span class="normal"> 215</span> <span class="normal"> 216</span> <span class="normal"> 217</span> <span class="normal"> 218</span> <span class="normal"> 219</span> <span class="normal"> 220</span> <span class="normal"> 221</span> <span class="normal"> 222</span> <span class="normal"> 223</span> <span class="normal"> 224</span> <span class="normal"> 225</span> <span class="normal"> 226</span> <span class="normal"> 227</span> <span class="normal"> 228</span> <span class="normal"> 229</span> <span class="normal"> 230</span> <span class="normal"> 231</span> <span class="normal"> 232</span> <span class="normal"> 233</span> <span class="normal"> 234</span> <span class="normal"> 235</span> <span class="normal"> 236</span> <span class="normal"> 237</span> <span class="normal"> 238</span> <span class="normal"> 239</span> <span class="normal"> 240</span> <span class="normal"> 241</span> <span class="normal"> 242</span> <span class="normal"> 243</span> <span class="normal"> 244</span> <span class="normal"> 245</span> <span class="normal"> 246</span> <span class="normal"> 247</span> <span class="normal"> 248</span> <span class="normal"> 249</span> <span class="normal"> 250</span> <span class="normal"> 251</span> <span class="normal"> 252</span> <span class="normal"> 253</span> <span class="normal"> 254</span> <span class="normal"> 255</span> <span class="normal"> 256</span> <span class="normal"> 257</span> <span class="normal"> 258</span> <span class="normal"> 259</span> <span class="normal"> 260</span> <span class="normal"> 261</span> <span class="normal"> 262</span> <span class="normal"> 263</span> <span class="normal"> 264</span> <span class="normal"> 265</span> <span class="normal"> 266</span> <span class="normal"> 267</span> <span class="normal"> 268</span> <span class="normal"> 269</span> <span class="normal"> 270</span> <span class="normal"> 271</span> <span class="normal"> 272</span> <span class="normal"> 273</span> <span class="normal"> 274</span> <span class="normal"> 275</span> <span class="normal"> 276</span> <span class="normal"> 277</span> <span class="normal"> 278</span> <span class="normal"> 279</span> <span class="normal"> 280</span> <span class="normal"> 281</span> <span class="normal"> 282</span> <span class="normal"> 283</span> <span class="normal"> 284</span> <span class="normal"> 285</span> <span class="normal"> 286</span> <span class="normal"> 287</span> <span class="normal"> 288</span> <span class="normal"> 289</span> <span class="normal"> 290</span> <span class="normal"> 291</span> <span class="normal"> 292</span> <span class="normal"> 293</span> <span class="normal"> 294</span> <span class="normal"> 295</span> <span class="normal"> 296</span> <span class="normal"> 297</span> <span class="normal"> 298</span> <span class="normal"> 299</span> <span class="normal"> 300</span> <span class="normal"> 301</span> <span class="normal"> 302</span> <span class="normal"> 303</span> <span class="normal"> 304</span> <span class="normal"> 305</span> <span class="normal"> 306</span> <span class="normal"> 307</span> <span class="normal"> 308</span> <span class="normal"> 309</span> <span class="normal"> 310</span> <span class="normal"> 311</span> <span class="normal"> 312</span> <span class="normal"> 313</span> <span class="normal"> 314</span> <span class="normal"> 315</span> <span class="normal"> 316</span> <span class="normal"> 317</span> <span class="normal"> 318</span> <span class="normal"> 319</span> <span class="normal"> 320</span> <span class="normal"> 321</span> <span class="normal"> 322</span> <span class="normal"> 323</span> <span class="normal"> 324</span> <span class="normal"> 325</span> <span class="normal"> 326</span> <span class="normal"> 327</span> <span class="normal"> 328</span> <span class="normal"> 329</span> <span class="normal"> 330</span> <span class="normal"> 331</span> <span class="normal"> 332</span> <span class="normal"> 333</span> <span class="normal"> 334</span> <span class="normal"> 335</span> <span class="normal"> 336</span> <span class="normal"> 337</span> <span class="normal"> 338</span> <span class="normal"> 339</span> <span class="normal"> 340</span> <span class="normal"> 341</span> <span class="normal"> 342</span> <span class="normal"> 343</span> <span class="normal"> 344</span> <span class="normal"> 345</span> <span class="normal"> 346</span> <span class="normal"> 347</span> <span class="normal"> 348</span> <span class="normal"> 349</span> <span class="normal"> 350</span> <span class="normal"> 351</span> <span class="normal"> 352</span> <span class="normal"> 353</span> <span class="normal"> 354</span> <span class="normal"> 355</span> <span class="normal"> 356</span> <span class="normal"> 357</span> <span class="normal"> 358</span> <span class="normal"> 359</span> <span class="normal"> 360</span> <span class="normal"> 361</span> <span class="normal"> 362</span> <span class="normal"> 363</span> <span class="normal"> 364</span> <span class="normal"> 365</span> <span class="normal"> 366</span> <span class="normal"> 367</span> <span class="normal"> 368</span> <span class="normal"> 369</span> <span class="normal"> 370</span> <span class="normal"> 371</span> <span class="normal"> 372</span> <span class="normal"> 373</span> <span class="normal"> 374</span> <span class="normal"> 375</span> <span class="normal"> 376</span> <span class="normal"> 377</span> <span class="normal"> 378</span> <span class="normal"> 379</span> <span class="normal"> 380</span> <span class="normal"> 381</span> <span class="normal"> 382</span> <span class="normal"> 383</span> <span class="normal"> 384</span> <span class="normal"> 385</span> <span class="normal"> 386</span> <span class="normal"> 387</span> <span class="normal"> 388</span> <span class="normal"> 389</span> <span class="normal"> 390</span> <span class="normal"> 391</span> <span class="normal"> 392</span> <span class="normal"> 393</span> <span class="normal"> 394</span> <span class="normal"> 395</span> <span class="normal"> 396</span> <span class="normal"> 397</span> <span class="normal"> 398</span> <span class="normal"> 399</span> <span class="normal"> 400</span> <span class="normal"> 401</span> <span class="normal"> 402</span> <span class="normal"> 403</span> <span class="normal"> 404</span> <span class="normal"> 405</span> <span class="normal"> 406</span> <span class="normal"> 407</span> <span class="normal"> 408</span> <span class="normal"> 409</span> <span class="normal"> 410</span> <span class="normal"> 411</span> <span class="normal"> 412</span> <span class="normal"> 413</span> <span class="normal"> 414</span> <span class="normal"> 415</span> <span class="normal"> 416</span> <span class="normal"> 417</span> <span class="normal"> 418</span> <span class="normal"> 419</span> <span class="normal"> 420</span> <span class="normal"> 421</span> <span class="normal"> 422</span> <span class="normal"> 423</span> <span class="normal"> 424</span> <span class="normal"> 425</span> <span class="normal"> 426</span> <span class="normal"> 427</span> <span class="normal"> 428</span> <span class="normal"> 429</span> <span class="normal"> 430</span> <span class="normal"> 431</span> <span class="normal"> 432</span> <span class="normal"> 433</span> <span class="normal"> 434</span> <span class="normal"> 435</span> <span class="normal"> 436</span> <span class="normal"> 437</span> <span class="normal"> 438</span> <span class="normal"> 439</span> <span class="normal"> 440</span> <span class="normal"> 441</span> <span class="normal"> 442</span> <span class="normal"> 443</span> <span class="normal"> 444</span> <span class="normal"> 445</span> <span class="normal"> 446</span> <span class="normal"> 447</span> <span class="normal"> 448</span> <span class="normal"> 449</span> <span class="normal"> 450</span> <span class="normal"> 451</span> <span class="normal"> 452</span> <span class="normal"> 453</span> <span class="normal"> 454</span> <span class="normal"> 455</span> <span class="normal"> 456</span> <span class="normal"> 457</span> <span class="normal"> 458</span> <span class="normal"> 459</span> <span class="normal"> 460</span> <span class="normal"> 461</span> <span class="normal"> 462</span> <span class="normal"> 463</span> <span class="normal"> 464</span> <span class="normal"> 465</span> <span class="normal"> 466</span> <span class="normal"> 467</span> <span class="normal"> 468</span> <span class="normal"> 469</span> <span class="normal"> 470</span> <span class="normal"> 471</span> <span class="normal"> 472</span> <span class="normal"> 473</span> <span class="normal"> 474</span> <span class="normal"> 475</span> <span class="normal"> 476</span> <span class="normal"> 477</span> <span class="normal"> 478</span> <span class="normal"> 479</span> <span class="normal"> 480</span> <span class="normal"> 481</span> <span class="normal"> 482</span> <span class="normal"> 483</span> <span class="normal"> 484</span> <span class="normal"> 485</span> <span class="normal"> 486</span> <span class="normal"> 487</span> <span class="normal"> 488</span> <span class="normal"> 489</span> <span class="normal"> 490</span> <span class="normal"> 491</span> <span class="normal"> 492</span> <span class="normal"> 493</span> <span class="normal"> 494</span> <span class="normal"> 495</span> <span class="normal"> 496</span> <span class="normal"> 497</span> <span class="normal"> 498</span> <span class="normal"> 499</span> <span class="normal"> 500</span> <span class="normal"> 501</span> <span class="normal"> 502</span> <span class="normal"> 503</span> <span class="normal"> 504</span> <span class="normal"> 505</span> <span class="normal"> 506</span> <span class="normal"> 507</span> <span class="normal"> 508</span> <span class="normal"> 509</span> <span class="normal"> 510</span> <span class="normal"> 511</span> <span class="normal"> 512</span> <span class="normal"> 513</span> <span class="normal"> 514</span> <span class="normal"> 515</span> <span class="normal"> 516</span> <span class="normal"> 517</span> <span class="normal"> 518</span> <span class="normal"> 519</span> <span class="normal"> 520</span> <span class="normal"> 521</span> <span class="normal"> 522</span> <span class="normal"> 523</span> <span class="normal"> 524</span> <span class="normal"> 525</span> <span class="normal"> 526</span> <span class="normal"> 527</span> <span class="normal"> 528</span> <span class="normal"> 529</span> <span class="normal"> 530</span> <span class="normal"> 531</span> <span class="normal"> 532</span> <span class="normal"> 533</span> <span class="normal"> 534</span> <span class="normal"> 535</span> <span class="normal"> 536</span> <span class="normal"> 537</span> <span class="normal"> 538</span> <span class="normal"> 539</span> <span class="normal"> 540</span> <span class="normal"> 541</span> <span class="normal"> 542</span> <span class="normal"> 543</span> <span class="normal"> 544</span> <span class="normal"> 545</span> <span class="normal"> 546</span> <span class="normal"> 547</span> <span class="normal"> 548</span> <span class="normal"> 549</span> <span class="normal"> 550</span> <span class="normal"> 551</span> <span class="normal"> 552</span> <span class="normal"> 553</span> <span class="normal"> 554</span> <span class="normal"> 555</span> <span class="normal"> 556</span> <span class="normal"> 557</span> <span class="normal"> 558</span> <span class="normal"> 559</span> <span class="normal"> 560</span> <span class="normal"> 561</span> <span class="normal"> 562</span> <span class="normal"> 563</span> <span class="normal"> 564</span> <span class="normal"> 565</span> <span class="normal"> 566</span> <span class="normal"> 567</span> <span class="normal"> 568</span> <span class="normal"> 569</span> <span class="normal"> 570</span> <span class="normal"> 571</span> <span class="normal"> 572</span> <span class="normal"> 573</span> <span class="normal"> 574</span> <span class="normal"> 575</span> <span class="normal"> 576</span> <span class="normal"> 577</span> <span class="normal"> 578</span> <span class="normal"> 579</span> <span class="normal"> 580</span> <span class="normal"> 581</span> <span class="normal"> 582</span> <span class="normal"> 583</span> <span class="normal"> 584</span> <span class="normal"> 585</span> <span class="normal"> 586</span> <span class="normal"> 587</span> <span class="normal"> 588</span> <span class="normal"> 589</span> <span class="normal"> 590</span> <span class="normal"> 591</span> <span class="normal"> 592</span> <span class="normal"> 593</span> <span class="normal"> 594</span> <span class="normal"> 595</span> <span class="normal"> 596</span> <span class="normal"> 597</span> <span class="normal"> 598</span> <span class="normal"> 599</span> <span class="normal"> 600</span> <span class="normal"> 601</span> <span class="normal"> 602</span> <span class="normal"> 603</span> <span class="normal"> 604</span> <span class="normal"> 605</span> <span class="normal"> 606</span> <span class="normal"> 607</span> <span class="normal"> 608</span> <span class="normal"> 609</span> <span class="normal"> 610</span> <span class="normal"> 611</span> <span class="normal"> 612</span> <span class="normal"> 613</span> <span class="normal"> 614</span> <span class="normal"> 615</span> <span class="normal"> 616</span> <span class="normal"> 617</span> <span class="normal"> 618</span> <span class="normal"> 619</span> <span class="normal"> 620</span> <span class="normal"> 621</span> <span class="normal"> 622</span> <span class="normal"> 623</span> <span class="normal"> 624</span> <span class="normal"> 625</span> <span class="normal"> 626</span> <span class="normal"> 627</span> <span class="normal"> 628</span> <span class="normal"> 629</span> <span class="normal"> 630</span> <span class="normal"> 631</span> <span class="normal"> 632</span> <span class="normal"> 633</span> <span class="normal"> 634</span> <span class="normal"> 635</span> <span class="normal"> 636</span> <span class="normal"> 637</span> <span class="normal"> 638</span> <span class="normal"> 639</span> <span class="normal"> 640</span> <span class="normal"> 641</span> <span class="normal"> 642</span> <span class="normal"> 643</span> <span class="normal"> 644</span> <span class="normal"> 645</span> <span class="normal"> 646</span> <span class="normal"> 647</span> <span class="normal"> 648</span> <span class="normal"> 649</span> <span class="normal"> 650</span> <span class="normal"> 651</span> <span class="normal"> 652</span> <span class="normal"> 653</span> <span class="normal"> 654</span> <span class="normal"> 655</span> <span class="normal"> 656</span> <span class="normal"> 657</span> <span class="normal"> 658</span> <span class="normal"> 659</span> <span class="normal"> 660</span> <span class="normal"> 661</span> <span class="normal"> 662</span> <span class="normal"> 663</span> <span class="normal"> 664</span> <span class="normal"> 665</span> <span class="normal"> 666</span> <span class="normal"> 667</span> <span class="normal"> 668</span> <span class="normal"> 669</span> <span class="normal"> 670</span> <span class="normal"> 671</span> <span class="normal"> 672</span> <span class="normal"> 673</span> <span class="normal"> 674</span> <span class="normal"> 675</span> <span class="normal"> 676</span> <span class="normal"> 677</span> <span class="normal"> 678</span> <span class="normal"> 679</span> <span class="normal"> 680</span> <span class="normal"> 681</span> <span class="normal"> 682</span> <span class="normal"> 683</span> <span class="normal"> 684</span> <span class="normal"> 685</span> <span class="normal"> 686</span> <span class="normal"> 687</span> <span class="normal"> 688</span> <span class="normal"> 689</span> <span class="normal"> 690</span> <span class="normal"> 691</span> <span class="normal"> 692</span> <span class="normal"> 693</span> <span class="normal"> 694</span> <span class="normal"> 695</span> <span class="normal"> 696</span> <span class="normal"> 697</span> <span class="normal"> 698</span> <span class="normal"> 699</span> <span class="normal"> 700</span> <span class="normal"> 701</span> <span class="normal"> 702</span> <span class="normal"> 703</span> <span class="normal"> 704</span> <span class="normal"> 705</span> <span class="normal"> 706</span> <span class="normal"> 707</span> <span class="normal"> 708</span> <span class="normal"> 709</span> <span class="normal"> 710</span> <span class="normal"> 711</span> <span class="normal"> 712</span> <span class="normal"> 713</span> <span class="normal"> 714</span> <span class="normal"> 715</span> <span class="normal"> 716</span> <span class="normal"> 717</span> <span class="normal"> 718</span> <span class="normal"> 719</span> <span class="normal"> 720</span> <span class="normal"> 721</span> <span class="normal"> 722</span> <span class="normal"> 723</span> <span class="normal"> 724</span> <span class="normal"> 725</span> <span class="normal"> 726</span> <span class="normal"> 727</span> <span class="normal"> 728</span> <span class="normal"> 729</span> <span class="normal"> 730</span> <span class="normal"> 731</span> <span class="normal"> 732</span> <span class="normal"> 733</span> <span class="normal"> 734</span> <span class="normal"> 735</span> <span class="normal"> 736</span> <span class="normal"> 737</span> <span class="normal"> 738</span> <span class="normal"> 739</span> <span class="normal"> 740</span> <span class="normal"> 741</span> <span class="normal"> 742</span> <span class="normal"> 743</span> <span class="normal"> 744</span> <span class="normal"> 745</span> <span class="normal"> 746</span> <span class="normal"> 747</span> <span class="normal"> 748</span> <span class="normal"> 749</span> <span class="normal"> 750</span> <span class="normal"> 751</span> <span class="normal"> 752</span> <span class="normal"> 753</span> <span class="normal"> 754</span> <span class="normal"> 755</span> <span class="normal"> 756</span> <span class="normal"> 757</span> <span class="normal"> 758</span> <span class="normal"> 759</span> <span class="normal"> 760</span> <span class="normal"> 761</span> <span class="normal"> 762</span> <span class="normal"> 763</span> <span class="normal"> 764</span> <span class="normal"> 765</span> <span class="normal"> 766</span> <span class="normal"> 767</span> <span class="normal"> 768</span> <span class="normal"> 769</span> <span class="normal"> 770</span> <span class="normal"> 771</span> <span class="normal"> 772</span> <span class="normal"> 773</span> <span class="normal"> 774</span> <span class="normal"> 775</span> <span class="normal"> 776</span> <span class="normal"> 777</span> <span class="normal"> 778</span> <span class="normal"> 779</span> <span class="normal"> 780</span> <span class="normal"> 781</span> <span class="normal"> 782</span> <span class="normal"> 783</span> <span class="normal"> 784</span> <span class="normal"> 785</span> <span class="normal"> 786</span> <span class="normal"> 787</span> <span class="normal"> 788</span> <span class="normal"> 789</span> <span class="normal"> 790</span> <span class="normal"> 791</span> <span class="normal"> 792</span> <span class="normal"> 793</span> <span class="normal"> 794</span> <span class="normal"> 795</span> <span class="normal"> 796</span> <span class="normal"> 797</span> <span class="normal"> 798</span> <span class="normal"> 799</span> <span class="normal"> 800</span> <span class="normal"> 801</span> <span class="normal"> 802</span> <span class="normal"> 803</span> <span class="normal"> 804</span> <span class="normal"> 805</span> <span class="normal"> 806</span> <span class="normal"> 807</span> <span class="normal"> 808</span> <span class="normal"> 809</span> <span class="normal"> 810</span> <span class="normal"> 811</span> <span class="normal"> 812</span> <span class="normal"> 813</span> <span class="normal"> 814</span> <span class="normal"> 815</span> <span class="normal"> 816</span> <span class="normal"> 817</span> <span class="normal"> 818</span> <span class="normal"> 819</span> <span class="normal"> 820</span> <span class="normal"> 821</span> <span class="normal"> 822</span> <span class="normal"> 823</span> <span class="normal"> 824</span> <span class="normal"> 825</span> <span class="normal"> 826</span> <span class="normal"> 827</span> <span class="normal"> 828</span> <span class="normal"> 829</span> <span class="normal"> 830</span> <span class="normal"> 831</span> <span class="normal"> 832</span> <span class="normal"> 833</span> <span class="normal"> 834</span> <span class="normal"> 835</span> <span class="normal"> 836</span> <span class="normal"> 837</span> <span class="normal"> 838</span> <span class="normal"> 839</span> <span class="normal"> 840</span> <span class="normal"> 841</span> <span class="normal"> 842</span> <span class="normal"> 843</span> <span class="normal"> 844</span> <span class="normal"> 845</span> <span class="normal"> 846</span> <span class="normal"> 847</span> <span class="normal"> 848</span> <span class="normal"> 849</span> <span class="normal"> 850</span> <span class="normal"> 851</span> <span class="normal"> 852</span> <span class="normal"> 853</span> <span class="normal"> 854</span> <span class="normal"> 855</span> <span class="normal"> 856</span> <span class="normal"> 857</span> <span class="normal"> 858</span> <span class="normal"> 859</span> <span class="normal"> 860</span> <span class="normal"> 861</span> <span class="normal"> 862</span> <span class="normal"> 863</span> <span class="normal"> 864</span> <span class="normal"> 865</span> <span class="normal"> 866</span> <span class="normal"> 867</span> <span class="normal"> 868</span> <span class="normal"> 869</span> <span class="normal"> 870</span> <span class="normal"> 871</span> <span class="normal"> 872</span> <span class="normal"> 873</span> <span class="normal"> 874</span> <span class="normal"> 875</span> <span class="normal"> 876</span> <span class="normal"> 877</span> <span class="normal"> 878</span> <span class="normal"> 879</span> <span class="normal"> 880</span> <span class="normal"> 881</span> <span class="normal"> 882</span> <span class="normal"> 883</span> <span class="normal"> 884</span> <span class="normal"> 885</span> <span class="normal"> 886</span> <span class="normal"> 887</span> <span class="normal"> 888</span> <span class="normal"> 889</span> <span class="normal"> 890</span> <span class="normal"> 891</span> <span class="normal"> 892</span> <span class="normal"> 893</span> <span class="normal"> 894</span> <span class="normal"> 895</span> <span class="normal"> 896</span> <span class="normal"> 897</span> <span class="normal"> 898</span> <span class="normal"> 899</span> <span class="normal"> 900</span> <span class="normal"> 901</span> <span class="normal"> 902</span> <span class="normal"> 903</span> <span class="normal"> 904</span> <span class="normal"> 905</span> <span class="normal"> 906</span> <span class="normal"> 907</span> <span class="normal"> 908</span> <span class="normal"> 909</span> <span class="normal"> 910</span> <span class="normal"> 911</span> <span class="normal"> 912</span> <span class="normal"> 913</span> <span class="normal"> 914</span> <span class="normal"> 915</span> <span class="normal"> 916</span> <span class="normal"> 917</span> <span class="normal"> 918</span> <span class="normal"> 919</span> <span class="normal"> 920</span> <span class="normal"> 921</span> <span class="normal"> 922</span> <span class="normal"> 923</span> <span class="normal"> 924</span> <span class="normal"> 925</span> <span class="normal"> 926</span> <span class="normal"> 927</span> <span class="normal"> 928</span> <span class="normal"> 929</span> <span class="normal"> 930</span> <span class="normal"> 931</span> <span class="normal"> 932</span> <span class="normal"> 933</span> <span class="normal"> 934</span> <span class="normal"> 935</span> <span class="normal"> 936</span> <span class="normal"> 937</span> <span class="normal"> 938</span> <span class="normal"> 939</span> <span class="normal"> 940</span> <span class="normal"> 941</span> <span class="normal"> 942</span> <span class="normal"> 943</span> <span class="normal"> 944</span> <span class="normal"> 945</span> <span class="normal"> 946</span> <span class="normal"> 947</span> <span class="normal"> 948</span> <span class="normal"> 949</span> <span class="normal"> 950</span> <span class="normal"> 951</span> <span class="normal"> 952</span> <span class="normal"> 953</span> <span class="normal"> 954</span> <span class="normal"> 955</span> <span class="normal"> 956</span> <span class="normal"> 957</span> <span class="normal"> 958</span> <span class="normal"> 959</span> <span class="normal"> 960</span> <span class="normal"> 961</span> <span class="normal"> 962</span> <span class="normal"> 963</span> <span class="normal"> 964</span> <span class="normal"> 965</span> <span class="normal"> 966</span> <span class="normal"> 967</span> <span class="normal"> 968</span> <span class="normal"> 969</span> <span class="normal"> 970</span> <span class="normal"> 971</span> <span class="normal"> 972</span> <span class="normal"> 973</span> <span class="normal"> 974</span> <span class="normal"> 975</span> <span class="normal"> 976</span> <span class="normal"> 977</span> <span class="normal"> 978</span> <span class="normal"> 979</span> <span class="normal"> 980</span> <span class="normal"> 981</span> <span class="normal"> 982</span> <span class="normal"> 983</span> <span class="normal"> 984</span> <span class="normal"> 985</span> <span class="normal"> 986</span> <span class="normal"> 987</span> <span class="normal"> 988</span> <span class="normal"> 989</span> <span class="normal"> 990</span> <span class="normal"> 991</span> <span class="normal"> 992</span> <span class="normal"> 993</span> <span class="normal"> 994</span> <span class="normal"> 995</span> <span class="normal"> 996</span> <span class="normal"> 997</span> <span class="normal"> 998</span> <span class="normal"> 999</span> <span class="normal">1000</span> <span class="normal">1001</span> <span class="normal">1002</span> <span class="normal">1003</span> <span class="normal">1004</span> <span class="normal">1005</span> <span class="normal">1006</span> <span class="normal">1007</span> <span class="normal">1008</span> <span class="normal">1009</span> <span class="normal">1010</span> <span class="normal">1011</span> <span class="normal">1012</span> <span class="normal">1013</span> <span class="normal">1014</span> <span class="normal">1015</span> <span class="normal">1016</span> <span class="normal">1017</span> <span class="normal">1018</span> <span class="normal">1019</span> <span class="normal">1020</span> <span class="normal">1021</span> <span class="normal">1022</span> <span class="normal">1023</span> <span class="normal">1024</span> <span class="normal">1025</span> <span class="normal">1026</span> <span class="normal">1027</span> <span class="normal">1028</span> <span class="normal">1029</span> <span class="normal">1030</span> <span class="normal">1031</span> <span class="normal">1032</span> <span class="normal">1033</span> <span class="normal">1034</span> <span class="normal">1035</span> <span class="normal">1036</span> <span class="normal">1037</span> <span class="normal">1038</span> <span class="normal">1039</span> <span class="normal">1040</span> <span class="normal">1041</span> <span class="normal">1042</span> <span class="normal">1043</span> <span class="normal">1044</span> <span class="normal">1045</span> <span class="normal">1046</span> <span class="normal">1047</span> <span class="normal">1048</span> <span class="normal">1049</span> <span class="normal">1050</span> <span class="normal">1051</span> <span class="normal">1052</span> <span class="normal">1053</span> <span class="normal">1054</span> <span class="normal">1055</span> <span class="normal">1056</span> <span class="normal">1057</span> <span class="normal">1058</span> <span class="normal">1059</span> <span class="normal">1060</span> <span class="normal">1061</span> <span class="normal">1062</span> <span class="normal">1063</span> <span class="normal">1064</span> <span class="normal">1065</span> <span class="normal">1066</span> <span class="normal">1067</span> <span class="normal">1068</span> <span class="normal">1069</span> <span class="normal">1070</span> <span class="normal">1071</span> <span class="normal">1072</span> <span class="normal">1073</span> <span class="normal">1074</span> <span class="normal">1075</span> <span class="normal">1076</span> <span class="normal">1077</span> <span class="normal">1078</span> <span class="normal">1079</span> <span class="normal">1080</span> <span class="normal">1081</span> <span class="normal">1082</span> <span class="normal">1083</span> <span class="normal">1084</span> <span class="normal">1085</span> <span class="normal">1086</span> <span class="normal">1087</span> <span class="normal">1088</span> <span class="normal">1089</span> <span class="normal">1090</span> <span class="normal">1091</span> <span class="normal">1092</span> <span class="normal">1093</span> <span class="normal">1094</span> <span class="normal">1095</span> <span class="normal">1096</span> <span class="normal">1097</span> <span class="normal">1098</span> <span class="normal">1099</span> <span class="normal">1100</span> <span class="normal">1101</span> <span class="normal">1102</span> <span class="normal">1103</span> <span class="normal">1104</span> <span class="normal">1105</span> <span class="normal">1106</span> <span class="normal">1107</span> <span class="normal">1108</span> <span class="normal">1109</span> <span class="normal">1110</span> <span class="normal">1111</span> <span class="normal">1112</span> <span class="normal">1113</span> <span class="normal">1114</span> <span class="normal">1115</span> <span class="normal">1116</span> <span class="normal">1117</span> <span class="normal">1118</span> <span class="normal">1119</span> <span class="normal">1120</span> <span class="normal">1121</span> <span class="normal">1122</span> <span class="normal">1123</span> <span class="normal">1124</span> <span class="normal">1125</span> <span class="normal">1126</span> <span class="normal">1127</span> <span class="normal">1128</span> <span class="normal">1129</span> <span class="normal">1130</span> <span class="normal">1131</span> <span class="normal">1132</span> <span class="normal">1133</span> <span class="normal">1134</span> <span class="normal">1135</span> <span class="normal">1136</span> <span class="normal">1137</span> <span class="normal">1138</span> <span class="normal">1139</span> <span class="normal">1140</span> <span class="normal">1141</span> <span class="normal">1142</span> <span class="normal">1143</span> <span class="normal">1144</span> <span class="normal">1145</span> <span class="normal">1146</span> <span class="normal">1147</span> <span class="normal">1148</span> <span class="normal">1149</span> <span class="normal">1150</span> <span class="normal">1151</span> <span class="normal">1152</span> <span class="normal">1153</span> <span class="normal">1154</span> <span class="normal">1155</span> <span class="normal">1156</span> <span class="normal">1157</span> <span class="normal">1158</span> <span class="normal">1159</span> <span class="normal">1160</span> <span class="normal">1161</span> <span class="normal">1162</span> <span class="normal">1163</span> <span class="normal">1164</span> <span class="normal">1165</span> <span class="normal">1166</span> <span class="normal">1167</span> <span class="normal">1168</span> <span class="normal">1169</span> <span class="normal">1170</span> <span class="normal">1171</span> <span class="normal">1172</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Neo4jPropertyGraphStore</span><span class="p">(</span><span class="n">PropertyGraphStore</span><span class="p">):</span> <span class="w"> </span><span class="sa">r</span><span class="sd">"""</span> <span class="sd"> Neo4j Property Graph Store.</span> <span class="sd"> This class implements a Neo4j property graph store.</span> <span class="sd"> If you are using local Neo4j instead of aura, here's a helpful</span> <span class="sd"> command for launching the docker container:</span> <span class="sd"> ```bash</span> <span class="sd"> docker run \</span> <span class="sd"> -p 7474:7474 -p 7687:7687 \</span> <span class="sd"> -v $PWD/data:/data -v $PWD/plugins:/plugins \</span> <span class="sd"> --name neo4j-apoc \</span> <span class="sd"> -e NEO4J_apoc_export_file_enabled=true \</span> <span class="sd"> -e NEO4J_apoc_import_file_enabled=true \</span> <span class="sd"> -e NEO4J_apoc_import_file_use__neo4j__config=true \</span> <span class="sd"> -e NEO4JLABS_PLUGINS=\\[\"apoc\"\\] \</span> <span class="sd"> neo4j:latest</span> <span class="sd"> ```</span> <span class="sd"> Args:</span> <span class="sd"> username (str): The username for the Neo4j database.</span> <span class="sd"> password (str): The password for the Neo4j database.</span> <span class="sd"> url (str): The URL for the Neo4j database.</span> <span class="sd"> database (Optional[str]): The name of the database to connect to. Defaults to "neo4j".</span> <span class="sd"> timeout (Optional[float]): The timeout for transactions in seconds.</span> <span class="sd"> Useful for terminating long-running queries.</span> <span class="sd"> By default, there is no timeout set.</span> <span class="sd"> Examples:</span> <span class="sd"> `pip install llama-index-graph-stores-neo4j`</span> <span class="sd"> ```python</span> <span class="sd"> from llama_index.core.indices.property_graph import PropertyGraphIndex</span> <span class="sd"> from llama_index.graph_stores.neo4j import Neo4jPropertyGraphStore</span> <span class="sd"> # Create a Neo4jPropertyGraphStore instance</span> <span class="sd"> graph_store = Neo4jPropertyGraphStore(</span> <span class="sd"> username="neo4j",</span> <span class="sd"> password="neo4j",</span> <span class="sd"> url="bolt://localhost:7687",</span> <span class="sd"> database="neo4j"</span> <span class="sd"> )</span> <span class="sd"> # create the index</span> <span class="sd"> index = PropertyGraphIndex.from_documents(</span> <span class="sd"> documents,</span> <span class="sd"> property_graph_store=graph_store,</span> <span class="sd"> )</span> <span class="sd"> # Close the neo4j connection explicitly.</span> <span class="sd"> graph_store.close()</span> <span class="sd"> ```</span> <span class="sd"> """</span> <span class="n">supports_structured_queries</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> <span class="n">supports_vector_queries</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> <span class="n">text_to_cypher_template</span><span class="p">:</span> <span class="n">PromptTemplate</span> <span class="o">=</span> <span class="n">DEFAULT_CYPHER_TEMPALTE</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">username</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">database</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"neo4j"</span><span class="p">,</span> <span class="n">refresh_schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">sanitize_query_output</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">enhanced_schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">create_indexes</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">neo4j_kwargs</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">sanitize_query_output</span> <span class="o">=</span> <span class="n">sanitize_query_output</span> <span class="bp">self</span><span class="o">.</span><span class="n">enhanced_schema</span> <span class="o">=</span> <span class="n">enhanced_schema</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span> <span class="o">=</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">GraphDatabase</span><span class="o">.</span><span class="n">driver</span><span class="p">(</span> <span class="n">url</span><span class="p">,</span> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="p">),</span> <span class="n">notifications_min_severity</span><span class="o">=</span><span class="s2">"OFF"</span><span class="p">,</span> <span class="o">**</span><span class="n">neo4j_kwargs</span><span class="p">,</span> <span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">_async_driver</span> <span class="o">=</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">AsyncGraphDatabase</span><span class="o">.</span><span class="n">driver</span><span class="p">(</span> <span class="n">url</span><span class="p">,</span> <span class="n">auth</span><span class="o">=</span><span class="p">(</span><span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="p">),</span> <span class="n">notifications_min_severity</span><span class="o">=</span><span class="s2">"OFF"</span><span class="p">,</span> <span class="o">**</span><span class="n">neo4j_kwargs</span><span class="p">,</span> <span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">_database</span> <span class="o">=</span> <span class="n">database</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">=</span> <span class="n">timeout</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">if</span> <span class="n">refresh_schema</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">refresh_schema</span><span class="p">()</span> <span class="c1"># Verify version to check if we can use vector index</span> <span class="bp">self</span><span class="o">.</span><span class="n">verify_version</span><span class="p">()</span> <span class="c1"># Create index for faster imports and retrieval</span> <span class="k">if</span> <span class="n">create_indexes</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""CREATE CONSTRAINT IF NOT EXISTS FOR (n:`</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">`)</span> <span class="s2"> REQUIRE n.id IS UNIQUE;"""</span> <span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""CREATE CONSTRAINT IF NOT EXISTS FOR (n:`</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">`)</span> <span class="s2"> REQUIRE n.id IS UNIQUE;"""</span> <span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_supports_vector_index</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"CREATE VECTOR INDEX </span><span class="si">{</span><span class="n">VECTOR_INDEX_NAME</span><span class="si">}</span><span class="s2"> IF NOT EXISTS "</span> <span class="s2">"FOR (m:__Entity__) ON m.embedding"</span> <span class="p">)</span> <span class="nd">@property</span> <span class="k">def</span> <span class="nf">client</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="k">def</span> <span class="nf">refresh_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Refresh the schema."""</span> <span class="n">node_query_results</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="n">node_properties_query</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span> <span class="s2">"EXCLUDED_LABELS"</span><span class="p">:</span> <span class="p">[</span> <span class="o">*</span><span class="n">EXCLUDED_LABELS</span><span class="p">,</span> <span class="n">BASE_ENTITY_LABEL</span><span class="p">,</span> <span class="n">BASE_NODE_LABEL</span><span class="p">,</span> <span class="p">]</span> <span class="p">},</span> <span class="p">)</span> <span class="n">node_properties</span> <span class="o">=</span> <span class="p">(</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">node_query_results</span><span class="p">]</span> <span class="k">if</span> <span class="n">node_query_results</span> <span class="k">else</span> <span class="p">[]</span> <span class="p">)</span> <span class="n">rels_query_result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="n">rel_properties_query</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"EXCLUDED_LABELS"</span><span class="p">:</span> <span class="n">EXCLUDED_RELS</span><span class="p">}</span> <span class="p">)</span> <span class="n">rel_properties</span> <span class="o">=</span> <span class="p">(</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">rels_query_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">rels_query_result</span> <span class="k">else</span> <span class="p">[]</span> <span class="p">)</span> <span class="n">rel_objs_query_result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="n">rel_query</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span> <span class="s2">"EXCLUDED_LABELS"</span><span class="p">:</span> <span class="p">[</span> <span class="o">*</span><span class="n">EXCLUDED_LABELS</span><span class="p">,</span> <span class="n">BASE_ENTITY_LABEL</span><span class="p">,</span> <span class="n">BASE_NODE_LABEL</span><span class="p">,</span> <span class="p">]</span> <span class="p">},</span> <span class="p">)</span> <span class="n">relationships</span> <span class="o">=</span> <span class="p">(</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">rel_objs_query_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">rel_objs_query_result</span> <span class="k">else</span> <span class="p">[]</span> <span class="p">)</span> <span class="c1"># Get constraints & indexes</span> <span class="k">try</span><span class="p">:</span> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="s2">"SHOW CONSTRAINTS"</span><span class="p">)</span> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="s2">"CALL apoc.schema.nodes() YIELD label, properties, type, size, "</span> <span class="s2">"valuesSelectivity WHERE type = 'RANGE' RETURN *, "</span> <span class="s2">"size * valuesSelectivity as distinctValues"</span> <span class="p">)</span> <span class="k">except</span> <span class="p">(</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">ClientError</span> <span class="p">):</span> <span class="c1"># Read-only user might not have access to schema information</span> <span class="n">constraint</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">index</span> <span class="o">=</span> <span class="p">[]</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"node_props"</span><span class="p">:</span> <span class="p">{</span><span class="n">el</span><span class="p">[</span><span class="s2">"labels"</span><span class="p">]:</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">node_properties</span><span class="p">},</span> <span class="s2">"rel_props"</span><span class="p">:</span> <span class="p">{</span><span class="n">el</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]:</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">rel_properties</span><span class="p">},</span> <span class="s2">"relationships"</span><span class="p">:</span> <span class="n">relationships</span><span class="p">,</span> <span class="s2">"metadata"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"constraint"</span><span class="p">:</span> <span class="n">constraint</span><span class="p">,</span> <span class="s2">"index"</span><span class="p">:</span> <span class="n">index</span><span class="p">},</span> <span class="p">}</span> <span class="n">schema_counts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="s2">"CALL apoc.meta.subGraph(</span><span class="si">{}</span><span class="s2">) YIELD nodes, relationships "</span> <span class="s2">"RETURN nodes, [rel in relationships | {name:apoc.any.property"</span> <span class="s2">"(rel, 'type'), count: apoc.any.property(rel, 'count')}]"</span> <span class="s2">" AS relationships"</span> <span class="p">)</span> <span class="c1"># Update node info</span> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">schema_counts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"nodes"</span><span class="p">,</span> <span class="p">[]):</span> <span class="c1"># Skip bloom labels</span> <span class="k">if</span> <span class="n">node</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">EXCLUDED_LABELS</span><span class="p">:</span> <span class="k">continue</span> <span class="n">node_props</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span><span class="p">[</span><span class="s2">"node_props"</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="p">[</span><span class="s2">"name"</span><span class="p">])</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">node_props</span><span class="p">:</span> <span class="c1"># The node has no properties</span> <span class="k">continue</span> <span class="n">enhanced_cypher</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_enhanced_schema_cypher</span><span class="p">(</span> <span class="n">node</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">node_props</span><span class="p">,</span> <span class="n">node</span><span class="p">[</span><span class="s2">"count"</span><span class="p">]</span> <span class="o"><</span> <span class="n">EXHAUSTIVE_SEARCH_LIMIT</span> <span class="p">)</span> <span class="n">enhanced_info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="n">enhanced_cypher</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">node_props</span><span class="p">:</span> <span class="c1"># Map to custom types</span> <span class="c1"># Text</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"STRING"</span> <span class="ow">and</span> <span class="nb">any</span><span class="p">(</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">>=</span> <span class="n">LONG_TEXT_THRESHOLD</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]][</span><span class="s2">"values"</span><span class="p">]</span> <span class="p">):</span> <span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]][</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"TEXT"</span> <span class="c1"># Embedding</span> <span class="k">if</span> <span class="p">(</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"LIST"</span> <span class="ow">and</span> <span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]][</span><span class="s2">"max_size"</span><span class="p">]</span> <span class="o">></span> <span class="n">LIST_LIMIT</span> <span class="p">):</span> <span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]][</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"EMBEDDING"</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">enhanced_info</span><span class="p">:</span> <span class="n">prop</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]])</span> <span class="c1"># Update rel info</span> <span class="k">for</span> <span class="n">rel</span> <span class="ow">in</span> <span class="n">schema_counts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"relationships"</span><span class="p">,</span> <span class="p">[]):</span> <span class="c1"># Skip bloom labels</span> <span class="k">if</span> <span class="n">rel</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">EXCLUDED_RELS</span><span class="p">:</span> <span class="k">continue</span> <span class="n">rel_props</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span><span class="p">[</span><span class="s2">"rel_props"</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">rel</span><span class="p">[</span><span class="s2">"name"</span><span class="p">])</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">rel_props</span><span class="p">:</span> <span class="c1"># The rel has no properties</span> <span class="k">continue</span> <span class="n">enhanced_cypher</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_enhanced_schema_cypher</span><span class="p">(</span> <span class="n">rel</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">rel_props</span><span class="p">,</span> <span class="n">rel</span><span class="p">[</span><span class="s2">"count"</span><span class="p">]</span> <span class="o"><</span> <span class="n">EXHAUSTIVE_SEARCH_LIMIT</span><span class="p">,</span> <span class="n">is_relationship</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="p">)</span> <span class="k">try</span><span class="p">:</span> <span class="n">enhanced_info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="n">enhanced_cypher</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">rel_props</span><span class="p">:</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">enhanced_info</span><span class="p">:</span> <span class="n">prop</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]])</span> <span class="k">except</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">ClientError</span><span class="p">:</span> <span class="c1"># Sometimes the types are not consistent in the db</span> <span class="k">pass</span> <span class="k">def</span> <span class="nf">upsert_nodes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nodes</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">LabelledNode</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># Lists to hold separated types</span> <span class="n">entity_dicts</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">chunk_dicts</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># Sort by type</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">nodes</span><span class="p">:</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">EntityNode</span><span class="p">):</span> <span class="n">entity_dicts</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="o">**</span><span class="n">item</span><span class="o">.</span><span class="n">dict</span><span class="p">(),</span> <span class="s2">"id"</span><span class="p">:</span> <span class="n">item</span><span class="o">.</span><span class="n">id</span><span class="p">})</span> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">ChunkNode</span><span class="p">):</span> <span class="n">chunk_dicts</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="o">**</span><span class="n">item</span><span class="o">.</span><span class="n">dict</span><span class="p">(),</span> <span class="s2">"id"</span><span class="p">:</span> <span class="n">item</span><span class="o">.</span><span class="n">id</span><span class="p">})</span> <span class="k">else</span><span class="p">:</span> <span class="c1"># Log that we do not support these types of nodes</span> <span class="c1"># Or raise an error?</span> <span class="k">pass</span> <span class="k">if</span> <span class="n">chunk_dicts</span><span class="p">:</span> <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">chunk_dicts</span><span class="p">),</span> <span class="n">CHUNK_SIZE</span><span class="p">):</span> <span class="n">chunked_params</span> <span class="o">=</span> <span class="n">chunk_dicts</span><span class="p">[</span><span class="n">index</span> <span class="p">:</span> <span class="n">index</span> <span class="o">+</span> <span class="n">CHUNK_SIZE</span><span class="p">]</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""</span> <span class="s2"> UNWIND $data AS row</span> <span class="s2"> MERGE (c:</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="s2">id: row.id</span><span class="se">}}</span><span class="s2">)</span> <span class="s2"> SET c.text = row.text, c:Chunk</span> <span class="s2"> WITH c, row</span> <span class="s2"> SET c += row.properties</span> <span class="s2"> WITH c, row.embedding AS embedding</span> <span class="s2"> WHERE embedding IS NOT NULL</span> <span class="s2"> CALL db.create.setNodeVectorProperty(c, 'embedding', embedding)</span> <span class="s2"> RETURN count(*)</span> <span class="s2"> """</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"data"</span><span class="p">:</span> <span class="n">chunked_params</span><span class="p">},</span> <span class="p">)</span> <span class="k">if</span> <span class="n">entity_dicts</span><span class="p">:</span> <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">entity_dicts</span><span class="p">),</span> <span class="n">CHUNK_SIZE</span><span class="p">):</span> <span class="n">chunked_params</span> <span class="o">=</span> <span class="n">entity_dicts</span><span class="p">[</span><span class="n">index</span> <span class="p">:</span> <span class="n">index</span> <span class="o">+</span> <span class="n">CHUNK_SIZE</span><span class="p">]</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""</span> <span class="s2"> UNWIND $data AS row</span> <span class="s2"> MERGE (e:</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="s2">id: row.id</span><span class="se">}}</span><span class="s2">)</span> <span class="s2"> SET e += apoc.map.clean(row.properties, [], [])</span> <span class="s2"> SET e.name = row.name, e:`</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">`</span> <span class="s2"> WITH e, row</span> <span class="s2"> CALL apoc.create.addLabels(e, [row.label])</span> <span class="s2"> YIELD node</span> <span class="s2"> WITH e, row</span> <span class="s2"> CALL (e, row) </span><span class="se">{{</span> <span class="s2"> WITH e, row</span> <span class="s2"> WHERE row.embedding IS NOT NULL</span> <span class="s2"> CALL db.create.setNodeVectorProperty(e, 'embedding', row.embedding)</span> <span class="s2"> RETURN count(*) AS count</span> <span class="s2"> </span><span class="se">}}</span> <span class="s2"> WITH e, row WHERE row.properties.triplet_source_id IS NOT NULL</span> <span class="s2"> MERGE (c:</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="s2">id: row.properties.triplet_source_id</span><span class="se">}}</span><span class="s2">)</span> <span class="s2"> MERGE (e)<-[:MENTIONS]-(c)</span> <span class="s2"> """</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"data"</span><span class="p">:</span> <span class="n">chunked_params</span><span class="p">},</span> <span class="p">)</span> <span class="k">def</span> <span class="nf">upsert_relations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">relations</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Relation</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Add relations."""</span> <span class="n">params</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span><span class="o">.</span><span class="n">dict</span><span class="p">()</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">relations</span><span class="p">]</span> <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">params</span><span class="p">),</span> <span class="n">CHUNK_SIZE</span><span class="p">):</span> <span class="n">chunked_params</span> <span class="o">=</span> <span class="n">params</span><span class="p">[</span><span class="n">index</span> <span class="p">:</span> <span class="n">index</span> <span class="o">+</span> <span class="n">CHUNK_SIZE</span><span class="p">]</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""</span> <span class="s2"> UNWIND $data AS row</span> <span class="s2"> MERGE (source: </span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="s2">id: row.source_id</span><span class="se">}}</span><span class="s2">)</span> <span class="s2"> ON CREATE SET source:Chunk</span> <span class="s2"> MERGE (target: </span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="s2">id: row.target_id</span><span class="se">}}</span><span class="s2">)</span> <span class="s2"> ON CREATE SET target:Chunk</span> <span class="s2"> WITH source, target, row</span> <span class="s2"> CALL apoc.merge.relationship(source, row.label, </span><span class="se">{{}}</span><span class="s2">, row.properties, target) YIELD rel</span> <span class="s2"> RETURN count(*)</span> <span class="s2"> """</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"data"</span><span class="p">:</span> <span class="n">chunked_params</span><span class="p">},</span> <span class="p">)</span> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">ids</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">LabelledNode</span><span class="p">]:</span> <span class="w"> </span><span class="sd">"""Get nodes."""</span> <span class="n">cypher_statement</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"MATCH (e: </span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">) "</span> <span class="n">params</span> <span class="o">=</span> <span class="p">{}</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="s2">"WHERE e.id IS NOT NULL "</span> <span class="k">if</span> <span class="n">ids</span><span class="p">:</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="s2">"AND e.id in $ids "</span> <span class="n">params</span><span class="p">[</span><span class="s2">"ids"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ids</span> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> <span class="n">prop_list</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">prop</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">properties</span><span class="p">):</span> <span class="n">prop_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"e.`</span><span class="si">{</span><span class="n">prop</span><span class="si">}</span><span class="s2">` = $property_</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="n">params</span><span class="p">[</span><span class="sa">f</span><span class="s2">"property_</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> <span class="o">=</span> <span class="n">properties</span><span class="p">[</span><span class="n">prop</span><span class="p">]</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="s2">" AND "</span> <span class="o">+</span> <span class="s2">" AND "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prop_list</span><span class="p">)</span> <span class="n">return_statement</span> <span class="o">=</span> <span class="s2">"""</span> <span class="s2"> WITH e</span> <span class="s2"> RETURN e.id AS name,</span> <span class="s2"> [l in labels(e) WHERE l <> '__Entity__' | l][0] AS type,</span> <span class="s2"> e{.* , embedding: Null, id: Null} AS properties</span> <span class="s2"> """</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="n">return_statement</span> <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="n">cypher_statement</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="n">params</span><span class="p">)</span> <span class="n">response</span> <span class="o">=</span> <span class="n">response</span> <span class="k">if</span> <span class="n">response</span> <span class="k">else</span> <span class="p">[]</span> <span class="n">nodes</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span> <span class="c1"># text indicates a chunk node</span> <span class="c1"># none on the type indicates an implicit node, likely a chunk node</span> <span class="k">if</span> <span class="s2">"text"</span> <span class="ow">in</span> <span class="n">record</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span> <span class="ow">or</span> <span class="n">record</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="n">text</span> <span class="o">=</span> <span class="n">record</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"text"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span> <span class="n">nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="n">ChunkNode</span><span class="p">(</span> <span class="n">id_</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">text</span><span class="o">=</span><span class="n">text</span><span class="p">,</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="n">EntityNode</span><span class="p">(</span> <span class="n">name</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="p">)</span> <span class="k">return</span> <span class="n">nodes</span> <span class="k">def</span> <span class="nf">get_triplets</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">entity_names</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">relation_names</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">ids</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">Triplet</span><span class="p">]:</span> <span class="c1"># TODO: handle ids of chunk nodes</span> <span class="n">cypher_statement</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"MATCH (e:`</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">`) "</span> <span class="n">params</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">if</span> <span class="n">entity_names</span> <span class="ow">or</span> <span class="n">properties</span> <span class="ow">or</span> <span class="n">ids</span><span class="p">:</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="s2">"WHERE "</span> <span class="k">if</span> <span class="n">entity_names</span><span class="p">:</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="s2">"e.name in $entity_names "</span> <span class="n">params</span><span class="p">[</span><span class="s2">"entity_names"</span><span class="p">]</span> <span class="o">=</span> <span class="n">entity_names</span> <span class="k">if</span> <span class="n">ids</span><span class="p">:</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="s2">"e.id in $ids "</span> <span class="n">params</span><span class="p">[</span><span class="s2">"ids"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ids</span> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> <span class="n">prop_list</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">prop</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">properties</span><span class="p">):</span> <span class="n">prop_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"e.`</span><span class="si">{</span><span class="n">prop</span><span class="si">}</span><span class="s2">` = $property_</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="n">params</span><span class="p">[</span><span class="sa">f</span><span class="s2">"property_</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> <span class="o">=</span> <span class="n">properties</span><span class="p">[</span><span class="n">prop</span><span class="p">]</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="s2">" AND "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prop_list</span><span class="p">)</span> <span class="n">return_statement</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span> <span class="s2"> WITH e</span> <span class="s2"> CALL (e) </span><span class="se">{{</span> <span class="s2"> WITH e</span> <span class="s2"> MATCH (e)-[r</span><span class="si">{</span><span class="s1">':`'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'`|`'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">relation_names</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'`'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">relation_names</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">]->(t:`</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">`)</span> <span class="s2"> RETURN e.name AS source_id, [l in labels(e) WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS source_type,</span> <span class="s2"> e</span><span class="se">{{</span><span class="s2">.* , embedding: Null, name: Null</span><span class="se">}}</span><span class="s2"> AS source_properties,</span> <span class="s2"> type(r) AS type,</span> <span class="s2"> r</span><span class="se">{{</span><span class="s2">.*</span><span class="se">}}</span><span class="s2"> AS rel_properties,</span> <span class="s2"> t.name AS target_id, [l in labels(t) WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS target_type,</span> <span class="s2"> t</span><span class="se">{{</span><span class="s2">.* , embedding: Null, name: Null</span><span class="se">}}</span><span class="s2"> AS target_properties</span> <span class="s2"> UNION ALL</span> <span class="s2"> WITH e</span> <span class="s2"> MATCH (e)<-[r</span><span class="si">{</span><span class="s1">':`'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'`|`'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">relation_names</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'`'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">relation_names</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">]-(t:`</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">`)</span> <span class="s2"> RETURN t.name AS source_id, [l in labels(t) WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS source_type,</span> <span class="s2"> t</span><span class="se">{{</span><span class="s2">.* , embedding: Null, name: Null</span><span class="se">}}</span><span class="s2"> AS source_properties,</span> <span class="s2"> type(r) AS type,</span> <span class="s2"> r</span><span class="se">{{</span><span class="s2">.*</span><span class="se">}}</span><span class="s2"> AS rel_properties,</span> <span class="s2"> e.name AS target_id, [l in labels(e) WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS target_type,</span> <span class="s2"> e</span><span class="se">{{</span><span class="s2">.* , embedding: Null, name: Null</span><span class="se">}}</span><span class="s2"> AS target_properties</span> <span class="s2"> </span><span class="se">}}</span> <span class="s2"> RETURN source_id, source_type, type, rel_properties, target_id, target_type, source_properties, target_properties"""</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="n">return_statement</span> <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="n">cypher_statement</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="n">params</span><span class="p">)</span> <span class="n">data</span> <span class="o">=</span> <span class="n">data</span> <span class="k">if</span> <span class="n">data</span> <span class="k">else</span> <span class="p">[]</span> <span class="n">triples</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span> <span class="n">source</span> <span class="o">=</span> <span class="n">EntityNode</span><span class="p">(</span> <span class="n">name</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_id"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="n">target</span> <span class="o">=</span> <span class="n">EntityNode</span><span class="p">(</span> <span class="n">name</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_id"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="n">rel</span> <span class="o">=</span> <span class="n">Relation</span><span class="p">(</span> <span class="n">source_id</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_id"</span><span class="p">],</span> <span class="n">target_id</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_id"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"rel_properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="n">triples</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">source</span><span class="p">,</span> <span class="n">rel</span><span class="p">,</span> <span class="n">target</span><span class="p">])</span> <span class="k">return</span> <span class="n">triples</span> <span class="k">def</span> <span class="nf">get_rel_map</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">graph_nodes</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">LabelledNode</span><span class="p">],</span> <span class="n">depth</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">30</span><span class="p">,</span> <span class="n">ignore_rels</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">Triplet</span><span class="p">]:</span> <span class="w"> </span><span class="sd">"""Get depth-aware rel map."""</span> <span class="n">triples</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">node</span><span class="o">.</span><span class="n">id</span> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">graph_nodes</span><span class="p">]</span> <span class="c1"># Needs some optimization</span> <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""</span> <span class="s2"> WITH $ids AS id_list</span> <span class="s2"> UNWIND range(0, size(id_list) - 1) AS idx</span> <span class="s2"> MATCH (e:`</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">`)</span> <span class="s2"> WHERE e.id = id_list[idx]</span> <span class="s2"> MATCH p=(e)-[r*1..</span><span class="si">{</span><span class="n">depth</span><span class="si">}</span><span class="s2">]-(other)</span> <span class="s2"> WHERE ALL(rel in relationships(p) WHERE type(rel) <> 'MENTIONS')</span> <span class="s2"> UNWIND relationships(p) AS rel</span> <span class="s2"> WITH distinct rel, idx</span> <span class="s2"> WITH startNode(rel) AS source,</span> <span class="s2"> type(rel) AS type,</span> <span class="s2"> rel</span><span class="se">{{</span><span class="s2">.*</span><span class="se">}}</span><span class="s2"> AS rel_properties,</span> <span class="s2"> endNode(rel) AS endNode,</span> <span class="s2"> idx</span> <span class="s2"> LIMIT toInteger($limit)</span> <span class="s2"> RETURN source.id AS source_id, [l in labels(source)</span> <span class="s2"> WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS source_type,</span> <span class="s2"> source</span><span class="se">{{</span><span class="s2">.* , embedding: Null, id: Null</span><span class="se">}}</span><span class="s2"> AS source_properties,</span> <span class="s2"> type,</span> <span class="s2"> rel_properties,</span> <span class="s2"> endNode.id AS target_id, [l in labels(endNode)</span> <span class="s2"> WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS target_type,</span> <span class="s2"> endNode</span><span class="se">{{</span><span class="s2">.* , embedding: Null, id: Null</span><span class="se">}}</span><span class="s2"> AS target_properties,</span> <span class="s2"> idx</span> <span class="s2"> ORDER BY idx</span> <span class="s2"> LIMIT toInteger($limit)</span> <span class="s2"> """</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"ids"</span><span class="p">:</span> <span class="n">ids</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="n">limit</span><span class="p">},</span> <span class="p">)</span> <span class="n">response</span> <span class="o">=</span> <span class="n">response</span> <span class="k">if</span> <span class="n">response</span> <span class="k">else</span> <span class="p">[]</span> <span class="n">ignore_rels</span> <span class="o">=</span> <span class="n">ignore_rels</span> <span class="ow">or</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span> <span class="k">if</span> <span class="n">record</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">ignore_rels</span><span class="p">:</span> <span class="k">continue</span> <span class="n">source</span> <span class="o">=</span> <span class="n">EntityNode</span><span class="p">(</span> <span class="n">name</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_id"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="n">target</span> <span class="o">=</span> <span class="n">EntityNode</span><span class="p">(</span> <span class="n">name</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_id"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="n">rel</span> <span class="o">=</span> <span class="n">Relation</span><span class="p">(</span> <span class="n">source_id</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_id"</span><span class="p">],</span> <span class="n">target_id</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_id"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"rel_properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="n">triples</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">source</span><span class="p">,</span> <span class="n">rel</span><span class="p">,</span> <span class="n">target</span><span class="p">])</span> <span class="k">return</span> <span class="n">triples</span> <span class="k">def</span> <span class="nf">structured_query</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">param_map</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span> <span class="n">param_map</span> <span class="o">=</span> <span class="n">param_map</span> <span class="ow">or</span> <span class="p">{}</span> <span class="k">try</span><span class="p">:</span> <span class="n">data</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">execute_query</span><span class="p">(</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">Query</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">query</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">),</span> <span class="n">database_</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">,</span> <span class="n">parameters_</span><span class="o">=</span><span class="n">param_map</span><span class="p">,</span> <span class="p">)</span> <span class="n">full_result</span> <span class="o">=</span> <span class="p">[</span><span class="n">d</span><span class="o">.</span><span class="n">data</span><span class="p">()</span> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">data</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sanitize_query_output</span><span class="p">:</span> <span class="k">return</span> <span class="p">[</span><span class="n">value_sanitize</span><span class="p">(</span><span class="n">el</span><span class="p">)</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">full_result</span><span class="p">]</span> <span class="k">return</span> <span class="n">full_result</span> <span class="k">except</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">Neo4jError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span> <span class="p">(</span> <span class="p">(</span> <span class="c1"># isCallInTransactionError</span> <span class="n">e</span><span class="o">.</span><span class="n">code</span> <span class="o">==</span> <span class="s2">"Neo.DatabaseError.Statement.ExecutionFailed"</span> <span class="ow">or</span> <span class="n">e</span><span class="o">.</span><span class="n">code</span> <span class="o">==</span> <span class="s2">"Neo.DatabaseError.Transaction.TransactionStartFailed"</span> <span class="p">)</span> <span class="ow">and</span> <span class="s2">"in an implicit transaction"</span> <span class="ow">in</span> <span class="n">e</span><span class="o">.</span><span class="n">message</span> <span class="p">)</span> <span class="ow">or</span> <span class="p">(</span> <span class="c1"># isPeriodicCommitError</span> <span class="n">e</span><span class="o">.</span><span class="n">code</span> <span class="o">==</span> <span class="s2">"Neo.ClientError.Statement.SemanticError"</span> <span class="ow">and</span> <span class="p">(</span> <span class="s2">"in an open transaction is not possible"</span> <span class="ow">in</span> <span class="n">e</span><span class="o">.</span><span class="n">message</span> <span class="ow">or</span> <span class="s2">"tried to execute in an explicit transaction"</span> <span class="ow">in</span> <span class="n">e</span><span class="o">.</span><span class="n">message</span> <span class="p">)</span> <span class="p">)</span> <span class="p">):</span> <span class="k">raise</span> <span class="c1"># Fallback to allow implicit transactions</span> <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">session</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_database</span><span class="p">)</span> <span class="k">as</span> <span class="n">session</span><span class="p">:</span> <span class="n">data</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">Query</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">query</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">),</span> <span class="n">param_map</span> <span class="p">)</span> <span class="n">full_result</span> <span class="o">=</span> <span class="p">[</span><span class="n">d</span><span class="o">.</span><span class="n">data</span><span class="p">()</span> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">data</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sanitize_query_output</span><span class="p">:</span> <span class="k">return</span> <span class="p">[</span><span class="n">value_sanitize</span><span class="p">(</span><span class="n">el</span><span class="p">)</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">full_result</span><span class="p">]</span> <span class="k">return</span> <span class="n">full_result</span> <span class="k">def</span> <span class="nf">vector_query</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">:</span> <span class="n">VectorStoreQuery</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">Any</span> <span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">LabelledNode</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]]:</span> <span class="w"> </span><span class="sd">"""Query the graph store with a vector store query."""</span> <span class="n">conditions</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">filter_params</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">if</span> <span class="n">query</span><span class="o">.</span><span class="n">filters</span><span class="p">:</span> <span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="nb">filter</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">query</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">filters</span><span class="p">):</span> <span class="n">conditions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">'NOT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nb">filter</span><span class="o">.</span><span class="n">operator</span><span class="o">.</span><span class="n">value</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">[</span><span class="s1">'nin'</span><span class="p">]</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2"> e.`</span><span class="si">{</span><span class="nb">filter</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">` "</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">convert_operator</span><span class="p">(</span><span class="nb">filter</span><span class="o">.</span><span class="n">operator</span><span class="o">.</span><span class="n">value</span><span class="p">)</span><span class="si">}</span><span class="s2"> $param_</span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s2">"</span> <span class="p">)</span> <span class="n">filter_params</span><span class="p">[</span><span class="sa">f</span><span class="s2">"param_</span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">filter</span><span class="o">.</span><span class="n">value</span> <span class="n">filters</span> <span class="o">=</span> <span class="p">(</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">query</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">condition</span><span class="o">.</span><span class="n">value</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">conditions</span><span class="p">)</span> <span class="k">if</span> <span class="n">conditions</span> <span class="k">else</span> <span class="s2">"1 = 1"</span> <span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">query</span><span class="o">.</span><span class="n">filters</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_supports_vector_index</span><span class="p">:</span> <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""CALL db.index.vector.queryNodes('</span><span class="si">{</span><span class="n">VECTOR_INDEX_NAME</span><span class="si">}</span><span class="s2">', $limit, $embedding)</span> <span class="s2"> YIELD node, score RETURN node.id AS name,</span> <span class="s2"> [l in labels(node) WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS type,</span> <span class="s2"> node</span><span class="se">{{</span><span class="s2">.* , embedding: Null, name: Null, id: Null</span><span class="se">}}</span><span class="s2"> AS properties,</span> <span class="s2"> score</span> <span class="s2"> """</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span> <span class="s2">"embedding"</span><span class="p">:</span> <span class="n">query</span><span class="o">.</span><span class="n">query_embedding</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="n">query</span><span class="o">.</span><span class="n">similarity_top_k</span><span class="p">,</span> <span class="p">},</span> <span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""MATCH (e:`</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">`)</span> <span class="s2"> WHERE e.embedding IS NOT NULL AND size(e.embedding) = $dimension AND (</span><span class="si">{</span><span class="n">filters</span><span class="si">}</span><span class="s2">)</span> <span class="s2"> WITH e, vector.similarity.cosine(e.embedding, $embedding) AS score</span> <span class="s2"> ORDER BY score DESC LIMIT toInteger($limit)</span> <span class="s2"> RETURN e.id AS name,</span> <span class="s2"> [l in labels(e) WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS type,</span> <span class="s2"> e</span><span class="se">{{</span><span class="s2">.* , embedding: Null, name: Null, id: Null</span><span class="se">}}</span><span class="s2"> AS properties,</span> <span class="s2"> score"""</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span> <span class="s2">"embedding"</span><span class="p">:</span> <span class="n">query</span><span class="o">.</span><span class="n">query_embedding</span><span class="p">,</span> <span class="s2">"dimension"</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">query</span><span class="o">.</span><span class="n">query_embedding</span><span class="p">),</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="n">query</span><span class="o">.</span><span class="n">similarity_top_k</span><span class="p">,</span> <span class="o">**</span><span class="n">filter_params</span><span class="p">,</span> <span class="p">},</span> <span class="p">)</span> <span class="n">data</span> <span class="o">=</span> <span class="n">data</span> <span class="k">if</span> <span class="n">data</span> <span class="k">else</span> <span class="p">[]</span> <span class="n">nodes</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">scores</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span> <span class="n">node</span> <span class="o">=</span> <span class="n">EntityNode</span><span class="p">(</span> <span class="n">name</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="n">nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> <span class="n">scores</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"score"</span><span class="p">])</span> <span class="k">return</span> <span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">scores</span><span class="p">)</span> <span class="k">def</span> <span class="nf">delete</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">entity_names</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">relation_names</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">ids</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Delete matching data."""</span> <span class="k">if</span> <span class="n">entity_names</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="s2">"MATCH (n) WHERE n.name IN $entity_names DETACH DELETE n"</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"entity_names"</span><span class="p">:</span> <span class="n">entity_names</span><span class="p">},</span> <span class="p">)</span> <span class="k">if</span> <span class="n">ids</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="s2">"MATCH (n) WHERE n.id IN $ids DETACH DELETE n"</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"ids"</span><span class="p">:</span> <span class="n">ids</span><span class="p">},</span> <span class="p">)</span> <span class="k">if</span> <span class="n">relation_names</span><span class="p">:</span> <span class="k">for</span> <span class="n">rel</span> <span class="ow">in</span> <span class="n">relation_names</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="sa">f</span><span class="s2">"MATCH ()-[r:`</span><span class="si">{</span><span class="n">rel</span><span class="si">}</span><span class="s2">`]->() DELETE r"</span><span class="p">)</span> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> <span class="n">cypher</span> <span class="o">=</span> <span class="s2">"MATCH (e) WHERE "</span> <span class="n">prop_list</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">params</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">prop</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">properties</span><span class="p">):</span> <span class="n">prop_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"e.`</span><span class="si">{</span><span class="n">prop</span><span class="si">}</span><span class="s2">` = $property_</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="n">params</span><span class="p">[</span><span class="sa">f</span><span class="s2">"property_</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> <span class="o">=</span> <span class="n">properties</span><span class="p">[</span><span class="n">prop</span><span class="p">]</span> <span class="n">cypher</span> <span class="o">+=</span> <span class="s2">" AND "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prop_list</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="n">cypher</span> <span class="o">+</span> <span class="s2">" DETACH DELETE e"</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="n">params</span><span class="p">)</span> <span class="k">def</span> <span class="nf">_enhanced_schema_cypher</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">label_or_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]],</span> <span class="n">exhaustive</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="n">is_relationship</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> <span class="k">if</span> <span class="n">is_relationship</span><span class="p">:</span> <span class="n">match_clause</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"MATCH ()-[n:`</span><span class="si">{</span><span class="n">label_or_type</span><span class="si">}</span><span class="s2">`]->()"</span> <span class="k">else</span><span class="p">:</span> <span class="n">match_clause</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"MATCH (n:`</span><span class="si">{</span><span class="n">label_or_type</span><span class="si">}</span><span class="s2">`)"</span> <span class="n">with_clauses</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">return_clauses</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">output_dict</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">if</span> <span class="n">exhaustive</span><span class="p">:</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">properties</span><span class="p">:</span> <span class="n">prop_name</span> <span class="o">=</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]</span> <span class="n">prop_type</span> <span class="o">=</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="k">if</span> <span class="n">prop_type</span> <span class="o">==</span> <span class="s2">"STRING"</span><span class="p">:</span> <span class="n">with_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"collect(distinct substring(toString(coalesce(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`, '')), 0, </span><span class="si">{</span><span class="n">LONG_TEXT_THRESHOLD</span><span class="si">}</span><span class="s2">)) "</span> <span class="sa">f</span><span class="s2">"AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_values`"</span> <span class="p">)</span> <span class="n">return_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"values:`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_values`[..</span><span class="si">{</span><span class="n">DISTINCT_VALUE_LIMIT</span><span class="si">}</span><span class="s2">],"</span> <span class="sa">f</span><span class="s2">" distinct_count: size(`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_values`)"</span> <span class="p">)</span> <span class="k">elif</span> <span class="n">prop_type</span> <span class="ow">in</span> <span class="p">[</span> <span class="s2">"INTEGER"</span><span class="p">,</span> <span class="s2">"FLOAT"</span><span class="p">,</span> <span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"DATE_TIME"</span><span class="p">,</span> <span class="s2">"LOCAL_DATE_TIME"</span><span class="p">,</span> <span class="p">]:</span> <span class="n">with_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"min(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`) AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_min`"</span><span class="p">)</span> <span class="n">with_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"max(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`) AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_max`"</span><span class="p">)</span> <span class="n">with_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"count(distinct n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`) AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_distinct`"</span> <span class="p">)</span> <span class="n">return_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"min: toString(`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_min`), "</span> <span class="sa">f</span><span class="s2">"max: toString(`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_max`), "</span> <span class="sa">f</span><span class="s2">"distinct_count: `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_distinct`"</span> <span class="p">)</span> <span class="k">elif</span> <span class="n">prop_type</span> <span class="o">==</span> <span class="s2">"LIST"</span><span class="p">:</span> <span class="n">with_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"min(size(coalesce(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`, []))) AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_size_min`, "</span> <span class="sa">f</span><span class="s2">"max(size(coalesce(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`, []))) AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_size_max`, "</span> <span class="c1"># Get first 3 sub-elements of the first element as sample values</span> <span class="sa">f</span><span class="s2">"collect(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`)[0][..3] AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_values`"</span> <span class="p">)</span> <span class="n">return_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"min_size: `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_size_min`, "</span> <span class="sa">f</span><span class="s2">"max_size: `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_size_max`, "</span> <span class="sa">f</span><span class="s2">"values:`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_values`"</span> <span class="p">)</span> <span class="k">elif</span> <span class="n">prop_type</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"BOOLEAN"</span><span class="p">,</span> <span class="s2">"POINT"</span><span class="p">,</span> <span class="s2">"DURATION"</span><span class="p">]:</span> <span class="k">continue</span> <span class="n">output_dict</span><span class="p">[</span><span class="n">prop_name</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"{"</span> <span class="o">+</span> <span class="n">return_clauses</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">+</span> <span class="s2">"}"</span> <span class="k">else</span><span class="p">:</span> <span class="c1"># Just sample 5 random nodes</span> <span class="n">match_clause</span> <span class="o">+=</span> <span class="s2">" WITH n LIMIT 5"</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">properties</span><span class="p">:</span> <span class="n">prop_name</span> <span class="o">=</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]</span> <span class="n">prop_type</span> <span class="o">=</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="c1"># Check if indexed property, we can still do exhaustive</span> <span class="n">prop_index</span> <span class="o">=</span> <span class="p">[</span> <span class="n">el</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span><span class="p">[</span><span class="s2">"metadata"</span><span class="p">][</span><span class="s2">"index"</span><span class="p">]</span> <span class="k">if</span> <span class="n">el</span><span class="p">[</span><span class="s2">"label"</span><span class="p">]</span> <span class="o">==</span> <span class="n">label_or_type</span> <span class="ow">and</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span> <span class="o">==</span> <span class="p">[</span><span class="n">prop_name</span><span class="p">]</span> <span class="ow">and</span> <span class="n">el</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"RANGE"</span> <span class="p">]</span> <span class="k">if</span> <span class="n">prop_type</span> <span class="o">==</span> <span class="s2">"STRING"</span><span class="p">:</span> <span class="k">if</span> <span class="p">(</span> <span class="n">prop_index</span> <span class="ow">and</span> <span class="n">prop_index</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"size"</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">prop_index</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinctValues"</span><span class="p">)</span> <span class="o"><=</span> <span class="n">DISTINCT_VALUE_LIMIT</span> <span class="p">):</span> <span class="n">distinct_values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"CALL apoc.schema.properties.distinct("</span> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">label_or_type</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">') YIELD value"</span> <span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"value"</span><span class="p">]</span> <span class="n">return_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"values: </span><span class="si">{</span><span class="n">distinct_values</span><span class="si">}</span><span class="s2">,"</span> <span class="sa">f</span><span class="s2">" distinct_count: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">distinct_values</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">with_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"collect(distinct substring(toString(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`), 0, </span><span class="si">{</span><span class="n">LONG_TEXT_THRESHOLD</span><span class="si">}</span><span class="s2">)) "</span> <span class="sa">f</span><span class="s2">"AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_values`"</span> <span class="p">)</span> <span class="n">return_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"values: `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_values`"</span><span class="p">)</span> <span class="k">elif</span> <span class="n">prop_type</span> <span class="ow">in</span> <span class="p">[</span> <span class="s2">"INTEGER"</span><span class="p">,</span> <span class="s2">"FLOAT"</span><span class="p">,</span> <span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"DATE_TIME"</span><span class="p">,</span> <span class="s2">"LOCAL_DATE_TIME"</span><span class="p">,</span> <span class="p">]:</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">prop_index</span><span class="p">:</span> <span class="n">with_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"collect(distinct toString(coalesce(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`, ''))) "</span> <span class="sa">f</span><span class="s2">"AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_values`"</span> <span class="p">)</span> <span class="n">return_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"values: `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_values`"</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">with_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"min(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`) AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_min`"</span> <span class="p">)</span> <span class="n">with_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"max(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`) AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_max`"</span> <span class="p">)</span> <span class="n">with_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"count(distinct n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`) AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_distinct`"</span> <span class="p">)</span> <span class="n">return_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"min: toString(`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_min`), "</span> <span class="sa">f</span><span class="s2">"max: toString(`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_max`), "</span> <span class="sa">f</span><span class="s2">"distinct_count: `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_distinct`"</span> <span class="p">)</span> <span class="k">elif</span> <span class="n">prop_type</span> <span class="o">==</span> <span class="s2">"LIST"</span><span class="p">:</span> <span class="n">with_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"min(size(coalesce(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`, []))) AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_size_min`, "</span> <span class="sa">f</span><span class="s2">"max(size(coalesce(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`, []))) AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_size_max`, "</span> <span class="c1"># Get first 3 sub-elements of the first element as sample values</span> <span class="sa">f</span><span class="s2">"collect(n.`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">`)[0][..3] AS `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_values`"</span> <span class="p">)</span> <span class="n">return_clauses</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"min_size: `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_size_min`, "</span> <span class="sa">f</span><span class="s2">"max_size: `</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_size_max`, "</span> <span class="sa">f</span><span class="s2">"values:`</span><span class="si">{</span><span class="n">prop_name</span><span class="si">}</span><span class="s2">_values`"</span> <span class="p">)</span> <span class="k">elif</span> <span class="n">prop_type</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"BOOLEAN"</span><span class="p">,</span> <span class="s2">"POINT"</span><span class="p">,</span> <span class="s2">"DURATION"</span><span class="p">]:</span> <span class="k">continue</span> <span class="n">output_dict</span><span class="p">[</span><span class="n">prop_name</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"{"</span> <span class="o">+</span> <span class="n">return_clauses</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">+</span> <span class="s2">"}"</span> <span class="n">with_clause</span> <span class="o">=</span> <span class="s2">"WITH "</span> <span class="o">+</span> <span class="s2">",</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">with_clauses</span><span class="p">)</span> <span class="n">return_clause</span> <span class="o">=</span> <span class="p">(</span> <span class="s2">"RETURN {"</span> <span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"`</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">`: </span><span class="si">{</span><span class="n">v</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">output_dict</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> <span class="o">+</span> <span class="s2">"} AS output"</span> <span class="p">)</span> <span class="c1"># Combine all parts of the Cypher query</span> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">match_clause</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">with_clause</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">return_clause</span><span class="si">}</span><span class="s2">"</span> <span class="k">def</span> <span class="nf">get_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">refresh</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span> <span class="k">if</span> <span class="n">refresh</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">refresh_schema</span><span class="p">()</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span> <span class="k">def</span> <span class="nf">get_schema_str</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">refresh</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">exclude_types</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span> <span class="n">include_types</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> <span class="n">schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_schema</span><span class="p">(</span><span class="n">refresh</span><span class="o">=</span><span class="n">refresh</span><span class="p">)</span> <span class="k">def</span> <span class="nf">filter_func</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> <span class="k">return</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">include_types</span> <span class="k">if</span> <span class="n">include_types</span> <span class="k">else</span> <span class="n">x</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exclude_types</span> <span class="n">filtered_schema</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"node_props"</span><span class="p">:</span> <span class="p">{</span> <span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">schema</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"node_props"</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">filter_func</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="p">},</span> <span class="s2">"rel_props"</span><span class="p">:</span> <span class="p">{</span> <span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">schema</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"rel_props"</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">filter_func</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="p">},</span> <span class="s2">"relationships"</span><span class="p">:</span> <span class="p">[</span> <span class="n">r</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">schema</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"relationships"</span><span class="p">,</span> <span class="p">[])</span> <span class="k">if</span> <span class="nb">all</span><span class="p">(</span><span class="n">filter_func</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="n">t</span><span class="p">])</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"start"</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">,</span> <span class="s2">"type"</span><span class="p">])</span> <span class="p">],</span> <span class="p">}</span> <span class="n">formatted_node_props</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">formatted_rel_props</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">enhanced_schema</span><span class="p">:</span> <span class="c1"># Enhanced formatting for nodes</span> <span class="k">for</span> <span class="n">node_type</span><span class="p">,</span> <span class="n">properties</span> <span class="ow">in</span> <span class="n">filtered_schema</span><span class="p">[</span><span class="s2">"node_props"</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> <span class="n">formatted_node_props</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"- **</span><span class="si">{</span><span class="n">node_type</span><span class="si">}</span><span class="s2">**"</span><span class="p">)</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">properties</span><span class="p">:</span> <span class="n">example</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"STRING"</span> <span class="ow">and</span> <span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">):</span> <span class="k">if</span> <span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct_count"</span><span class="p">,</span> <span class="mi">11</span><span class="p">)</span> <span class="o">></span> <span class="n">DISTINCT_VALUE_LIMIT</span><span class="p">:</span> <span class="n">example</span> <span class="o">=</span> <span class="p">(</span> <span class="sa">f</span><span class="s1">'Example: "</span><span class="si">{</span><span class="n">clean_string_values</span><span class="p">(</span><span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s1">"'</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span> <span class="k">else</span> <span class="s2">""</span> <span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="c1"># If less than 10 possible values return all</span> <span class="n">example</span> <span class="o">=</span> <span class="p">(</span> <span class="p">(</span> <span class="s2">"Available options: "</span> <span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="p">[</span><span class="n">clean_string_values</span><span class="p">(</span><span class="n">el</span><span class="p">)</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">el</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]]</span><span class="si">}</span><span class="s1">'</span> <span class="p">)</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span> <span class="k">else</span> <span class="s2">""</span> <span class="p">)</span> <span class="k">elif</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"TEXT"</span><span class="p">:</span> <span class="n">example</span> <span class="o">=</span> <span class="p">(</span> <span class="sa">f</span><span class="s1">'Example: "</span><span class="si">{</span><span class="n">clean_string_values</span><span class="p">(</span><span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s1">"'</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]</span> <span class="k">else</span> <span class="s2">""</span> <span class="p">)</span> <span class="k">elif</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span> <span class="s2">"INTEGER"</span><span class="p">,</span> <span class="s2">"FLOAT"</span><span class="p">,</span> <span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"DATE_TIME"</span><span class="p">,</span> <span class="s2">"LOCAL_DATE_TIME"</span><span class="p">,</span> <span class="p">]:</span> <span class="k">if</span> <span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"min"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> <span class="n">example</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'Min: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s2">"min"</span><span class="p">]</span><span class="si">}</span><span class="s1">, Max: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s2">"max"</span><span class="p">]</span><span class="si">}</span><span class="s1">'</span> <span class="k">else</span><span class="p">:</span> <span class="n">example</span> <span class="o">=</span> <span class="p">(</span> <span class="sa">f</span><span class="s1">'Example: "</span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s1">"'</span> <span class="k">if</span> <span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> <span class="p">)</span> <span class="k">elif</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"LIST"</span><span class="p">:</span> <span class="c1"># Skip embeddings</span> <span class="c1"># if not prop.get("min_size") or prop["min_size"] > LIST_LIMIT:</span> <span class="c1"># continue</span> <span class="n">example</span> <span class="o">=</span> <span class="p">(</span> <span class="sa">f</span><span class="s1">'Min Size: </span><span class="si">{</span><span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"min_size"</span><span class="p">,</span><span class="w"> </span><span class="s2">"N/A"</span><span class="p">)</span><span class="si">}</span><span class="s1">, '</span> <span class="sa">f</span><span class="s1">'Max Size: </span><span class="si">{</span><span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"max_size"</span><span class="p">,</span><span class="w"> </span><span class="s2">"N/A"</span><span class="p">)</span><span class="si">}</span><span class="s1">, '</span> <span class="o">+</span> <span class="p">(</span> <span class="sa">f</span><span class="s1">'Example: [</span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s1">]'</span> <span class="k">if</span> <span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">])</span> <span class="o">></span> <span class="mi">0</span> <span class="k">else</span> <span class="s2">""</span> <span class="p">)</span> <span class="p">)</span> <span class="n">formatted_node_props</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">" - `</span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'property'</span><span class="p">]</span><span class="si">}</span><span class="s2">`: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">example</span><span class="si">}</span><span class="s2">"</span> <span class="p">)</span> <span class="c1"># Enhanced formatting for relationships</span> <span class="k">for</span> <span class="n">rel_type</span><span class="p">,</span> <span class="n">properties</span> <span class="ow">in</span> <span class="n">filtered_schema</span><span class="p">[</span><span class="s2">"rel_props"</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> <span class="n">formatted_rel_props</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"- **</span><span class="si">{</span><span class="n">rel_type</span><span class="si">}</span><span class="s2">**"</span><span class="p">)</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">properties</span><span class="p">:</span> <span class="n">example</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"STRING"</span><span class="p">:</span> <span class="k">if</span> <span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct_count"</span><span class="p">,</span> <span class="mi">11</span><span class="p">)</span> <span class="o">></span> <span class="n">DISTINCT_VALUE_LIMIT</span><span class="p">:</span> <span class="n">example</span> <span class="o">=</span> <span class="p">(</span> <span class="sa">f</span><span class="s1">'Example: "</span><span class="si">{</span><span class="n">clean_string_values</span><span class="p">(</span><span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span><span class="si">}</span><span class="s1">"'</span> <span class="k">if</span> <span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> <span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="c1"># If less than 10 possible values return all</span> <span class="n">example</span> <span class="o">=</span> <span class="p">(</span> <span class="p">(</span> <span class="s2">"Available options: "</span> <span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="p">[</span><span class="n">clean_string_values</span><span class="p">(</span><span class="n">el</span><span class="p">)</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">el</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]]</span><span class="si">}</span><span class="s1">'</span> <span class="p">)</span> <span class="k">if</span> <span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> <span class="p">)</span> <span class="k">elif</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span> <span class="s2">"INTEGER"</span><span class="p">,</span> <span class="s2">"FLOAT"</span><span class="p">,</span> <span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"DATE_TIME"</span><span class="p">,</span> <span class="s2">"LOCAL_DATE_TIME"</span><span class="p">,</span> <span class="p">]:</span> <span class="k">if</span> <span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"min"</span><span class="p">):</span> <span class="c1"># If we have min/max</span> <span class="n">example</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'Min: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s2">"min"</span><span class="p">]</span><span class="si">}</span><span class="s1">, Max: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s2">"max"</span><span class="p">]</span><span class="si">}</span><span class="s1">'</span> <span class="k">else</span><span class="p">:</span> <span class="c1"># return a single value</span> <span class="n">example</span> <span class="o">=</span> <span class="p">(</span> <span class="sa">f</span><span class="s1">'Example: "</span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s2">"values"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="si">}</span><span class="s1">"'</span> <span class="k">if</span> <span class="n">prop</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"values"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> <span class="p">)</span> <span class="k">elif</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"LIST"</span><span class="p">:</span> <span class="c1"># Skip embeddings</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"min_size"</span><span class="p">]</span> <span class="o">></span> <span class="n">LIST_LIMIT</span><span class="p">:</span> <span class="k">continue</span> <span class="n">example</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'Min Size: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s2">"min_size"</span><span class="p">]</span><span class="si">}</span><span class="s1">, Max Size: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s2">"max_size"</span><span class="p">]</span><span class="si">}</span><span class="s1">'</span> <span class="n">formatted_rel_props</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">" - `</span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'property'</span><span class="p">]</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2">` </span><span class="si">{</span><span class="n">example</span><span class="si">}</span><span class="s2">"</span> <span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="c1"># Format node properties</span> <span class="k">for</span> <span class="n">label</span><span class="p">,</span> <span class="n">props</span> <span class="ow">in</span> <span class="n">filtered_schema</span><span class="p">[</span><span class="s2">"node_props"</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> <span class="n">props_str</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'property'</span><span class="p">]</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">props</span><span class="p">]</span> <span class="p">)</span> <span class="n">formatted_node_props</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">label</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="si">{</span><span class="n">props_str</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span><span class="p">)</span> <span class="c1"># Format relationship properties using structured_schema</span> <span class="k">for</span> <span class="nb">type</span><span class="p">,</span> <span class="n">props</span> <span class="ow">in</span> <span class="n">filtered_schema</span><span class="p">[</span><span class="s2">"rel_props"</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> <span class="n">props_str</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'property'</span><span class="p">]</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">prop</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">props</span><span class="p">]</span> <span class="p">)</span> <span class="n">formatted_rel_props</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">type</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="si">{</span><span class="n">props_str</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span><span class="p">)</span> <span class="c1"># Format relationships</span> <span class="n">formatted_rels</span> <span class="o">=</span> <span class="p">[</span> <span class="sa">f</span><span class="s2">"(:</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'start'</span><span class="p">]</span><span class="si">}</span><span class="s2">)-[:</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="si">}</span><span class="s2">]->(:</span><span class="si">{</span><span class="n">el</span><span class="p">[</span><span class="s1">'end'</span><span class="p">]</span><span class="si">}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">filtered_schema</span><span class="p">[</span><span class="s2">"relationships"</span><span class="p">]</span> <span class="p">]</span> <span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> <span class="p">[</span> <span class="s2">"Node properties:"</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">formatted_node_props</span><span class="p">),</span> <span class="s2">"Relationship properties:"</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">formatted_rel_props</span><span class="p">),</span> <span class="s2">"The relationships:"</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">formatted_rels</span><span class="p">),</span> <span class="p">]</span> <span class="p">)</span> <span class="k">def</span> <span class="nf">verify_version</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Check if the connected Neo4j database version supports vector indexing</span> <span class="sd"> without specifying embedding dimension.</span> <span class="sd"> Queries the Neo4j database to retrieve its version and compares it</span> <span class="sd"> against a target version (5.23.0) that is known to support vector</span> <span class="sd"> indexing. Raises a ValueError if the connected Neo4j version is</span> <span class="sd"> not supported.</span> <span class="sd"> """</span> <span class="n">db_data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="s2">"CALL dbms.components()"</span><span class="p">)</span> <span class="n">version</span> <span class="o">=</span> <span class="n">db_data</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"versions"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="s2">"aura"</span> <span class="ow">in</span> <span class="n">version</span><span class="p">:</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="o">*</span><span class="nb">map</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="n">version</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"-"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)),</span> <span class="mi">0</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="n">version</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)))</span> <span class="n">target_version</span> <span class="o">=</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">23</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="k">if</span> <span class="n">version_tuple</span> <span class="o">>=</span> <span class="n">target_version</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_supports_vector_index</span> <span class="o">=</span> <span class="kc">True</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_supports_vector_index</span> <span class="o">=</span> <span class="kc">False</span> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Explicitly close the Neo4j driver connection.</span> <span class="sd"> Delegates connection management to the Neo4j driver.</span> <span class="sd"> """</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_driver"</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="c1"># Remove the driver attribute to indicate closure</span> <span class="nb">delattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_driver"</span><span class="p">)</span> <span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="s2">"Neo4jPropertyGraphStore"</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Enter the runtime context for the Neo4j graph connection.</span> <span class="sd"> Enables use of the graph connection with the 'with' statement.</span> <span class="sd"> This method allows for automatic resource management and ensures</span> <span class="sd"> that the connection is properly handled.</span> <span class="sd"> Returns:</span> <span class="sd"> Neo4jPropertyGraphStore: The current graph connection instance</span> <span class="sd"> """</span> <span class="k">return</span> <span class="bp">self</span> <span class="k">def</span> <span class="fm">__exit__</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Type</span><span class="p">[</span><span class="ne">BaseException</span><span class="p">]],</span> <span class="n">exc_val</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="ne">BaseException</span><span class="p">],</span> <span class="n">exc_tb</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">TracebackType</span><span class="p">],</span> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Exit the runtime context for the Neo4j graph connection.</span> <span class="sd"> This method is automatically called when exiting a 'with' statement.</span> <span class="sd"> It ensures that the database connection is closed, regardless of</span> <span class="sd"> whether an exception occurred during the context's execution.</span> <span class="sd"> Args:</span> <span class="sd"> exc_type: The type of exception that caused the context to exit</span> <span class="sd"> (None if no exception occurred)</span> <span class="sd"> exc_val: The exception instance that caused the context to exit</span> <span class="sd"> (None if no exception occurred)</span> <span class="sd"> exc_tb: The traceback for the exception (None if no exception occurred)</span> <span class="sd"> Note:</span> <span class="sd"> Any exception is re-raised after the connection is closed.</span> <span class="sd"> """</span> <span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Destructor for the Neo4j graph connection.</span> <span class="sd"> This method is called during garbage collection to ensure that</span> <span class="sd"> database resources are released if not explicitly closed.</span> <span class="sd"> Caution:</span> <span class="sd"> - Do not rely on this method for deterministic resource cleanup</span> <span class="sd"> - Always prefer explicit .close() or context manager</span> <span class="sd"> Best practices:</span> <span class="sd"> 1. Use context manager:</span> <span class="sd"> with Neo4jGraph(...) as graph:</span> <span class="sd"> ...</span> <span class="sd"> 2. Explicitly close:</span> <span class="sd"> graph = Neo4jGraph(...)</span> <span class="sd"> try:</span> <span class="sd"> ...</span> <span class="sd"> finally:</span> <span class="sd"> graph.close()</span> <span class="sd"> """</span> <span class="k">try</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> <span class="c1"># Suppress any exceptions during garbage collection</span> <span class="k">pass</span> </code></pre></div></td></tr></table></div> </details> <div class="doc doc-children"> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.close" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">close</span> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.close" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">close</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span> </code></pre></div> <div class="doc doc-contents "> <p>Explicitly close the Neo4j driver connection.</p> <p>Delegates connection management to the Neo4j driver.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/neo4j_property_graph.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1097</span> <span class="normal">1098</span> <span class="normal">1099</span> <span class="normal">1100</span> <span class="normal">1101</span> <span class="normal">1102</span> <span class="normal">1103</span> <span class="normal">1104</span> <span class="normal">1105</span> <span class="normal">1106</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Explicitly close the Neo4j driver connection.</span> <span class="sd"> Delegates connection management to the Neo4j driver.</span> <span class="sd"> """</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_driver"</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">_driver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="c1"># Remove the driver attribute to indicate closure</span> <span class="nb">delattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_driver"</span><span class="p">)</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.refresh_schema" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">refresh_schema</span> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.refresh_schema" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">refresh_schema</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span> </code></pre></div> <div class="doc doc-contents "> <p>Refresh the schema.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/neo4j_property_graph.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">209</span> <span class="normal">210</span> <span class="normal">211</span> <span class="normal">212</span> <span class="normal">213</span> <span class="normal">214</span> <span class="normal">215</span> <span class="normal">216</span> <span class="normal">217</span> <span class="normal">218</span> <span class="normal">219</span> <span class="normal">220</span> <span class="normal">221</span> <span class="normal">222</span> <span class="normal">223</span> <span class="normal">224</span> <span class="normal">225</span> <span class="normal">226</span> <span class="normal">227</span> <span class="normal">228</span> <span class="normal">229</span> <span class="normal">230</span> <span class="normal">231</span> <span class="normal">232</span> <span class="normal">233</span> <span class="normal">234</span> <span class="normal">235</span> <span class="normal">236</span> <span class="normal">237</span> <span class="normal">238</span> <span class="normal">239</span> <span class="normal">240</span> <span class="normal">241</span> <span class="normal">242</span> <span class="normal">243</span> <span class="normal">244</span> <span class="normal">245</span> <span class="normal">246</span> <span class="normal">247</span> <span class="normal">248</span> <span class="normal">249</span> <span class="normal">250</span> <span class="normal">251</span> <span class="normal">252</span> <span class="normal">253</span> <span class="normal">254</span> <span class="normal">255</span> <span class="normal">256</span> <span class="normal">257</span> <span class="normal">258</span> <span class="normal">259</span> <span class="normal">260</span> <span class="normal">261</span> <span class="normal">262</span> <span class="normal">263</span> <span class="normal">264</span> <span class="normal">265</span> <span class="normal">266</span> <span class="normal">267</span> <span class="normal">268</span> <span class="normal">269</span> <span class="normal">270</span> <span class="normal">271</span> <span class="normal">272</span> <span class="normal">273</span> <span class="normal">274</span> <span class="normal">275</span> <span class="normal">276</span> <span class="normal">277</span> <span class="normal">278</span> <span class="normal">279</span> <span class="normal">280</span> <span class="normal">281</span> <span class="normal">282</span> <span class="normal">283</span> <span class="normal">284</span> <span class="normal">285</span> <span class="normal">286</span> <span class="normal">287</span> <span class="normal">288</span> <span class="normal">289</span> <span class="normal">290</span> <span class="normal">291</span> <span class="normal">292</span> <span class="normal">293</span> <span class="normal">294</span> <span class="normal">295</span> <span class="normal">296</span> <span class="normal">297</span> <span class="normal">298</span> <span class="normal">299</span> <span class="normal">300</span> <span class="normal">301</span> <span class="normal">302</span> <span class="normal">303</span> <span class="normal">304</span> <span class="normal">305</span> <span class="normal">306</span> <span class="normal">307</span> <span class="normal">308</span> <span class="normal">309</span> <span class="normal">310</span> <span class="normal">311</span> <span class="normal">312</span> <span class="normal">313</span> <span class="normal">314</span> <span class="normal">315</span> <span class="normal">316</span> <span class="normal">317</span> <span class="normal">318</span> <span class="normal">319</span> <span class="normal">320</span> <span class="normal">321</span> <span class="normal">322</span> <span class="normal">323</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">refresh_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Refresh the schema."""</span> <span class="n">node_query_results</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="n">node_properties_query</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span> <span class="s2">"EXCLUDED_LABELS"</span><span class="p">:</span> <span class="p">[</span> <span class="o">*</span><span class="n">EXCLUDED_LABELS</span><span class="p">,</span> <span class="n">BASE_ENTITY_LABEL</span><span class="p">,</span> <span class="n">BASE_NODE_LABEL</span><span class="p">,</span> <span class="p">]</span> <span class="p">},</span> <span class="p">)</span> <span class="n">node_properties</span> <span class="o">=</span> <span class="p">(</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">node_query_results</span><span class="p">]</span> <span class="k">if</span> <span class="n">node_query_results</span> <span class="k">else</span> <span class="p">[]</span> <span class="p">)</span> <span class="n">rels_query_result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="n">rel_properties_query</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"EXCLUDED_LABELS"</span><span class="p">:</span> <span class="n">EXCLUDED_RELS</span><span class="p">}</span> <span class="p">)</span> <span class="n">rel_properties</span> <span class="o">=</span> <span class="p">(</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">rels_query_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">rels_query_result</span> <span class="k">else</span> <span class="p">[]</span> <span class="p">)</span> <span class="n">rel_objs_query_result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="n">rel_query</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span> <span class="s2">"EXCLUDED_LABELS"</span><span class="p">:</span> <span class="p">[</span> <span class="o">*</span><span class="n">EXCLUDED_LABELS</span><span class="p">,</span> <span class="n">BASE_ENTITY_LABEL</span><span class="p">,</span> <span class="n">BASE_NODE_LABEL</span><span class="p">,</span> <span class="p">]</span> <span class="p">},</span> <span class="p">)</span> <span class="n">relationships</span> <span class="o">=</span> <span class="p">(</span> <span class="p">[</span><span class="n">el</span><span class="p">[</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">rel_objs_query_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">rel_objs_query_result</span> <span class="k">else</span> <span class="p">[]</span> <span class="p">)</span> <span class="c1"># Get constraints & indexes</span> <span class="k">try</span><span class="p">:</span> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="s2">"SHOW CONSTRAINTS"</span><span class="p">)</span> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="s2">"CALL apoc.schema.nodes() YIELD label, properties, type, size, "</span> <span class="s2">"valuesSelectivity WHERE type = 'RANGE' RETURN *, "</span> <span class="s2">"size * valuesSelectivity as distinctValues"</span> <span class="p">)</span> <span class="k">except</span> <span class="p">(</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">ClientError</span> <span class="p">):</span> <span class="c1"># Read-only user might not have access to schema information</span> <span class="n">constraint</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">index</span> <span class="o">=</span> <span class="p">[]</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">"node_props"</span><span class="p">:</span> <span class="p">{</span><span class="n">el</span><span class="p">[</span><span class="s2">"labels"</span><span class="p">]:</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">node_properties</span><span class="p">},</span> <span class="s2">"rel_props"</span><span class="p">:</span> <span class="p">{</span><span class="n">el</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]:</span> <span class="n">el</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">rel_properties</span><span class="p">},</span> <span class="s2">"relationships"</span><span class="p">:</span> <span class="n">relationships</span><span class="p">,</span> <span class="s2">"metadata"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"constraint"</span><span class="p">:</span> <span class="n">constraint</span><span class="p">,</span> <span class="s2">"index"</span><span class="p">:</span> <span class="n">index</span><span class="p">},</span> <span class="p">}</span> <span class="n">schema_counts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="s2">"CALL apoc.meta.subGraph(</span><span class="si">{}</span><span class="s2">) YIELD nodes, relationships "</span> <span class="s2">"RETURN nodes, [rel in relationships | {name:apoc.any.property"</span> <span class="s2">"(rel, 'type'), count: apoc.any.property(rel, 'count')}]"</span> <span class="s2">" AS relationships"</span> <span class="p">)</span> <span class="c1"># Update node info</span> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">schema_counts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"nodes"</span><span class="p">,</span> <span class="p">[]):</span> <span class="c1"># Skip bloom labels</span> <span class="k">if</span> <span class="n">node</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">EXCLUDED_LABELS</span><span class="p">:</span> <span class="k">continue</span> <span class="n">node_props</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span><span class="p">[</span><span class="s2">"node_props"</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="p">[</span><span class="s2">"name"</span><span class="p">])</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">node_props</span><span class="p">:</span> <span class="c1"># The node has no properties</span> <span class="k">continue</span> <span class="n">enhanced_cypher</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_enhanced_schema_cypher</span><span class="p">(</span> <span class="n">node</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">node_props</span><span class="p">,</span> <span class="n">node</span><span class="p">[</span><span class="s2">"count"</span><span class="p">]</span> <span class="o"><</span> <span class="n">EXHAUSTIVE_SEARCH_LIMIT</span> <span class="p">)</span> <span class="n">enhanced_info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="n">enhanced_cypher</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">node_props</span><span class="p">:</span> <span class="c1"># Map to custom types</span> <span class="c1"># Text</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"STRING"</span> <span class="ow">and</span> <span class="nb">any</span><span class="p">(</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">>=</span> <span class="n">LONG_TEXT_THRESHOLD</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]][</span><span class="s2">"values"</span><span class="p">]</span> <span class="p">):</span> <span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]][</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"TEXT"</span> <span class="c1"># Embedding</span> <span class="k">if</span> <span class="p">(</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"LIST"</span> <span class="ow">and</span> <span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]][</span><span class="s2">"max_size"</span><span class="p">]</span> <span class="o">></span> <span class="n">LIST_LIMIT</span> <span class="p">):</span> <span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]][</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"EMBEDDING"</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">enhanced_info</span><span class="p">:</span> <span class="n">prop</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]])</span> <span class="c1"># Update rel info</span> <span class="k">for</span> <span class="n">rel</span> <span class="ow">in</span> <span class="n">schema_counts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"relationships"</span><span class="p">,</span> <span class="p">[]):</span> <span class="c1"># Skip bloom labels</span> <span class="k">if</span> <span class="n">rel</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">EXCLUDED_RELS</span><span class="p">:</span> <span class="k">continue</span> <span class="n">rel_props</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_schema</span><span class="p">[</span><span class="s2">"rel_props"</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">rel</span><span class="p">[</span><span class="s2">"name"</span><span class="p">])</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">rel_props</span><span class="p">:</span> <span class="c1"># The rel has no properties</span> <span class="k">continue</span> <span class="n">enhanced_cypher</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_enhanced_schema_cypher</span><span class="p">(</span> <span class="n">rel</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">rel_props</span><span class="p">,</span> <span class="n">rel</span><span class="p">[</span><span class="s2">"count"</span><span class="p">]</span> <span class="o"><</span> <span class="n">EXHAUSTIVE_SEARCH_LIMIT</span><span class="p">,</span> <span class="n">is_relationship</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="p">)</span> <span class="k">try</span><span class="p">:</span> <span class="n">enhanced_info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="n">enhanced_cypher</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"output"</span><span class="p">]</span> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">rel_props</span><span class="p">:</span> <span class="k">if</span> <span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">enhanced_info</span><span class="p">:</span> <span class="n">prop</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">enhanced_info</span><span class="p">[</span><span class="n">prop</span><span class="p">[</span><span class="s2">"property"</span><span class="p">]])</span> <span class="k">except</span> <span class="n">neo4j</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">ClientError</span><span class="p">:</span> <span class="c1"># Sometimes the types are not consistent in the db</span> <span class="k">pass</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.upsert_relations" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">upsert_relations</span> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.upsert_relations" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">upsert_relations</span><span class="p">(</span><span class="n">relations</span><span class="p">:</span> <span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n"><span title="llama_index.core.graph_stores.types.Relation">Relation</span></span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span> </code></pre></div> <div class="doc doc-contents "> <p>Add relations.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/neo4j_property_graph.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">385</span> <span class="normal">386</span> <span class="normal">387</span> <span class="normal">388</span> <span class="normal">389</span> <span class="normal">390</span> <span class="normal">391</span> <span class="normal">392</span> <span class="normal">393</span> <span class="normal">394</span> <span class="normal">395</span> <span class="normal">396</span> <span class="normal">397</span> <span class="normal">398</span> <span class="normal">399</span> <span class="normal">400</span> <span class="normal">401</span> <span class="normal">402</span> <span class="normal">403</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">upsert_relations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">relations</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Relation</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Add relations."""</span> <span class="n">params</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span><span class="o">.</span><span class="n">dict</span><span class="p">()</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">relations</span><span class="p">]</span> <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">params</span><span class="p">),</span> <span class="n">CHUNK_SIZE</span><span class="p">):</span> <span class="n">chunked_params</span> <span class="o">=</span> <span class="n">params</span><span class="p">[</span><span class="n">index</span> <span class="p">:</span> <span class="n">index</span> <span class="o">+</span> <span class="n">CHUNK_SIZE</span><span class="p">]</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""</span> <span class="s2"> UNWIND $data AS row</span> <span class="s2"> MERGE (source: </span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="s2">id: row.source_id</span><span class="se">}}</span><span class="s2">)</span> <span class="s2"> ON CREATE SET source:Chunk</span> <span class="s2"> MERGE (target: </span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2"> </span><span class="se">{{</span><span class="s2">id: row.target_id</span><span class="se">}}</span><span class="s2">)</span> <span class="s2"> ON CREATE SET target:Chunk</span> <span class="s2"> WITH source, target, row</span> <span class="s2"> CALL apoc.merge.relationship(source, row.label, </span><span class="se">{{}}</span><span class="s2">, row.properties, target) YIELD rel</span> <span class="s2"> RETURN count(*)</span> <span class="s2"> """</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"data"</span><span class="p">:</span> <span class="n">chunked_params</span><span class="p">},</span> <span class="p">)</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.get" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">get</span> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.get" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">get</span><span class="p">(</span><span class="n">properties</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n">dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">ids</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n"><span title="llama_index.core.graph_stores.types.LabelledNode">LabelledNode</span></span><span class="p">]</span> </code></pre></div> <div class="doc doc-contents "> <p>Get nodes.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/neo4j_property_graph.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">405</span> <span class="normal">406</span> <span class="normal">407</span> <span class="normal">408</span> <span class="normal">409</span> <span class="normal">410</span> <span class="normal">411</span> <span class="normal">412</span> <span class="normal">413</span> <span class="normal">414</span> <span class="normal">415</span> <span class="normal">416</span> <span class="normal">417</span> <span class="normal">418</span> <span class="normal">419</span> <span class="normal">420</span> <span class="normal">421</span> <span class="normal">422</span> <span class="normal">423</span> <span class="normal">424</span> <span class="normal">425</span> <span class="normal">426</span> <span class="normal">427</span> <span class="normal">428</span> <span class="normal">429</span> <span class="normal">430</span> <span class="normal">431</span> <span class="normal">432</span> <span class="normal">433</span> <span class="normal">434</span> <span class="normal">435</span> <span class="normal">436</span> <span class="normal">437</span> <span class="normal">438</span> <span class="normal">439</span> <span class="normal">440</span> <span class="normal">441</span> <span class="normal">442</span> <span class="normal">443</span> <span class="normal">444</span> <span class="normal">445</span> <span class="normal">446</span> <span class="normal">447</span> <span class="normal">448</span> <span class="normal">449</span> <span class="normal">450</span> <span class="normal">451</span> <span class="normal">452</span> <span class="normal">453</span> <span class="normal">454</span> <span class="normal">455</span> <span class="normal">456</span> <span class="normal">457</span> <span class="normal">458</span> <span class="normal">459</span> <span class="normal">460</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">get</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">ids</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">LabelledNode</span><span class="p">]:</span> <span class="w"> </span><span class="sd">"""Get nodes."""</span> <span class="n">cypher_statement</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"MATCH (e: </span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">) "</span> <span class="n">params</span> <span class="o">=</span> <span class="p">{}</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="s2">"WHERE e.id IS NOT NULL "</span> <span class="k">if</span> <span class="n">ids</span><span class="p">:</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="s2">"AND e.id in $ids "</span> <span class="n">params</span><span class="p">[</span><span class="s2">"ids"</span><span class="p">]</span> <span class="o">=</span> <span class="n">ids</span> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> <span class="n">prop_list</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">prop</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">properties</span><span class="p">):</span> <span class="n">prop_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"e.`</span><span class="si">{</span><span class="n">prop</span><span class="si">}</span><span class="s2">` = $property_</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="n">params</span><span class="p">[</span><span class="sa">f</span><span class="s2">"property_</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> <span class="o">=</span> <span class="n">properties</span><span class="p">[</span><span class="n">prop</span><span class="p">]</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="s2">" AND "</span> <span class="o">+</span> <span class="s2">" AND "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prop_list</span><span class="p">)</span> <span class="n">return_statement</span> <span class="o">=</span> <span class="s2">"""</span> <span class="s2"> WITH e</span> <span class="s2"> RETURN e.id AS name,</span> <span class="s2"> [l in labels(e) WHERE l <> '__Entity__' | l][0] AS type,</span> <span class="s2"> e{.* , embedding: Null, id: Null} AS properties</span> <span class="s2"> """</span> <span class="n">cypher_statement</span> <span class="o">+=</span> <span class="n">return_statement</span> <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="n">cypher_statement</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="n">params</span><span class="p">)</span> <span class="n">response</span> <span class="o">=</span> <span class="n">response</span> <span class="k">if</span> <span class="n">response</span> <span class="k">else</span> <span class="p">[]</span> <span class="n">nodes</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span> <span class="c1"># text indicates a chunk node</span> <span class="c1"># none on the type indicates an implicit node, likely a chunk node</span> <span class="k">if</span> <span class="s2">"text"</span> <span class="ow">in</span> <span class="n">record</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span> <span class="ow">or</span> <span class="n">record</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="n">text</span> <span class="o">=</span> <span class="n">record</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"text"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span> <span class="n">nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="n">ChunkNode</span><span class="p">(</span> <span class="n">id_</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">text</span><span class="o">=</span><span class="n">text</span><span class="p">,</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="n">EntityNode</span><span class="p">(</span> <span class="n">name</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="p">)</span> <span class="k">return</span> <span class="n">nodes</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.get_rel_map" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">get_rel_map</span> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.get_rel_map" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">get_rel_map</span><span class="p">(</span><span class="n">graph_nodes</span><span class="p">:</span> <span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n"><span title="llama_index.core.graph_stores.types.LabelledNode">LabelledNode</span></span><span class="p">],</span> <span class="n">depth</span><span class="p">:</span> <span class="n">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="n">limit</span><span class="p">:</span> <span class="n">int</span> <span class="o">=</span> <span class="mi">30</span><span class="p">,</span> <span class="n">ignore_rels</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n"><span title="llama_index.core.graph_stores.types.Triplet">Triplet</span></span><span class="p">]</span> </code></pre></div> <div class="doc doc-contents "> <p>Get depth-aware rel map.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/neo4j_property_graph.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">539</span> <span class="normal">540</span> <span class="normal">541</span> <span class="normal">542</span> <span class="normal">543</span> <span class="normal">544</span> <span class="normal">545</span> <span class="normal">546</span> <span class="normal">547</span> <span class="normal">548</span> <span class="normal">549</span> <span class="normal">550</span> <span class="normal">551</span> <span class="normal">552</span> <span class="normal">553</span> <span class="normal">554</span> <span class="normal">555</span> <span class="normal">556</span> <span class="normal">557</span> <span class="normal">558</span> <span class="normal">559</span> <span class="normal">560</span> <span class="normal">561</span> <span class="normal">562</span> <span class="normal">563</span> <span class="normal">564</span> <span class="normal">565</span> <span class="normal">566</span> <span class="normal">567</span> <span class="normal">568</span> <span class="normal">569</span> <span class="normal">570</span> <span class="normal">571</span> <span class="normal">572</span> <span class="normal">573</span> <span class="normal">574</span> <span class="normal">575</span> <span class="normal">576</span> <span class="normal">577</span> <span class="normal">578</span> <span class="normal">579</span> <span class="normal">580</span> <span class="normal">581</span> <span class="normal">582</span> <span class="normal">583</span> <span class="normal">584</span> <span class="normal">585</span> <span class="normal">586</span> <span class="normal">587</span> <span class="normal">588</span> <span class="normal">589</span> <span class="normal">590</span> <span class="normal">591</span> <span class="normal">592</span> <span class="normal">593</span> <span class="normal">594</span> <span class="normal">595</span> <span class="normal">596</span> <span class="normal">597</span> <span class="normal">598</span> <span class="normal">599</span> <span class="normal">600</span> <span class="normal">601</span> <span class="normal">602</span> <span class="normal">603</span> <span class="normal">604</span> <span class="normal">605</span> <span class="normal">606</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">get_rel_map</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">graph_nodes</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">LabelledNode</span><span class="p">],</span> <span class="n">depth</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="n">limit</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">30</span><span class="p">,</span> <span class="n">ignore_rels</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">Triplet</span><span class="p">]:</span> <span class="w"> </span><span class="sd">"""Get depth-aware rel map."""</span> <span class="n">triples</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">ids</span> <span class="o">=</span> <span class="p">[</span><span class="n">node</span><span class="o">.</span><span class="n">id</span> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">graph_nodes</span><span class="p">]</span> <span class="c1"># Needs some optimization</span> <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""</span> <span class="s2"> WITH $ids AS id_list</span> <span class="s2"> UNWIND range(0, size(id_list) - 1) AS idx</span> <span class="s2"> MATCH (e:`</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">`)</span> <span class="s2"> WHERE e.id = id_list[idx]</span> <span class="s2"> MATCH p=(e)-[r*1..</span><span class="si">{</span><span class="n">depth</span><span class="si">}</span><span class="s2">]-(other)</span> <span class="s2"> WHERE ALL(rel in relationships(p) WHERE type(rel) <> 'MENTIONS')</span> <span class="s2"> UNWIND relationships(p) AS rel</span> <span class="s2"> WITH distinct rel, idx</span> <span class="s2"> WITH startNode(rel) AS source,</span> <span class="s2"> type(rel) AS type,</span> <span class="s2"> rel</span><span class="se">{{</span><span class="s2">.*</span><span class="se">}}</span><span class="s2"> AS rel_properties,</span> <span class="s2"> endNode(rel) AS endNode,</span> <span class="s2"> idx</span> <span class="s2"> LIMIT toInteger($limit)</span> <span class="s2"> RETURN source.id AS source_id, [l in labels(source)</span> <span class="s2"> WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS source_type,</span> <span class="s2"> source</span><span class="se">{{</span><span class="s2">.* , embedding: Null, id: Null</span><span class="se">}}</span><span class="s2"> AS source_properties,</span> <span class="s2"> type,</span> <span class="s2"> rel_properties,</span> <span class="s2"> endNode.id AS target_id, [l in labels(endNode)</span> <span class="s2"> WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS target_type,</span> <span class="s2"> endNode</span><span class="se">{{</span><span class="s2">.* , embedding: Null, id: Null</span><span class="se">}}</span><span class="s2"> AS target_properties,</span> <span class="s2"> idx</span> <span class="s2"> ORDER BY idx</span> <span class="s2"> LIMIT toInteger($limit)</span> <span class="s2"> """</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"ids"</span><span class="p">:</span> <span class="n">ids</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="n">limit</span><span class="p">},</span> <span class="p">)</span> <span class="n">response</span> <span class="o">=</span> <span class="n">response</span> <span class="k">if</span> <span class="n">response</span> <span class="k">else</span> <span class="p">[]</span> <span class="n">ignore_rels</span> <span class="o">=</span> <span class="n">ignore_rels</span> <span class="ow">or</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span> <span class="k">if</span> <span class="n">record</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">ignore_rels</span><span class="p">:</span> <span class="k">continue</span> <span class="n">source</span> <span class="o">=</span> <span class="n">EntityNode</span><span class="p">(</span> <span class="n">name</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_id"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="n">target</span> <span class="o">=</span> <span class="n">EntityNode</span><span class="p">(</span> <span class="n">name</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_id"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="n">rel</span> <span class="o">=</span> <span class="n">Relation</span><span class="p">(</span> <span class="n">source_id</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"source_id"</span><span class="p">],</span> <span class="n">target_id</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"target_id"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"rel_properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="n">triples</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">source</span><span class="p">,</span> <span class="n">rel</span><span class="p">,</span> <span class="n">target</span><span class="p">])</span> <span class="k">return</span> <span class="n">triples</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.vector_query" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">vector_query</span> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.vector_query" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">vector_query</span><span class="p">(</span><span class="n">query</span><span class="p">:</span> <span class="n"><a class="autorefs autorefs-internal" title="llama_index.core.vector_stores.types.VectorStoreQuery" href="../../vector_store/#llama_index.core.vector_stores.types.VectorStoreQuery">VectorStoreQuery</a></span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n"><span title="typing.Any">Any</span></span><span class="p">)</span> <span class="o">-></span> <span class="n"><span title="typing.Tuple">Tuple</span></span><span class="p">[</span><span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n"><span title="llama_index.core.graph_stores.types.LabelledNode">LabelledNode</span></span><span class="p">],</span> <span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n">float</span><span class="p">]]</span> </code></pre></div> <div class="doc doc-contents "> <p>Query the graph store with a vector store query.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/neo4j_property_graph.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">655</span> <span class="normal">656</span> <span class="normal">657</span> <span class="normal">658</span> <span class="normal">659</span> <span class="normal">660</span> <span class="normal">661</span> <span class="normal">662</span> <span class="normal">663</span> <span class="normal">664</span> <span class="normal">665</span> <span class="normal">666</span> <span class="normal">667</span> <span class="normal">668</span> <span class="normal">669</span> <span class="normal">670</span> <span class="normal">671</span> <span class="normal">672</span> <span class="normal">673</span> <span class="normal">674</span> <span class="normal">675</span> <span class="normal">676</span> <span class="normal">677</span> <span class="normal">678</span> <span class="normal">679</span> <span class="normal">680</span> <span class="normal">681</span> <span class="normal">682</span> <span class="normal">683</span> <span class="normal">684</span> <span class="normal">685</span> <span class="normal">686</span> <span class="normal">687</span> <span class="normal">688</span> <span class="normal">689</span> <span class="normal">690</span> <span class="normal">691</span> <span class="normal">692</span> <span class="normal">693</span> <span class="normal">694</span> <span class="normal">695</span> <span class="normal">696</span> <span class="normal">697</span> <span class="normal">698</span> <span class="normal">699</span> <span class="normal">700</span> <span class="normal">701</span> <span class="normal">702</span> <span class="normal">703</span> <span class="normal">704</span> <span class="normal">705</span> <span class="normal">706</span> <span class="normal">707</span> <span class="normal">708</span> <span class="normal">709</span> <span class="normal">710</span> <span class="normal">711</span> <span class="normal">712</span> <span class="normal">713</span> <span class="normal">714</span> <span class="normal">715</span> <span class="normal">716</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">vector_query</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">:</span> <span class="n">VectorStoreQuery</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">Any</span> <span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">LabelledNode</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]]:</span> <span class="w"> </span><span class="sd">"""Query the graph store with a vector store query."""</span> <span class="n">conditions</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">filter_params</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">if</span> <span class="n">query</span><span class="o">.</span><span class="n">filters</span><span class="p">:</span> <span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="nb">filter</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">query</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">filters</span><span class="p">):</span> <span class="n">conditions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">'NOT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nb">filter</span><span class="o">.</span><span class="n">operator</span><span class="o">.</span><span class="n">value</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="p">[</span><span class="s1">'nin'</span><span class="p">]</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2"> e.`</span><span class="si">{</span><span class="nb">filter</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">` "</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">convert_operator</span><span class="p">(</span><span class="nb">filter</span><span class="o">.</span><span class="n">operator</span><span class="o">.</span><span class="n">value</span><span class="p">)</span><span class="si">}</span><span class="s2"> $param_</span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s2">"</span> <span class="p">)</span> <span class="n">filter_params</span><span class="p">[</span><span class="sa">f</span><span class="s2">"param_</span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">filter</span><span class="o">.</span><span class="n">value</span> <span class="n">filters</span> <span class="o">=</span> <span class="p">(</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">query</span><span class="o">.</span><span class="n">filters</span><span class="o">.</span><span class="n">condition</span><span class="o">.</span><span class="n">value</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">conditions</span><span class="p">)</span> <span class="k">if</span> <span class="n">conditions</span> <span class="k">else</span> <span class="s2">"1 = 1"</span> <span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">query</span><span class="o">.</span><span class="n">filters</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_supports_vector_index</span><span class="p">:</span> <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""CALL db.index.vector.queryNodes('</span><span class="si">{</span><span class="n">VECTOR_INDEX_NAME</span><span class="si">}</span><span class="s2">', $limit, $embedding)</span> <span class="s2"> YIELD node, score RETURN node.id AS name,</span> <span class="s2"> [l in labels(node) WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS type,</span> <span class="s2"> node</span><span class="se">{{</span><span class="s2">.* , embedding: Null, name: Null, id: Null</span><span class="se">}}</span><span class="s2"> AS properties,</span> <span class="s2"> score</span> <span class="s2"> """</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span> <span class="s2">"embedding"</span><span class="p">:</span> <span class="n">query</span><span class="o">.</span><span class="n">query_embedding</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="n">query</span><span class="o">.</span><span class="n">similarity_top_k</span><span class="p">,</span> <span class="p">},</span> <span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="sa">f</span><span class="s2">"""MATCH (e:`</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">`)</span> <span class="s2"> WHERE e.embedding IS NOT NULL AND size(e.embedding) = $dimension AND (</span><span class="si">{</span><span class="n">filters</span><span class="si">}</span><span class="s2">)</span> <span class="s2"> WITH e, vector.similarity.cosine(e.embedding, $embedding) AS score</span> <span class="s2"> ORDER BY score DESC LIMIT toInteger($limit)</span> <span class="s2"> RETURN e.id AS name,</span> <span class="s2"> [l in labels(e) WHERE NOT l IN ['</span><span class="si">{</span><span class="n">BASE_ENTITY_LABEL</span><span class="si">}</span><span class="s2">', '</span><span class="si">{</span><span class="n">BASE_NODE_LABEL</span><span class="si">}</span><span class="s2">'] | l][0] AS type,</span> <span class="s2"> e</span><span class="se">{{</span><span class="s2">.* , embedding: Null, name: Null, id: Null</span><span class="se">}}</span><span class="s2"> AS properties,</span> <span class="s2"> score"""</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span> <span class="s2">"embedding"</span><span class="p">:</span> <span class="n">query</span><span class="o">.</span><span class="n">query_embedding</span><span class="p">,</span> <span class="s2">"dimension"</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">query</span><span class="o">.</span><span class="n">query_embedding</span><span class="p">),</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="n">query</span><span class="o">.</span><span class="n">similarity_top_k</span><span class="p">,</span> <span class="o">**</span><span class="n">filter_params</span><span class="p">,</span> <span class="p">},</span> <span class="p">)</span> <span class="n">data</span> <span class="o">=</span> <span class="n">data</span> <span class="k">if</span> <span class="n">data</span> <span class="k">else</span> <span class="p">[]</span> <span class="n">nodes</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">scores</span> <span class="o">=</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">record</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span> <span class="n">node</span> <span class="o">=</span> <span class="n">EntityNode</span><span class="p">(</span> <span class="n">name</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="n">record</span><span class="p">[</span><span class="s2">"type"</span><span class="p">],</span> <span class="n">properties</span><span class="o">=</span><span class="n">remove_empty_values</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"properties"</span><span class="p">]),</span> <span class="p">)</span> <span class="n">nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> <span class="n">scores</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">record</span><span class="p">[</span><span class="s2">"score"</span><span class="p">])</span> <span class="k">return</span> <span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">scores</span><span class="p">)</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.delete" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">delete</span> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.delete" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">delete</span><span class="p">(</span><span class="n">entity_names</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">relation_names</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n">dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">ids</span><span class="p">:</span> <span class="n"><span title="typing.Optional">Optional</span></span><span class="p">[</span><span class="n"><span title="typing.List">List</span></span><span class="p">[</span><span class="n">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span> </code></pre></div> <div class="doc doc-contents "> <p>Delete matching data.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/neo4j_property_graph.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">718</span> <span class="normal">719</span> <span class="normal">720</span> <span class="normal">721</span> <span class="normal">722</span> <span class="normal">723</span> <span class="normal">724</span> <span class="normal">725</span> <span class="normal">726</span> <span class="normal">727</span> <span class="normal">728</span> <span class="normal">729</span> <span class="normal">730</span> <span class="normal">731</span> <span class="normal">732</span> <span class="normal">733</span> <span class="normal">734</span> <span class="normal">735</span> <span class="normal">736</span> <span class="normal">737</span> <span class="normal">738</span> <span class="normal">739</span> <span class="normal">740</span> <span class="normal">741</span> <span class="normal">742</span> <span class="normal">743</span> <span class="normal">744</span> <span class="normal">745</span> <span class="normal">746</span> <span class="normal">747</span> <span class="normal">748</span> <span class="normal">749</span> <span class="normal">750</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">delete</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">entity_names</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">relation_names</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">ids</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""Delete matching data."""</span> <span class="k">if</span> <span class="n">entity_names</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="s2">"MATCH (n) WHERE n.name IN $entity_names DETACH DELETE n"</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"entity_names"</span><span class="p">:</span> <span class="n">entity_names</span><span class="p">},</span> <span class="p">)</span> <span class="k">if</span> <span class="n">ids</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span> <span class="s2">"MATCH (n) WHERE n.id IN $ids DETACH DELETE n"</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="p">{</span><span class="s2">"ids"</span><span class="p">:</span> <span class="n">ids</span><span class="p">},</span> <span class="p">)</span> <span class="k">if</span> <span class="n">relation_names</span><span class="p">:</span> <span class="k">for</span> <span class="n">rel</span> <span class="ow">in</span> <span class="n">relation_names</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="sa">f</span><span class="s2">"MATCH ()-[r:`</span><span class="si">{</span><span class="n">rel</span><span class="si">}</span><span class="s2">`]->() DELETE r"</span><span class="p">)</span> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> <span class="n">cypher</span> <span class="o">=</span> <span class="s2">"MATCH (e) WHERE "</span> <span class="n">prop_list</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">params</span> <span class="o">=</span> <span class="p">{}</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">prop</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">properties</span><span class="p">):</span> <span class="n">prop_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"e.`</span><span class="si">{</span><span class="n">prop</span><span class="si">}</span><span class="s2">` = $property_</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="n">params</span><span class="p">[</span><span class="sa">f</span><span class="s2">"property_</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> <span class="o">=</span> <span class="n">properties</span><span class="p">[</span><span class="n">prop</span><span class="p">]</span> <span class="n">cypher</span> <span class="o">+=</span> <span class="s2">" AND "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prop_list</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="n">cypher</span> <span class="o">+</span> <span class="s2">" DETACH DELETE e"</span><span class="p">,</span> <span class="n">param_map</span><span class="o">=</span><span class="n">params</span><span class="p">)</span> </code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id="llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.verify_version" class="doc doc-heading"> <span class="doc doc-object-name doc-function-name">verify_version</span> <a href="#llama_index.graph_stores.neo4j.Neo4jPropertyGraphStore.verify_version" class="headerlink" title="Permanent link">#</a></h3> <div class="doc-signature highlight"><pre><span></span><code><span class="nf">verify_version</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span> </code></pre></div> <div class="doc doc-contents "> <p>Check if the connected Neo4j database version supports vector indexing without specifying embedding dimension.</p> <p>Queries the Neo4j database to retrieve its version and compares it against a target version (5.23.0) that is known to support vector indexing. Raises a ValueError if the connected Neo4j version is not supported.</p> <details class="quote"> <summary>Source code in <code>llama-index-integrations/graph_stores/llama-index-graph-stores-neo4j/llama_index/graph_stores/neo4j/neo4j_property_graph.py</code></summary> <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1073</span> <span class="normal">1074</span> <span class="normal">1075</span> <span class="normal">1076</span> <span class="normal">1077</span> <span class="normal">1078</span> <span class="normal">1079</span> <span class="normal">1080</span> <span class="normal">1081</span> <span class="normal">1082</span> <span class="normal">1083</span> <span class="normal">1084</span> <span class="normal">1085</span> <span class="normal">1086</span> <span class="normal">1087</span> <span class="normal">1088</span> <span class="normal">1089</span> <span class="normal">1090</span> <span class="normal">1091</span> <span class="normal">1092</span> <span class="normal">1093</span> <span class="normal">1094</span> <span class="normal">1095</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span> <span class="nf">verify_version</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> <span class="w"> </span><span class="sd">"""</span> <span class="sd"> Check if the connected Neo4j database version supports vector indexing</span> <span class="sd"> without specifying embedding dimension.</span> <span class="sd"> Queries the Neo4j database to retrieve its version and compares it</span> <span class="sd"> against a target version (5.23.0) that is known to support vector</span> <span class="sd"> indexing. Raises a ValueError if the connected Neo4j version is</span> <span class="sd"> not supported.</span> <span class="sd"> """</span> <span class="n">db_data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">structured_query</span><span class="p">(</span><span class="s2">"CALL dbms.components()"</span><span class="p">)</span> <span class="n">version</span> <span class="o">=</span> <span class="n">db_data</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"versions"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="s2">"aura"</span> <span class="ow">in</span> <span class="n">version</span><span class="p">:</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="o">*</span><span class="nb">map</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="n">version</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"-"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)),</span> <span class="mi">0</span><span class="p">)</span> <span class="k">else</span><span class="p">:</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="n">version</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)))</span> <span class="n">target_version</span> <span class="o">=</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">23</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="k">if</span> <span class="n">version_tuple</span> <span class="o">>=</span> <span class="n">target_version</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_supports_vector_index</span> <span class="o">=</span> <span class="kc">True</span> <span class="k">else</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_supports_vector_index</span> <span class="o">=</span> <span class="kc">False</span> </code></pre></div></td></tr></table></div> </details> </div> </div> </div> </div> </div> </div> </div> </div> </article> </div> <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" > <a href="../nebula/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Nebula"> <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"> <span class="md-footer__direction"> Previous </span> <div class="md-ellipsis"> Nebula </div> </div> </a> <a href="../neptune/" class="md-footer__link md-footer__link--next" aria-label="Next: Neptune"> <div class="md-footer__title"> <span class="md-footer__direction"> Next </span> <div class="md-ellipsis"> Neptune </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> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <readthedocs-flyout position="bottom-left"></readthedocs-flyout> </div> </div> </footer> <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=2b5669c2-eb91-4d0a-81d6-dc7238350598" width="1" height="1" /> </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": ["navigation.instant", "navigation.tabs", "navigation.indexes", "navigation.top", "navigation.footer", "toc.follow", "content.code.copy", "search.suggest", "search.highlight"], "search": "../../../../assets/javascripts/workers/search.f8cc74c7.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.f1b6f286.min.js"></script> <script src="../../../../javascript/runllm.js"></script> <script src="../../../../javascript/algolia.js"></script> </body> </html>