openrag/agents/index.html
2025-11-10 15:39:22 +00:00

58 lines
No EOL
22 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-core-components/agents" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.9.2">
<title data-rh="true">Langflow in OpenRAG | OpenRAG</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="robots" content="noindex, nofollow"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.openr.ag/agents"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Langflow in OpenRAG | OpenRAG"><meta data-rh="true" name="description" content="OpenRAG leverages Langflow&#x27;s Agent component to power the OpenRAG OpenSearch Agent flow."><meta data-rh="true" property="og:description" content="OpenRAG leverages Langflow&#x27;s Agent component to power the OpenRAG OpenSearch Agent flow."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.openr.ag/agents"><link data-rh="true" rel="alternate" href="https://docs.openr.ag/agents" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.openr.ag/agents" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Langflow in OpenRAG","item":"https://docs.openr.ag/agents"}]}</script><link rel="stylesheet" href="/assets/css/styles.66669ecc.css">
<script src="/assets/js/runtime~main.0d7f8afd.js" defer="defer"></script>
<script src="/assets/js/main.cbdacd68.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><link rel="preload" as="image" href="/img/logo-openrag-light.svg"><link rel="preload" as="image" href="/img/logo-openrag-dark.svg"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-openrag-light.svg" alt="OpenRAG Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/logo-openrag-dark.svg" alt="OpenRAG Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div></a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/langflow-ai/openrag" target="_blank" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/"><span title="About OpenRAG" class="linkLabel_WmDU">About OpenRAG</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/install"><span title="Install OpenRAG with TUI" class="linkLabel_WmDU">Install OpenRAG with TUI</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/get-started/docker"><span title="Install OpenRAG containers" class="linkLabel_WmDU">Install OpenRAG containers</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/quickstart"><span title="Quickstart" class="linkLabel_WmDU">Quickstart</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" href="/agents"><span title="Langflow in OpenRAG" class="linkLabel_WmDU">Langflow in OpenRAG</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/knowledge"><span title="OpenSearch in OpenRAG" class="linkLabel_WmDU">OpenSearch in OpenRAG</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/ingestion"><span title="Docling in OpenRAG" class="linkLabel_WmDU">Docling in OpenRAG</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/reference/configuration"><span title="Environment variables" class="linkLabel_WmDU">Environment variables</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/support/troubleshoot"><span title="Troubleshooting" class="linkLabel_WmDU">Troubleshooting</span></a></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Langflow in OpenRAG</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Langflow in OpenRAG</h1></header><p>OpenRAG leverages Langflow&#x27;s Agent component to power the OpenRAG OpenSearch Agent flow.</p>
<p><a href="https://docs.langflow.org/concepts-overview" target="_blank" rel="noopener noreferrer" class="">Flows</a> in Langflow are functional representations of application workflows, with multiple <a href="https://docs.langflow.org/concepts-components" target="_blank" rel="noopener noreferrer" class="">component</a> nodes connected as single steps in a workflow.</p>
<p>In the OpenRAG OpenSearch Agent flow, components like the Langflow <a href="https://docs.langflow.org/agents" target="_blank" rel="noopener noreferrer" class=""><strong>Agent</strong> component</a> and <a href="https://docs.langflow.org/bundles-elastic#opensearch" target="_blank" rel="noopener noreferrer" class=""><strong>OpenSearch</strong> component</a> are connected to intelligently chat with your knowledge by embedding your query, comparing it the vector database embeddings, and generating a response with the LLM.</p>
<p><img decoding="async" loading="lazy" alt="OpenRAG Open Search Agent Flow" src="/assets/images/opensearch-agent-flow-f3b279e02425cd043002eb7749067108.png" width="4084" height="2176" class="img_ev3q"></p>
<p>The Agent component shines here in its ability to make decisions on not only what query should be sent, but when a query is necessary to solve the problem at hand.</p>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>How do agents work?</summary><div><div class="collapsibleContent_i85q"><p>Agents extend Large Language Models (LLMs) by integrating tools, which are functions that provide additional context and enable autonomous task execution. These integrations make agents more specialized and powerful than standalone LLMs.</p><p>Whereas an LLM might generate acceptable, inert responses to general queries and tasks, an agent can leverage the integrated context and tools to provide more relevant responses and even take action. For example, you might create an agent that can access your company&#x27;s documentation, repositories, and other resources to help your team with tasks that require knowledge of your specific products, customers, and code.</p><p>Agents use LLMs as a reasoning engine to process input, determine which actions to take to address the query, and then generate a response. The response could be a typical text-based LLM response, or it could involve an action, like editing a file, running a script, or calling an external API.</p><p>In an agentic context, tools are functions that the agent can run to perform tasks or access external resources. A function is wrapped as a Tool object with a common interface that the agent understands. Agents become aware of tools through tool registration, which is when the agent is provided a list of available tools typically at agent initialization. The Tool object&#x27;s description tells the agent what the tool can do so that it can decide whether the tool is appropriate for a given request.</p></div></div></details>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow">Use the OpenRAG OpenSearch Agent flow<a href="#flow" class="hash-link" aria-label="Direct link to Use the OpenRAG OpenSearch Agent flow" title="Direct link to Use the OpenRAG OpenSearch Agent flow" translate="no"></a></h2>
<p>If you&#x27;ve chatted with your knowledge in OpenRAG, you&#x27;ve already experienced the OpenRAG OpenSearch Agent chat flow.
To switch OpenRAG over to the <a href="https://docs.langflow.org/concepts-overview" target="_blank" rel="noopener noreferrer" class="">Langflow visual editor</a> and view the OpenRAG OpenSearch Agentflow, click <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings2 lucide-settings-2" aria-hidden="true"><path d="M14 17H5"></path><path d="M19 7h-9"></path><circle cx="17" cy="17" r="3"></circle><circle cx="7" cy="7" r="3"></circle></svg> <strong>Settings</strong>, and then click <strong>Edit in Langflow</strong>.
This flow contains eight components connected together to chat with your data:</p>
<ul>
<li class="">The <a href="https://docs.langflow.org/agents" target="_blank" rel="noopener noreferrer" class=""><strong>Agent</strong> component</a> orchestrates the entire flow by deciding when to search the knowledge base, how to formulate search queries, and how to combine retrieved information with the user&#x27;s question to generate a comprehensive response.
The <strong>Agent</strong> behaves according to the prompt in the <strong>Agent Instructions</strong> field.</li>
<li class="">The <a href="https://docs.langflow.org/components-io" target="_blank" rel="noopener noreferrer" class=""><strong>Chat Input</strong> component</a> is connected to the Agent component&#x27;s Input port. This allows to flow to be triggered by an incoming prompt from a user or application.</li>
<li class="">The <a href="https://docs.langflow.org/bundles-elastic#opensearch" target="_blank" rel="noopener noreferrer" class=""><strong>OpenSearch</strong> component</a> is connected to the Agent component&#x27;s Tools port. The agent may not use this database for every request; the agent only uses this connection if it decides the knowledge can help respond to the prompt.</li>
<li class="">The <a href="https://docs.langflow.org/components-models" target="_blank" rel="noopener noreferrer" class=""><strong>Language Model</strong> component</a> is connected to the Agent component&#x27;s Language Model port. The agent uses the connected LLM to reason through the request sent through Chat Input.</li>
<li class="">The <a href="https://docs.langflow.org/components-embedding-models" target="_blank" rel="noopener noreferrer" class=""><strong>Embedding Model</strong> component</a> is connected to the OpenSearch component&#x27;s Embedding port. This component converts text queries into vector representations that are compared with document embeddings stored in OpenSearch for semantic similarity matching. This gives your Agent&#x27;s queries context.</li>
<li class="">The <a href="https://docs.langflow.org/components-io" target="_blank" rel="noopener noreferrer" class=""><strong>Text Input</strong> component</a> is populated with the global variable <code>OPENRAG-QUERY-FILTER</code>.
This filter is the <a class="" href="/knowledge#create-knowledge-filters">Knowledge filter</a>, and filters which knowledge sources to search through.</li>
<li class="">The <strong>Agent</strong> component&#x27;s Output port is connected to the <a href="https://docs.langflow.org/components-io" target="_blank" rel="noopener noreferrer" class=""><strong>Chat Output</strong> component</a>, which returns the final response to the user or application.</li>
<li class="">An <a href="https://docs.langflow.org/mcp-client" target="_blank" rel="noopener noreferrer" class=""><strong>MCP Tools</strong> component</a> is connected to the Agent&#x27;s <strong>Tools</strong> port. This component calls the <a class="" href="/ingestion#url-flow">OpenSearch URL Ingestion flow</a>, which Langflow uses as an MCP server to fetch content from URLs and store in OpenSearch.</li>
</ul>
<p>All flows included with OpenRAG are designed to be modular, performant, and provider-agnostic.
To modify a flow, click <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings2 lucide-settings-2" aria-hidden="true"><path d="M14 17H5"></path><path d="M19 7h-9"></path><circle cx="17" cy="17" r="3"></circle><circle cx="7" cy="7" r="3"></circle></svg> <strong>Settings</strong>, and click <strong>Edit in Langflow</strong>.
OpenRAG&#x27;s visual editor is based on the <a href="https://docs.langflow.org/concepts-overview" target="_blank" rel="noopener noreferrer" class="">Langflow visual editor</a>, so you can edit your flows to match your specific use case.</p>
<p>For an example of changing out the agent&#x27;s language model in OpenRAG, see the <a class="" href="/quickstart#change-components">Quickstart</a>.</p>
<p>To restore the flow to its initial state, in OpenRAG, click <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings2 lucide-settings-2" aria-hidden="true"><path d="M14 17H5"></path><path d="M19 7h-9"></path><circle cx="17" cy="17" r="3"></circle><circle cx="7" cy="7" r="3"></circle></svg> <strong>Settings</strong>, and then click <strong>Restore Flow</strong>.
OpenRAG warns you that this discards all custom settings. Click <strong>Restore</strong> to restore the flow.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="additional-langflow-functionality">Additional Langflow functionality<a href="#additional-langflow-functionality" class="hash-link" aria-label="Direct link to Additional Langflow functionality" title="Direct link to Additional Langflow functionality" translate="no"></a></h2>
<p>Langflow includes features beyond Agents to help you integrate OpenRAG into your application, and all Langflow features are included in OpenRAG.</p>
<ul>
<li class="">
<p>Langflow can serve your flows as an <a href="https://docs.langflow.org/mcp-server" target="_blank" rel="noopener noreferrer" class="">MCP server</a>, or consume other MCP servers as an <a href="https://docs.langflow.org/mcp-client" target="_blank" rel="noopener noreferrer" class="">MCP client</a>. Get started with the <a href="https://docs.langflow.org/mcp-tutorial" target="_blank" rel="noopener noreferrer" class="">MCP tutorial</a>.</p>
</li>
<li class="">
<p>If you don&#x27;t see the component you need, extend Langflow&#x27;s functionality by creating <a href="https://docs.langflow.org/components-custom-components" target="_blank" rel="noopener noreferrer" class="">custom Python components</a>.</p>
</li>
<li class="">
<p>Langflow offers component <a href="https://docs.langflow.org/components-bundle-components" target="_blank" rel="noopener noreferrer" class="">bundles</a> to integrate with many popular vector stores, AI/ML providers, and search APIs.</p>
</li>
</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_WFHX"><a href="https://github.com/openrag/openrag/tree/main/docs/docs/core-components/agents.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/quickstart"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Quickstart</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/knowledge"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">OpenSearch in OpenRAG</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#flow" class="table-of-contents__link toc-highlight">Use the OpenRAG OpenSearch Agent flow</a></li><li><a href="#additional-langflow-functionality" class="table-of-contents__link toc-highlight">Additional Langflow functionality</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><div class="footer-links">
<span>© 2025 OpenRAG</span>
</div></li></ul></div></div></div></footer></div>
</body>
</html>