<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Cradicle Explorer</title>
    <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet">
    <style>
      .form-control-dark::placeholder {
          color: #aaa;
          opacity: 1;
      }
    </style>
    <link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
    <link rel="icon" type="image/png" href="/favicon.png">


                <link href="/css/dashboard.css" rel="stylesheet">
                </head>
                <body>
                <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
                  <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="/">Cradicle Explorer</a>
                  <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                  </button>
                  <form method="get" action="/cgi-bin/main" style="width:100%;"><input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" name="q" placeholder="Search repos" aria-label="Search"></form>
                  <div class="navbar-nav flex-row">
                    <div class="nav-item text-nowrap">
                      <a class="nav-link px-3 active" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn">ai-llm-frameworks-haystack</a>
                    </div>
                  </div>
                </header>
                <div class="container-fluid">
                  <div class="row">
                    <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-dark sidebar collapse">
                      <div class="position-sticky pt-3 sidebar-sticky">
                        <ul class="nav flex-column">
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn">
                              <i class="align-text-bottom fa-solid fa-info"></i>
                              Info
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&issue=list">
                              <i class="align-text-bottom fa-solid fa-layer-group"></i>
                              Issues
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&patch=list">
                              <i class="align-text-bottom fa-solid fa-vest-patches"></i>
                              Patches
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&wallet=list">
                              <i class="align-text-bottom fa-solid fa-wallet"></i>
                              Wallets
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link active" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=.">
                              <i class="align-text-bottom fa-solid fa-code"></i>
                              Source
                            </a>
                          </li>
                        <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase">
                          <span></span>
                        </h6>
                        <ul class="nav flex-column mb-2">
                        
    <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-1 mb-1 text-muted text-uppercase">
      <span>Source</span>
    </h6>
    <li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=.github"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .github</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docker"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> docker</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> docs-website</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fapi"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> api</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> docs</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2F_templates"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> _templates</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fconcepts"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> concepts</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fdevelopment"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> development</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fdocument-stores"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> document-stores</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Foptimization"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> optimization</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Foverview"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> overview</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> pipeline-components</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fagents-1"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> agents-1</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Faudio"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> audio</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fbuilders"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> builders</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fcaching"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> caching</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fclassifiers"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> classifiers</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fconnectors"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> connectors</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fconverters"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> converters</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fdownloaders"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> downloaders</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fembedders"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> embedders</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fevaluators"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> evaluators</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fextractors"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> extractors</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Ffetchers"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> fetchers</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fgenerators"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> generators</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fjoiners"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> joiners</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fpreprocessors"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> preprocessors</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fquery"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> query</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Frankers"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> rankers</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Freaders"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> readers</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fretrievers"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> retrievers</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Frouters"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> routers</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Frouters%2Fconditionalrouter.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> conditionalrouter.mdx</a></li><li><a class="nav-link py-0 active" style="padding-left:80px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Frouters%2Fdocumentlengthrouter.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> documentlengthrouter.mdx</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Frouters%2Fdocumenttyperouter.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> documenttyperouter.mdx</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Frouters%2Ffiletyperouter.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> filetyperouter.mdx</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Frouters%2Fllmmessagesrouter.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> llmmessagesrouter.mdx</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Frouters%2Fmetadatarouter.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> metadatarouter.mdx</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Frouters%2Ftextlanguagerouter.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> textlanguagerouter.mdx</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Frouters%2Ftransformerstextrouter.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> transformerstextrouter.mdx</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Frouters%2Ftransformerszeroshottextrouter.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> transformerszeroshottextrouter.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fsamplers"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> samplers</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Ftools"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> tools</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Ftranslators"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> translators</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fvalidators"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> validators</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fwebsearch"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> websearch</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Fwriters"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> writers</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Faudio.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> audio.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fbuilders.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> builders.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fclassifiers.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> classifiers.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fconnectors.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> connectors.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fconverters.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> converters.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fembedders.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> embedders.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fevaluators.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> evaluators.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fextractors.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> extractors.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Ffetchers.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> fetchers.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fgenerators.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> generators.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fjoiners.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> joiners.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fpreprocessors.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> preprocessors.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Frankers.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> rankers.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Freaders.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> readers.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fretrievers.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> retrievers.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Frouters.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> routers.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fpipeline-components%2Fwebsearch.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> websearch.mdx</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Ftools"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> tools</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocs%2Fintro.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> intro.mdx</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fplugins"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> plugins</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Freference"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> reference</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Freference_versioned_docs"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> reference_versioned_docs</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Freference_versioned_sidebars"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> reference_versioned_sidebars</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fscripts"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> scripts</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fsrc"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> src</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fstatic"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> static</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fversioned_docs"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> versioned_docs</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fversioned_sidebars"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> versioned_sidebars</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2F.gitattributes"><i class="fa-solid fa-file" style="color:#888;"></i> .gitattributes</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2F.gitignore"><i class="fa-solid fa-file" style="color:#888;"></i> .gitignore</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2FCONTRIBUTING.md"><i class="fa-solid fa-file" style="color:#888;"></i> CONTRIBUTING.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2FREADME.md"><i class="fa-solid fa-file" style="color:#888;"></i> README.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fdocusaurus.config.js"><i class="fa-solid fa-file" style="color:#888;"></i> docusaurus.config.js</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fpackage.json"><i class="fa-solid fa-file" style="color:#888;"></i> package.json</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Freference-sidebars.js"><i class="fa-solid fa-file" style="color:#888;"></i> reference-sidebars.js</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Freference_versions.json"><i class="fa-solid fa-file" style="color:#888;"></i> reference_versions.json</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fsidebars.js"><i class="fa-solid fa-file" style="color:#888;"></i> sidebars.js</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fvercel.json"><i class="fa-solid fa-file" style="color:#888;"></i> vercel.json</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=docs-website%2Fversions.json"><i class="fa-solid fa-file" style="color:#888;"></i> versions.json</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=e2e"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> e2e</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=examples"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> examples</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=haystack"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> haystack</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=images"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> images</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=pydoc"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> pydoc</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=releasenotes"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> releasenotes</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=scripts"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> scripts</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=test"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> test</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=.gitignore"><i class="fa-solid fa-file" style="color:#888;"></i> .gitignore</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=.pre-commit-config.yaml"><i class="fa-solid fa-file" style="color:#888;"></i> .pre-commit-config.yaml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=AGENTS.md"><i class="fa-solid fa-file" style="color:#888;"></i> AGENTS.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=CITATION.cff"><i class="fa-solid fa-file" style="color:#888;"></i> CITATION.cff</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=CLAUDE.md"><i class="fa-solid fa-file" style="color:#888;"></i> CLAUDE.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=CONTRIBUTING.md"><i class="fa-solid fa-file" style="color:#888;"></i> CONTRIBUTING.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=LICENSE"><i class="fa-solid fa-file" style="color:#888;"></i> LICENSE</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=README.md"><i class="fa-solid fa-file" style="color:#888;"></i> README.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=SECURITY.md"><i class="fa-solid fa-file" style="color:#888;"></i> SECURITY.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=VERSION.txt"><i class="fa-solid fa-file" style="color:#888;"></i> VERSION.txt</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=code_of_conduct.txt"><i class="fa-solid fa-file" style="color:#888;"></i> code_of_conduct.txt</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=license-header.txt"><i class="fa-solid fa-file" style="color:#888;"></i> license-header.txt</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=licenserc.toml"><i class="fa-solid fa-file" style="color:#888;"></i> licenserc.toml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&file=pyproject.toml"><i class="fa-solid fa-file" style="color:#888;"></i> pyproject.toml</a></li>
    
                        </ul>
                      </div>
                    </nav>
                <main class="col-md-9 ms-sm-auto col-lg-10">
                  <div class="container px-1 py-3">
        
<div class="mb-2" style="font-size:1.1rem;"><a href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=.">/</a> <a href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website">docs-website</a> / <a href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs">docs</a> / <a href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components">pipeline-components</a> / <a href="/cgi-bin/repo?id=zTi14k6zGh5QJwhnY6uZk3xfNTvn&source=docs-website%2Fdocs%2Fpipeline-components%2Frouters">routers</a> / documentlengthrouter.mdx</div>
        <div class="list-group">
        <div class="list-group-item">
        <div class="mb-2" style="font-weight:bold;"><i class="fa-solid fa-file"></i> documentlengthrouter.mdx</div>
        <pre style="margin:0; font-size:0.85rem; overflow-x:auto; color:#fafafa;"><span style="color:#666; user-select:none;">  1</span>  ---
<span style="color:#666; user-select:none;">  2</span>  title: &quot;DocumentLengthRouter&quot;
<span style="color:#666; user-select:none;">  3</span>  id: documentlengthrouter
<span style="color:#666; user-select:none;">  4</span>  slug: &quot;/documentlengthrouter&quot;
<span style="color:#666; user-select:none;">  5</span>  description: &quot;Routes documents to different output connections based on the length of their `content` field.&quot;
<span style="color:#666; user-select:none;">  6</span>  ---
<span style="color:#666; user-select:none;">  7</span>  
<span style="color:#666; user-select:none;">  8</span>  # DocumentLengthRouter
<span style="color:#666; user-select:none;">  9</span>  
<span style="color:#666; user-select:none;"> 10</span>  Routes documents to different output connections based on the length of their `content` field.
<span style="color:#666; user-select:none;"> 11</span>  
<span style="color:#666; user-select:none;"> 12</span>  &lt;div className=&quot;key-value-table&quot;&gt;
<span style="color:#666; user-select:none;"> 13</span>  
<span style="color:#666; user-select:none;"> 14</span>  |  |  |
<span style="color:#666; user-select:none;"> 15</span>  | --- | --- |
<span style="color:#666; user-select:none;"> 16</span>  | **Most common position in a pipeline** | Flexible |
<span style="color:#666; user-select:none;"> 17</span>  | **Mandatory run variables** | `documents`: A list of documents |
<span style="color:#666; user-select:none;"> 18</span>  | **Output variables** | `short_documents`: A list of documents where `content` is None or the length of `content` is less than or equal to the threshold.  &lt;br /&gt; &lt;br /&gt;`long_documents`: A list of documents where the length of `content` is greater than the threshold. |
<span style="color:#666; user-select:none;"> 19</span>  | **API reference** | [Routers](/reference/routers-api) |
<span style="color:#666; user-select:none;"> 20</span>  | **GitHub link** | https://github.com/deepset-ai/haystack/blob/main/haystack/components/routers/document_length_router.py |
<span style="color:#666; user-select:none;"> 21</span>  
<span style="color:#666; user-select:none;"> 22</span>  &lt;/div&gt;
<span style="color:#666; user-select:none;"> 23</span>  
<span style="color:#666; user-select:none;"> 24</span>  ## Overview
<span style="color:#666; user-select:none;"> 25</span>  
<span style="color:#666; user-select:none;"> 26</span>  `DocumentLengthRouter` routes documents to different output connections based on the length of their `content` field.
<span style="color:#666; user-select:none;"> 27</span>  
<span style="color:#666; user-select:none;"> 28</span>  It allows to set a `threshold` init parameter. Documents where `content` is None, or the length of `content` is less than or equal to the threshold are routed to &quot;short_documents&quot;. Others are routed to &quot;long_documents&quot;.
<span style="color:#666; user-select:none;"> 29</span>  
<span style="color:#666; user-select:none;"> 30</span>  A common use case for `DocumentLengthRouter` is handling documents obtained from PDFs that contain non-text content, such as scanned pages or images. This component can detect empty or low-content documents and route them to components that perform OCR, generate captions, or compute image embeddings.
<span style="color:#666; user-select:none;"> 31</span>  
<span style="color:#666; user-select:none;"> 32</span>  ## Usage
<span style="color:#666; user-select:none;"> 33</span>  
<span style="color:#666; user-select:none;"> 34</span>  ### On its own
<span style="color:#666; user-select:none;"> 35</span>  
<span style="color:#666; user-select:none;"> 36</span>  ```python
<span style="color:#666; user-select:none;"> 37</span>  from haystack.components.routers import DocumentLengthRouter
<span style="color:#666; user-select:none;"> 38</span>  from haystack.dataclasses import Document
<span style="color:#666; user-select:none;"> 39</span>  
<span style="color:#666; user-select:none;"> 40</span>  docs = [
<span style="color:#666; user-select:none;"> 41</span>      Document(content=&quot;Short&quot;),
<span style="color:#666; user-select:none;"> 42</span>      Document(content=&quot;Long document &quot; * 20),
<span style="color:#666; user-select:none;"> 43</span>  ]
<span style="color:#666; user-select:none;"> 44</span>  
<span style="color:#666; user-select:none;"> 45</span>  router = DocumentLengthRouter(threshold=10)
<span style="color:#666; user-select:none;"> 46</span>  
<span style="color:#666; user-select:none;"> 47</span>  result = router.run(documents=docs)
<span style="color:#666; user-select:none;"> 48</span>  print(result)
<span style="color:#666; user-select:none;"> 49</span>  
<span style="color:#666; user-select:none;"> 50</span>  ## {
<span style="color:#666; user-select:none;"> 51</span>  ## &quot;short_documents&quot;: [Document(content=&quot;Short&quot;, ...)],
<span style="color:#666; user-select:none;"> 52</span>  ## &quot;long_documents&quot;: [Document(content=&quot;Long document ...&quot;, ...)],
<span style="color:#666; user-select:none;"> 53</span>  ## }
<span style="color:#666; user-select:none;"> 54</span>  ```
<span style="color:#666; user-select:none;"> 55</span>  
<span style="color:#666; user-select:none;"> 56</span>  ### In a pipeline
<span style="color:#666; user-select:none;"> 57</span>  
<span style="color:#666; user-select:none;"> 58</span>  In the following indexing pipeline, the `PyPDFToDocument` Converter extracts text from PDF files.
<span style="color:#666; user-select:none;"> 59</span>  Documents are then split by pages using a `DocumentSplitter`.
<span style="color:#666; user-select:none;"> 60</span>  Next, the `DocumentLengthRouter` routes short documents to `LLMDocumentContentExtractor` to extract text, which is particularly useful for non-textual, image-based pages.
<span style="color:#666; user-select:none;"> 61</span>  Finally, all documents are sent to the `DocumentWriter` and written to the Document Store.
<span style="color:#666; user-select:none;"> 62</span>  
<span style="color:#666; user-select:none;"> 63</span>  ```python
<span style="color:#666; user-select:none;"> 64</span>  from haystack import Pipeline
<span style="color:#666; user-select:none;"> 65</span>  from haystack.components.converters import PyPDFToDocument
<span style="color:#666; user-select:none;"> 66</span>  from haystack.components.extractors.image import LLMDocumentContentExtractor
<span style="color:#666; user-select:none;"> 67</span>  from haystack.components.generators.chat import OpenAIChatGenerator
<span style="color:#666; user-select:none;"> 68</span>  from haystack.components.preprocessors import DocumentSplitter
<span style="color:#666; user-select:none;"> 69</span>  from haystack.components.routers import DocumentLengthRouter
<span style="color:#666; user-select:none;"> 70</span>  from haystack.components.writers import DocumentWriter
<span style="color:#666; user-select:none;"> 71</span>  from haystack.document_stores.in_memory import InMemoryDocumentStore
<span style="color:#666; user-select:none;"> 72</span>  
<span style="color:#666; user-select:none;"> 73</span>  document_store = InMemoryDocumentStore()
<span style="color:#666; user-select:none;"> 74</span>  
<span style="color:#666; user-select:none;"> 75</span>  indexing_pipe = Pipeline()
<span style="color:#666; user-select:none;"> 76</span>  indexing_pipe.add_component(&quot;pdf_converter&quot;, PyPDFToDocument(store_full_path=True))
<span style="color:#666; user-select:none;"> 77</span>  ## setting skip_empty_documents=False is important here because the
<span style="color:#666; user-select:none;"> 78</span>  ## LLMDocumentContentExtractor can extract text from non-textual documents
<span style="color:#666; user-select:none;"> 79</span>  ## that otherwise would be skipped
<span style="color:#666; user-select:none;"> 80</span>  indexing_pipe.add_component(
<span style="color:#666; user-select:none;"> 81</span>      &quot;pdf_splitter&quot;,
<span style="color:#666; user-select:none;"> 82</span>      DocumentSplitter(split_by=&quot;page&quot;, split_length=1, skip_empty_documents=False),
<span style="color:#666; user-select:none;"> 83</span>  )
<span style="color:#666; user-select:none;"> 84</span>  indexing_pipe.add_component(&quot;doc_length_router&quot;, DocumentLengthRouter(threshold=10))
<span style="color:#666; user-select:none;"> 85</span>  indexing_pipe.add_component(
<span style="color:#666; user-select:none;"> 86</span>      &quot;content_extractor&quot;,
<span style="color:#666; user-select:none;"> 87</span>      LLMDocumentContentExtractor(
<span style="color:#666; user-select:none;"> 88</span>          chat_generator=OpenAIChatGenerator(model=&quot;gpt-4.1-mini&quot;),
<span style="color:#666; user-select:none;"> 89</span>      ),
<span style="color:#666; user-select:none;"> 90</span>  )
<span style="color:#666; user-select:none;"> 91</span>  indexing_pipe.add_component(
<span style="color:#666; user-select:none;"> 92</span>      &quot;document_writer&quot;,
<span style="color:#666; user-select:none;"> 93</span>      DocumentWriter(document_store=document_store),
<span style="color:#666; user-select:none;"> 94</span>  )
<span style="color:#666; user-select:none;"> 95</span>  
<span style="color:#666; user-select:none;"> 96</span>  indexing_pipe.connect(&quot;pdf_converter.documents&quot;, &quot;pdf_splitter.documents&quot;)
<span style="color:#666; user-select:none;"> 97</span>  indexing_pipe.connect(&quot;pdf_splitter.documents&quot;, &quot;doc_length_router.documents&quot;)
<span style="color:#666; user-select:none;"> 98</span>  ## The short PDF pages will be enriched/captioned
<span style="color:#666; user-select:none;"> 99</span>  indexing_pipe.connect(
<span style="color:#666; user-select:none;">100</span>      &quot;doc_length_router.short_documents&quot;,
<span style="color:#666; user-select:none;">101</span>      &quot;content_extractor.documents&quot;,
<span style="color:#666; user-select:none;">102</span>  )
<span style="color:#666; user-select:none;">103</span>  indexing_pipe.connect(&quot;doc_length_router.long_documents&quot;, &quot;document_writer.documents&quot;)
<span style="color:#666; user-select:none;">104</span>  indexing_pipe.connect(&quot;content_extractor.documents&quot;, &quot;document_writer.documents&quot;)
<span style="color:#666; user-select:none;">105</span>  
<span style="color:#666; user-select:none;">106</span>  ## Run the indexing pipeline with sources
<span style="color:#666; user-select:none;">107</span>  indexing_result = indexing_pipe.run(
<span style="color:#666; user-select:none;">108</span>      data={&quot;sources&quot;: [&quot;textual_pdf.pdf&quot;, &quot;non_textual_pdf.pdf&quot;]},
<span style="color:#666; user-select:none;">109</span>  )
<span style="color:#666; user-select:none;">110</span>  
<span style="color:#666; user-select:none;">111</span>  ## Inspect the documents
<span style="color:#666; user-select:none;">112</span>  indexed_documents = document_store.filter_documents()
<span style="color:#666; user-select:none;">113</span>  print(f&quot;Indexed {len(indexed_documents)} documents:\n&quot;)
<span style="color:#666; user-select:none;">114</span>  for doc in indexed_documents:
<span style="color:#666; user-select:none;">115</span>      print(&quot;file_path: &quot;, doc.meta[&quot;file_path&quot;])
<span style="color:#666; user-select:none;">116</span>      print(&quot;page_number: &quot;, doc.meta[&quot;page_number&quot;])
<span style="color:#666; user-select:none;">117</span>      print(&quot;content: &quot;, doc.content)
<span style="color:#666; user-select:none;">118</span>      print(&quot;-&quot; * 100 + &quot;\n&quot;)
<span style="color:#666; user-select:none;">119</span>  
<span style="color:#666; user-select:none;">120</span>  ## Indexed 3 documents:
<span style="color:#666; user-select:none;">121</span>  ##
<span style="color:#666; user-select:none;">122</span>  ## file_path:  textual_pdf.pdf
<span style="color:#666; user-select:none;">123</span>  ## page_number:  1
<span style="color:#666; user-select:none;">124</span>  ## content:  A sample PDF ﬁle...
<span style="color:#666; user-select:none;">125</span>  ## ----------------------------------------------------------------------------------------------------
<span style="color:#666; user-select:none;">126</span>  ##
<span style="color:#666; user-select:none;">127</span>  ## file_path:  textual_pdf.pdf
<span style="color:#666; user-select:none;">128</span>  ## page_number:  2
<span style="color:#666; user-select:none;">129</span>  ## content:  Page 2 of Sample PDF...
<span style="color:#666; user-select:none;">130</span>  ## ----------------------------------------------------------------------------------------------------
<span style="color:#666; user-select:none;">131</span>  ##
<span style="color:#666; user-select:none;">132</span>  ## file_path:  non_textual_pdf.pdf
<span style="color:#666; user-select:none;">133</span>  ## page_number:  1
<span style="color:#666; user-select:none;">134</span>  ## content:  Content extracted from non-textual PDF using a LLM...
<span style="color:#666; user-select:none;">135</span>  ## ----------------------------------------------------------------------------------------------------
<span style="color:#666; user-select:none;">136</span>  ```
</pre>
        </div>
        </div>

</div>
</main>
</div>
</div>


</body>
</html>

