<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Document Retrieval on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/document-retrieval/</link>
        <description>Recent content in Document Retrieval on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Wed, 20 May 2026 23:51:37 +0800</lastBuildDate><atom:link href="https://knightli.com/es/tags/document-retrieval/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Qué es PageIndex: un índice documental RAG basado en razonamiento sin bases vectoriales</title>
        <link>https://knightli.com/es/2026/05/20/vectifyai-pageindex-vectorless-rag/</link>
        <pubDate>Wed, 20 May 2026 23:51:37 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/20/vectifyai-pageindex-vectorless-rag/</guid>
        <description>&lt;p&gt;&lt;code&gt;VectifyAI/PageIndex&lt;/code&gt; es un proyecto RAG interesante. No parte de &amp;ldquo;crear otra base de datos vectorial&amp;rdquo;, sino que primero organiza documentos largos en una estructura de árbol similar a una tabla de contenidos, y luego deja que un LLM haga recuperación basada en razonamiento siguiendo ese árbol.&lt;/p&gt;
&lt;p&gt;Proyecto: &lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/PageIndex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/PageIndex&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En el momento de preparar este artículo, la página de GitHub muestra unas 31.8k stars y 2.7k forks, con licencia MIT. El README lo define como &lt;code&gt;Vectorless, Reasoning-based RAG&lt;/code&gt;: RAG sin base vectorial y basado en razonamiento.&lt;/p&gt;
&lt;h2 id=&#34;qué-problema-intenta-resolver&#34;&gt;Qué problema intenta resolver
&lt;/h2&gt;&lt;p&gt;El flujo común del RAG tradicional es: dividir en chunks, vectorizar, escribir en una base de datos vectorial y recuperar fragmentos mediante búsqueda por similitud. Es un enfoque simple, general y maduro, pero en documentos profesionales largos suele encontrar varios problemas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La similitud no equivale a relevancia real.&lt;/li&gt;
&lt;li&gt;La estructura del documento se rompe por el chunking, y se pierden relaciones entre secciones.&lt;/li&gt;
&lt;li&gt;Los resultados de recuperación tienen poca explicabilidad; cuesta explicar por qué se eligió ese fragmento.&lt;/li&gt;
&lt;li&gt;En informes financieros, documentos regulatorios, textos legales o manuales técnicos, las preguntas suelen requerir razonamiento entre secciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La idea de PageIndex es la inversa: primero organizar el documento como un árbol semántico, y después hacer que el modelo busque como una persona que lee el índice, entra en capítulos y localiza información por niveles.&lt;/p&gt;
&lt;h2 id=&#34;flujo-básico-de-pageindex&#34;&gt;Flujo básico de PageIndex
&lt;/h2&gt;&lt;p&gt;El README divide la recuperación de PageIndex en dos pasos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Generar para el documento un índice en árbol parecido a &lt;code&gt;Table-of-Contents&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Hacer reasoning-based retrieval mediante búsqueda en árbol.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Este árbol no es un simple directorio de archivos, sino una estructura documental pensada para LLMs. Los nodos pueden incluir títulos, rangos de páginas, resúmenes, nodos hijos y otros datos. Así, al responder una pregunta, el modelo no tiene que enfrentarse de entrada a una gran cantidad de chunks sueltos; primero puede decidir a qué sección entrar y luego seguir buscando hacia abajo.&lt;/p&gt;
&lt;p&gt;Este enfoque encaja mejor con documentos bien estructurados pero muy largos, como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Informes financieros y SEC filings.&lt;/li&gt;
&lt;li&gt;Material regulatorio y documentos de cumplimiento.&lt;/li&gt;
&lt;li&gt;Libros académicos y papers.&lt;/li&gt;
&lt;li&gt;Documentos legales.&lt;/li&gt;
&lt;li&gt;Manuales técnicos y documentación de producto.&lt;/li&gt;
&lt;li&gt;PDFs grandes que superan la ventana de contexto del modelo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;diferencias-con-el-rag-vectorial-tradicional&#34;&gt;Diferencias con el RAG vectorial tradicional
&lt;/h2&gt;&lt;p&gt;Los principales puntos de PageIndex se pueden resumir en cinco.&lt;/p&gt;
&lt;p&gt;Primero, no necesita Vector DB. Usa estructura documental y razonamiento del LLM para localizar contenido, en lugar de depender solo de búsqueda por similitud vectorial.&lt;/p&gt;
&lt;p&gt;Segundo, no usa chunking tradicional. Los documentos se organizan por secciones naturales, no por fragmentos de longitud fija.&lt;/p&gt;
&lt;p&gt;Tercero, ofrece mejor explicabilidad. La ruta de recuperación puede asociarse con páginas, secciones y nodos del árbol, lo que es más fácil de rastrear que &amp;ldquo;este texto fue encontrado por similitud vectorial&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Cuarto, la recuperación es sensible al contexto. La pregunta, el historial de conversación y el conocimiento del dominio pueden influir en la ruta de búsqueda por árbol.&lt;/p&gt;
&lt;p&gt;Quinto, se parece más a cómo los expertos humanos leen documentos. Normalmente no cortamos un documento entero en trozos para calcular similitud; primero revisamos el índice, ubicamos capítulos y luego leemos detalles.&lt;/p&gt;
&lt;p&gt;Esto no significa que las bases vectoriales no tengan valor. Una forma más precisa de verlo es que PageIndex encaja en escenarios donde &amp;ldquo;la similitud semántica no basta y se necesita estructura más razonamiento&amp;rdquo; para recuperar información en documentos largos.&lt;/p&gt;
&lt;h2 id=&#34;cómo-ejecutarlo-localmente&#34;&gt;Cómo ejecutarlo localmente
&lt;/h2&gt;&lt;p&gt;El README ofrece una ruta de autoalojamiento local. Primero instala dependencias:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip3 install --upgrade -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Después crea un archivo &lt;code&gt;.env&lt;/code&gt; en la raíz del proyecto y escribe la LLM API key. El proyecto admite múltiples modelos mediante &lt;code&gt;LiteLLM&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_openai_key_here
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Genera la estructura PageIndex para un PDF:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 run_pageindex.py --pdf_path /path/to/your/document.pdf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;También puede procesar Markdown:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 run_pageindex.py --md_path /path/to/your/document.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Parámetros opcionales habituales:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--model
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--toc-check-pages
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--max-pages-per-node
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--max-tokens-per-node
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--if-add-node-id
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--if-add-node-summary
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--if-add-doc-description
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El README también advierte que la versión local de código abierto usa parsing PDF estándar. Para PDFs complejos, el servicio cloud del proyecto ofrece OCR mejorado, construcción de árbol y flujo de recuperación.&lt;/p&gt;
&lt;h2 id=&#34;ejemplo-de-agentic-vectorless-rag&#34;&gt;Ejemplo de Agentic Vectorless RAG
&lt;/h2&gt;&lt;p&gt;El proyecto también incluye un ejemplo de agentic vectorless RAG usando PageIndex autoalojado y OpenAI Agents SDK. Instala la dependencia opcional y ejecútalo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip3 install openai-agents
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 examples/agentic_vectorless_rag_demo.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El valor de este ejemplo está en que lleva PageIndex de &amp;ldquo;generar un árbol documental&amp;rdquo; a &amp;ldquo;permitir que un Agent use el árbol para recuperar información&amp;rdquo;. Si estás construyendo una base de conocimiento empresarial, Q&amp;amp;A sobre informes financieros, preguntas regulatorias o un Agent de documentación técnica, vale más la pena correr este ejemplo que limitarse a leer el README.&lt;/p&gt;
&lt;h2 id=&#34;servicio-cloud-mcp-y-api&#34;&gt;Servicio cloud, MCP y API
&lt;/h2&gt;&lt;p&gt;PageIndex no es solo un GitHub repo. La página del proyecto también ofrece varias entradas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Autoalojamiento: ejecutar el código abierto en local, adecuado para pruebas y despliegues controlados.&lt;/li&gt;
&lt;li&gt;Chat Platform: una plataforma de análisis documental estilo ChatGPT.&lt;/li&gt;
&lt;li&gt;MCP / API: útil para integrarse con Agents existentes o flujos de automatización.&lt;/li&gt;
&lt;li&gt;Enterprise: orientado a despliegues privados u on-premises.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto muestra que su posición no es la de una simple demo. Busca convertir la &amp;ldquo;recuperación documental basada en razonamiento&amp;rdquo; en una infraestructura de inteligencia documental integrable.&lt;/p&gt;
&lt;h2 id=&#34;escenarios-adecuados&#34;&gt;Escenarios adecuados
&lt;/h2&gt;&lt;p&gt;PageIndex encaja bien con tareas como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preguntas y respuestas sobre PDFs largos.&lt;/li&gt;
&lt;li&gt;Análisis de informes financieros, informes anuales, prospectos y documentos regulatorios.&lt;/li&gt;
&lt;li&gt;Recuperación en documentos legales y de cumplimiento.&lt;/li&gt;
&lt;li&gt;Q&amp;amp;A sobre manuales técnicos.&lt;/li&gt;
&lt;li&gt;Recuperación en libros o papers con múltiples secciones.&lt;/li&gt;
&lt;li&gt;Bases de conocimiento empresariales que necesitan rutas de recuperación explicables.&lt;/li&gt;
&lt;li&gt;Proporcionar contexto documental estructurado a Agents.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si tu material es corto, tiene poca estructura o es simplemente un FAQ común, embedding + vector DB tradicional puede ser suficiente. Las ventajas de PageIndex aparecen con más claridad en documentos largos, estructura fuerte, dominios profesionales y preguntas que requieren razonamiento.&lt;/p&gt;
&lt;h2 id=&#34;aspectos-a-tener-en-cuenta&#34;&gt;Aspectos a tener en cuenta
&lt;/h2&gt;&lt;p&gt;Primero, PageIndex sigue dependiendo de LLMs. La construcción del árbol, los resúmenes y la calidad de recuperación se ven afectados por la capacidad del modelo, los prompts y la calidad del parsing documental.&lt;/p&gt;
&lt;p&gt;Segundo, la versión local usa parsing PDF estándar. Documentos escaneados complejos, PDFs con muchas tablas y gráficos, o materiales con maquetación desordenada pueden requerir OCR y preprocesamiento más potente.&lt;/p&gt;
&lt;p&gt;Tercero, sin base vectorial no significa coste cero. Construir el árbol también consume llamadas al modelo y tiempo, especialmente en colecciones documentales grandes.&lt;/p&gt;
&lt;p&gt;Cuarto, PageIndex se parece más a un marco de indexación estructural y recuperación por razonamiento. No reemplaza directamente todas las pilas RAG. En producción, también puede combinarse con recuperación vectorial, búsqueda por palabras clave, control de permisos, caché y sistemas de auditoría.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Lo interesante de PageIndex es que desplaza el foco del RAG desde la &amp;ldquo;recuperación por similitud textual&amp;rdquo; hacia &amp;ldquo;estructura documental + razonamiento LLM&amp;rdquo;. Para documentos largos y profesionales, esta dirección merece atención.&lt;/p&gt;
&lt;p&gt;Si estás construyendo Q&amp;amp;A documental empresarial, análisis de informes financieros, recuperación regulatoria o Agents para manuales técnicos, PageIndex puede servir como referencia de una nueva arquitectura RAG: primero dar estructura al documento y luego dejar que el modelo razone sobre esa estructura, en lugar de trocear todo desde el principio y meterlo en una base vectorial.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/PageIndex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub: VectifyAI/PageIndex&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
