<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>RAG on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/rag/</link>
        <description>Recent content in RAG 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/rag/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>
        <item>
        <title>OpenKB: compilar documentos en una base de conocimiento LLM que se actualiza continuamente</title>
        <link>https://knightli.com/es/2026/05/17/openkb-llm-knowledge-base/</link>
        <pubDate>Sun, 17 May 2026 17:15:08 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/17/openkb-llm-knowledge-base/</guid>
        <description>&lt;p&gt;OpenKB es una herramienta de base de conocimiento LLM de código abierto creada por VectifyAI.&lt;/p&gt;
&lt;p&gt;No es un sistema RAG tradicional que divide documentos en fragmentos, los vectoriza y vuelve a ensamblar contexto en cada consulta. OpenKB primero compila los documentos originales en una wiki estructurada: resúmenes de documentos, páginas de conceptos, referencias cruzadas, consultas posteriores y comprobaciones con lint. En otras palabras, se parece más a una CLI de base de conocimiento que organiza materiales de forma continua.&lt;/p&gt;
&lt;p&gt;Proyecto: &lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/OpenKB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/VectifyAI/OpenKB&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;la-idea-principal&#34;&gt;La idea principal
&lt;/h2&gt;&lt;p&gt;OpenKB merece atención por tres razones:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Exporta la base de conocimiento como archivos Markdown normales, no como datos encerrados en una base de datos específica.&lt;/li&gt;
&lt;li&gt;Usa PageIndex para procesar PDFs largos, con recuperación de documentos largos sin depender de una base vectorial.&lt;/li&gt;
&lt;li&gt;Pone el foco en la &amp;ldquo;compilación de conocimiento&amp;rdquo;: el LLM genera resúmenes, páginas de conceptos y enlaces cruzados, en vez de buscar desde cero en cada pregunta.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esto hace que OpenKB encaje bien en escenarios de acumulación de conocimiento a largo plazo: lectura de papers, documentación de proyectos, materiales internos, normas técnicas, investigación de productos y bases de conocimiento personales.&lt;/p&gt;
&lt;p&gt;No es un reemplazo universal. Si necesitas Q&amp;amp;A online de alta concurrencia, permisos complejos, panel web de administración, auditoría empresarial o multitenancy a gran escala, OpenKB hoy se parece más a una herramienta para desarrolladores y a un prototipo de base de conocimiento que a una plataforma empresarial completa.&lt;/p&gt;
&lt;h2 id=&#34;qué-es-openkb&#34;&gt;Qué es OpenKB
&lt;/h2&gt;&lt;p&gt;OpenKB significa Open Knowledge Base.&lt;/p&gt;
&lt;p&gt;Funciona como una CLI: convierte, organiza, resume y genera un conjunto de archivos wiki a partir de los documentos añadidos. El README oficial lo explica de forma directa: OpenKB usa LLMs para compilar documentos originales en una base de conocimiento estilo wiki, estructurada e interconectada, con PageIndex para recuperación de documentos largos sin vectores.&lt;/p&gt;
&lt;p&gt;Los formatos de entrada soportados incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PDF&lt;/li&gt;
&lt;li&gt;Word&lt;/li&gt;
&lt;li&gt;Markdown&lt;/li&gt;
&lt;li&gt;PowerPoint&lt;/li&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;Excel&lt;/li&gt;
&lt;li&gt;Texto plano&lt;/li&gt;
&lt;li&gt;Otros formatos convertibles con markitdown&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La base de conocimiento generada vive en &lt;code&gt;wiki/&lt;/code&gt; e incluye principalmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;index.md&lt;/code&gt;: visión general de la base de conocimiento&lt;/li&gt;
&lt;li&gt;&lt;code&gt;log.md&lt;/code&gt;: línea de tiempo de operaciones&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;: estructura e instrucciones de mantenimiento&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sources/&lt;/code&gt;: textos fuente convertidos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;summaries/&lt;/code&gt;: resúmenes de cada documento&lt;/li&gt;
&lt;li&gt;&lt;code&gt;concepts/&lt;/code&gt;: páginas de conceptos entre documentos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;explorations/&lt;/code&gt;: resultados de consultas guardados&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reports/&lt;/code&gt;: informes de lint&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La mayor ventaja de este diseño es la transparencia. Puedes abrir los archivos Markdown directamente, en lugar de recibir respuestas únicamente desde una interfaz de recuperación opaca.&lt;/p&gt;
&lt;h2 id=&#34;diferencia-con-el-rag-tradicional&#34;&gt;Diferencia con el RAG tradicional
&lt;/h2&gt;&lt;p&gt;Un flujo RAG tradicional suele ser:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Dividir los documentos en chunks.&lt;/li&gt;
&lt;li&gt;Generar embeddings.&lt;/li&gt;
&lt;li&gt;Guardarlos en una base vectorial.&lt;/li&gt;
&lt;li&gt;Recuperar fragmentos relevantes al consultar.&lt;/li&gt;
&lt;li&gt;Pasar esos fragmentos al LLM para generar una respuesta.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Este flujo está maduro y funciona bien para sistemas de preguntas y respuestas. Pero tiene un problema: el conocimiento no se acumula realmente. Cada pregunta vuelve a buscar fragmentos, recomponer contexto y generar una respuesta.&lt;/p&gt;
&lt;p&gt;OpenKB sigue más bien la lógica de &amp;ldquo;organizar primero, preguntar después&amp;rdquo;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Los documentos entran en &lt;code&gt;raw/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Los documentos cortos se convierten a Markdown mediante markitdown.&lt;/li&gt;
&lt;li&gt;Los PDFs largos pasan por PageIndex para generar índices en árbol y resúmenes.&lt;/li&gt;
&lt;li&gt;El LLM genera resúmenes de documentos.&lt;/li&gt;
&lt;li&gt;El LLM lee páginas de conceptos existentes y crea o actualiza conceptos entre documentos.&lt;/li&gt;
&lt;li&gt;Se actualizan el índice, el log y los enlaces cruzados de la base de conocimiento.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El resultado es que añadir un documento no solo crea otro archivo recuperable. Puede actualizar una docena de páginas wiki. El conocimiento se escribe en páginas de conceptos y se conecta con materiales existentes.&lt;/p&gt;
&lt;p&gt;Esto se parece más a cómo una persona mantiene una base de conocimiento: cuando llega material nuevo, no basta con archivarlo; también hay que actualizar páginas temáticas, resumir diferencias y añadir referencias.&lt;/p&gt;
&lt;h2 id=&#34;qué-problema-resuelve-pageindex&#34;&gt;Qué problema resuelve PageIndex
&lt;/h2&gt;&lt;p&gt;Los documentos largos siempre han sido difíciles para RAG y para las bases de conocimiento con LLM.&lt;/p&gt;
&lt;p&gt;Si divides directamente un PDF largo en muchos chunks, aparecen varios problemas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se pierden las relaciones entre capítulos.&lt;/li&gt;
&lt;li&gt;Tablas, imágenes y notas al pie son difíciles de manejar.&lt;/li&gt;
&lt;li&gt;Los fragmentos recuperados son demasiado pequeños y la respuesta pierde estructura global.&lt;/li&gt;
&lt;li&gt;Aunque la ventana de contexto sea grande, no conviene meter todo el documento en el prompt.&lt;/li&gt;
&lt;li&gt;Las cadenas largas de resumen pueden comprimir y perder detalles importantes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenKB usa PageIndex para procesar PDFs largos. Según la descripción del proyecto, PageIndex crea índices en árbol y resúmenes para documentos largos, de modo que el LLM razona sobre el árbol del documento en lugar de leer todo el documento directamente.&lt;/p&gt;
&lt;p&gt;El punto no es encontrar &amp;ldquo;los párrafos con mayor similitud vectorial&amp;rdquo;, sino permitir que el modelo use la jerarquía del documento para localizar contenido relevante. Para informes de investigación, papers, manuales, prospectos y documentos de cumplimiento, esta idea tiene mucho sentido.&lt;/p&gt;
&lt;p&gt;OpenKB puede usar por defecto la versión open-source de PageIndex de forma local. Si necesitas OCR, procesamiento de PDFs complejos o generación de estructura más rápida, puedes configurar &lt;code&gt;PAGEINDEX_API_KEY&lt;/code&gt; para usar PageIndex Cloud.&lt;/p&gt;
&lt;h2 id=&#34;instalación-e-inicio-rápido&#34;&gt;Instalación e inicio rápido
&lt;/h2&gt;&lt;p&gt;OpenKB se puede instalar directamente con pip:&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;pip install openkb
&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 puedes instalar la versión más reciente desde GitHub:&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;pip install git+https://github.com/VectifyAI/OpenKB.git
&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;Instalación editable desde el código fuente:&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;/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;git clone https://github.com/VectifyAI/OpenKB.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; OpenKB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e .
&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;Crea un directorio para la base de conocimiento:&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;mkdir my-kb &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; my-kb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb init
&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;Añade documentos:&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;openkb add paper.pdf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb add ~/papers/
&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;Haz una pregunta:&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;openkb query &lt;span class=&#34;s2&#34;&gt;&amp;#34;What are the main findings?&amp;#34;&lt;/span&gt;
&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;Inicia un chat interactivo:&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;openkb chat
&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;Si quieres que OpenKB procese nuevos archivos automáticamente, usa el modo watch:&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;openkb watch
&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, coloca archivos en &lt;code&gt;raw/&lt;/code&gt; y OpenKB actualizará la wiki automáticamente.&lt;/p&gt;
&lt;h2 id=&#34;configuración-del-llm&#34;&gt;Configuración del LLM
&lt;/h2&gt;&lt;p&gt;OpenKB usa LiteLLM para soportar varios proveedores de modelos, incluidos OpenAI, Claude y Gemini.&lt;/p&gt;
&lt;p&gt;Puedes establecer el modelo durante la inicialización o configurarlo en &lt;code&gt;.openkb/config.yaml&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;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gpt-5.4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;language&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;en&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pageindex_threshold&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&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;Los nombres de modelos siguen el formato &lt;code&gt;provider/model&lt;/code&gt; de LiteLLM. Los modelos de OpenAI pueden omitir el prefijo del proveedor:&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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gpt-5.4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&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;Modelos como Anthropic y Gemini suelen escribirse así:&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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;anthropic/claude-sonnet-4-6&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&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;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-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gemini/gemini-3.1-pro-preview&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&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;La API key va en &lt;code&gt;.env&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;LLM_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_llm_api_key
&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;Si activas PageIndex Cloud, añade:&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;PAGEINDEX_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_pageindex_api_key
&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;h2 id=&#34;comandos-habituales&#34;&gt;Comandos habituales
&lt;/h2&gt;&lt;p&gt;Los comandos de OpenKB son cómodos para desarrolladores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;openkb init&lt;/code&gt;: inicializa una nueva base de conocimiento.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb add &amp;lt;file_or_dir&amp;gt;&lt;/code&gt;: añade un archivo o directorio.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb remove &amp;lt;doc&amp;gt;&lt;/code&gt;: elimina un documento y limpia páginas wiki, imágenes, registro y estado de PageIndex relacionados.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb query &amp;quot;question&amp;quot;&lt;/code&gt;: hace una pregunta puntual sobre la base de conocimiento.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb chat&lt;/code&gt;: entra en una conversación de varios turnos.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb watch&lt;/code&gt;: vigila &lt;code&gt;raw/&lt;/code&gt; y actualiza automáticamente.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb lint&lt;/code&gt;: comprueba la estructura y la salud del contenido.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb list&lt;/code&gt;: lista documentos y conceptos indexados.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb status&lt;/code&gt;: muestra estadísticas de la base de conocimiento.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;openkb chat&lt;/code&gt; es más adecuado que &lt;code&gt;openkb query&lt;/code&gt; para exploración continua. Soporta reanudar sesiones, listarlas y eliminarlas, y también permite slash commands como &lt;code&gt;/status&lt;/code&gt;, &lt;code&gt;/list&lt;/code&gt;, &lt;code&gt;/add &amp;lt;path&amp;gt;&lt;/code&gt;, &lt;code&gt;/save&lt;/code&gt; y &lt;code&gt;/lint&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-importa-una-wiki-markdown&#34;&gt;Por qué importa una wiki Markdown
&lt;/h2&gt;&lt;p&gt;El problema de muchas herramientas de conocimiento es el coste de migración.&lt;/p&gt;
&lt;p&gt;Cuando el material entra en una base de datos, índice o formato propietario, es difícil inspeccionarlo, editarlo, respaldarlo o migrarlo directamente. OpenKB escribe el resultado como Markdown normal, lo que lo hace compatible de forma natural con herramientas existentes.&lt;/p&gt;
&lt;p&gt;El uso más directo es abrir &lt;code&gt;wiki/&lt;/code&gt; con Obsidian:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las páginas de resumen se pueden leer directamente.&lt;/li&gt;
&lt;li&gt;Las páginas de conceptos pueden conectarse con &lt;code&gt;[[wikilinks]]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;La vista de grafo muestra relaciones entre conocimientos.&lt;/li&gt;
&lt;li&gt;Los resultados de consultas pueden guardarse en &lt;code&gt;explorations/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; puede definir cómo se mantiene la base de conocimiento.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Así OpenKB no es solo una herramienta de Q&amp;amp;A; también puede convertirse en una canalización de organización de conocimiento para personas o equipos.&lt;/p&gt;
&lt;h2 id=&#34;escenarios-adecuados&#34;&gt;Escenarios adecuados
&lt;/h2&gt;&lt;p&gt;OpenKB encaja especialmente bien en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lectura de papers e informes técnicos.&lt;/li&gt;
&lt;li&gt;Organización de documentación de proyectos.&lt;/li&gt;
&lt;li&gt;Archivos de investigación de producto.&lt;/li&gt;
&lt;li&gt;Bases de conocimiento documentales alrededor de proyectos open-source.&lt;/li&gt;
&lt;li&gt;Organización de normas internas, actas de reuniones y documentos explicativos.&lt;/li&gt;
&lt;li&gt;Mantenimiento automático de una base personal en Obsidian.&lt;/li&gt;
&lt;li&gt;Estructuración de PDFs largos, PPTs, archivos Word y materiales web.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si trabajas a menudo con montones de documentos y no solo quieres &amp;ldquo;hacer una pregunta y obtener una respuesta&amp;rdquo;, sino convertir esos materiales en una base navegable, reutilizable y trazable, OpenKB va en la dirección correcta.&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, OpenKB depende de la calidad del LLM.&lt;/p&gt;
&lt;p&gt;Resúmenes, páginas de conceptos y enlaces cruzados son generados por el modelo. Cuanto más fuerte sea el modelo, más estable será la compilación de conocimiento; si el modelo es débil, la extracción de conceptos, detección de contradicciones y síntesis entre documentos se resentirán.&lt;/p&gt;
&lt;p&gt;Segundo, conviene estimar costes desde el principio.&lt;/p&gt;
&lt;p&gt;Si importas muchos documentos largos a la vez, las llamadas al LLM pueden ser caras. Es mejor probar con un conjunto pequeño, verificar estructura y calidad, y luego ampliar.&lt;/p&gt;
&lt;p&gt;Tercero, la wiki generada aún necesita revisión humana.&lt;/p&gt;
&lt;p&gt;OpenKB puede organizar materiales, pero no garantiza automáticamente que todos los hechos sean correctos. Las bases de conocimiento importantes siguen necesitando revisión humana de resúmenes, conceptos y referencias.&lt;/p&gt;
&lt;p&gt;Cuarto, cuidado con materiales sensibles.&lt;/p&gt;
&lt;p&gt;Si usas LLMs en la nube o PageIndex Cloud, presta atención a privacidad, secretos comerciales y requisitos de cumplimiento. Para material interno, conviene confirmar primero el proveedor del modelo, la política de retención de datos y los límites de acceso.&lt;/p&gt;
&lt;p&gt;Quinto, por ahora es más una herramienta CLI.&lt;/p&gt;
&lt;p&gt;El roadmap menciona una futura Web UI, almacenamiento con base de datos, soporte para grandes colecciones e indexación jerárquica de conceptos. En la etapa actual, si el equipo no está cómodo con la línea de comandos, todavía habrá fricción de adopción.&lt;/p&gt;
&lt;h2 id=&#34;relación-con-obsidian-notebooklm-y-rag-empresarial&#34;&gt;Relación con Obsidian, NotebookLM y RAG empresarial
&lt;/h2&gt;&lt;p&gt;La relación entre OpenKB y Obsidian se entiende mejor como una &amp;ldquo;capa de organización automática&amp;rdquo; más una &amp;ldquo;capa de lectura y edición&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Obsidian es bueno para que las personas escriban, editen, naveguen y creen enlaces. OpenKB es bueno para convertir documentos originales en una wiki que pueda entrar en Obsidian.&lt;/p&gt;
&lt;p&gt;OpenKB y NotebookLM se diferencian más por control local y formato abierto.&lt;/p&gt;
&lt;p&gt;NotebookLM ofrece una experiencia más directa para cargar materiales, preguntar y generar resúmenes rápidamente. OpenKB encaja mejor cuando un desarrollador quiere dejar el resultado organizado en un directorio local y seguir manteniéndolo como Markdown.&lt;/p&gt;
&lt;p&gt;OpenKB no sustituye al RAG empresarial; lo complementa.&lt;/p&gt;
&lt;p&gt;El RAG empresarial prioriza permisos, auditoría, despliegue como servicio, aislamiento de acceso, monitoreo y throughput estable. OpenKB sirve mejor para construir una capa de conocimiento legible, editable y acumulable. Si más adelante construyes Q&amp;amp;A online, la wiki generada por OpenKB también puede ser un corpus de mayor calidad.&lt;/p&gt;
&lt;h2 id=&#34;un-flujo-recomendado&#34;&gt;Un flujo recomendado
&lt;/h2&gt;&lt;p&gt;Si quieres probar OpenKB, puedes empezar así:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Crea un directorio de prueba para la base de conocimiento.&lt;/li&gt;
&lt;li&gt;Añade de 3 a 5 documentos sobre el mismo tema.&lt;/li&gt;
&lt;li&gt;Ejecuta &lt;code&gt;openkb add&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Abre &lt;code&gt;wiki/&lt;/code&gt; y revisa resúmenes y páginas de conceptos.&lt;/li&gt;
&lt;li&gt;Haz algunas preguntas concretas con &lt;code&gt;openkb query&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ejecuta &lt;code&gt;openkb lint&lt;/code&gt; para revisar la salud de la base.&lt;/li&gt;
&lt;li&gt;Abre &lt;code&gt;wiki/&lt;/code&gt; en Obsidian y mira si el grafo de enlaces tiene sentido.&lt;/li&gt;
&lt;li&gt;Cuando la calidad sea aceptable, importa una colección más grande.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;No metas cientos de archivos desde el principio. Primero comprueba si entiende bien tu tipo de material, especialmente tablas, imágenes, PDFs largos y fusión de conceptos entre documentos.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;El valor de OpenKB está en adelantar un paso el flujo de una base de conocimiento LLM: en vez de armar contexto temporalmente al consultar, primero organiza los materiales como wiki y luego permite preguntar, chatear, revisar y seguir manteniendo esa wiki.&lt;/p&gt;
&lt;p&gt;Esta ruta no sirve para todos los sistemas de Q&amp;amp;A, pero sí para trabajo de conocimiento que necesita acumulación a largo plazo. Archivos Markdown, compatibilidad con Obsidian, manejo de documentos largos con PageIndex, soporte multi-modelo y flujo CLI forman una herramienta útil para desarrolladores y usuarios orientados a investigación.&lt;/p&gt;
&lt;p&gt;Si tienes muchos PDFs, informes, páginas web, papers y documentos de proyecto, vale la pena probar OpenKB. Quizá no reemplace de inmediato una base de conocimiento empresarial madura, pero puede ser una entrada práctica para organizar materiales: primero convierte documentos en conocimiento legible, enlazado y trazable, y luego deja que el LLM trabaje sobre esa base.&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/OpenKB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/OpenKB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openkb.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Página del proyecto OpenKB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pageindex.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PageIndex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/markitdown&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;markitdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.litellm.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LiteLLM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Términos de informática en lenguaje simple: qué significan TTS, STT, API, RAG y Agent</title>
        <link>https://knightli.com/es/2026/05/12/computer-terms-in-plain-language/</link>
        <pubDate>Tue, 12 May 2026 22:15:34 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/12/computer-terms-in-plain-language/</guid>
        <description>&lt;p&gt;En informática hay muchos términos que, al escucharlos por primera vez, parecen muy avanzados. Pero cuando se traducen a lenguaje simple, a menudo describen acciones cotidianas.&lt;/p&gt;
&lt;p&gt;Por ejemplo, cuando una IA puede hablar, se llama &lt;code&gt;TTS&lt;/code&gt;; cuando puede escucharte, se llama &lt;code&gt;STT&lt;/code&gt;. Suena como un sistema complejo, pero separado en partes es simplemente &amp;ldquo;leer texto en voz alta&amp;rdquo; y &amp;ldquo;transcribir voz a texto&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Enlace de referencia: &lt;a class=&#34;link&#34; href=&#34;https://www.zhihu.com/question/267978646/answer/2035405228460201515&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.zhihu.com/question/267978646/answer/2035405228460201515&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Este artículo recorre varios términos comunes desde ese ángulo: conservar los términos, pero explicarlos en palabras simples.&lt;/p&gt;
&lt;h2 id=&#34;tts-y-stt-convertir-entre-texto-y-voz&#34;&gt;TTS y STT: convertir entre texto y voz
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TTS&lt;/code&gt; significa &lt;code&gt;Text-to-Speech&lt;/code&gt;, es decir, convertir texto en voz. Escribes un texto y el sistema lo convierte en audio reproducible. La navegación por voz, la lectura de libros electrónicos, los bots de atención al cliente y los asistentes de voz usan esta capacidad.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;STT&lt;/code&gt; significa &lt;code&gt;Speech-to-Text&lt;/code&gt;, es decir, convertir voz en texto. Cuando le hablas al móvil, el sistema primero reconoce la voz como texto y luego entrega ese texto al programa siguiente. Dictado por voz, transcripción de reuniones, subtítulos automáticos y altavoces inteligentes dependen de STT.&lt;/p&gt;
&lt;p&gt;Muchos productos de IA por voz funcionan así:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;STT&lt;/code&gt;: convierte lo que dijiste en texto.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LLM&lt;/code&gt;: genera una respuesta a partir del texto.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TTS&lt;/code&gt;: lee la respuesta en voz alta.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Por eso parece una conversación natural, aunque por debajo varios módulos se pasan el trabajo.&lt;/p&gt;
&lt;h2 id=&#34;ocr-copiar-texto-desde-imágenes&#34;&gt;OCR: copiar texto desde imágenes
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;OCR&lt;/code&gt; significa &lt;code&gt;Optical Character Recognition&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, consiste en sacar texto de una imagen. Fotografiar una factura, escanear una página de un libro o leer el nombre y número de un documento de identidad son tareas de OCR.&lt;/p&gt;
&lt;p&gt;Antes, OCR se parecía más a &amp;ldquo;adivinar la forma de los caracteres&amp;rdquo;. Hoy usa deep learning y tolera mejor fondos complejos, texto inclinado, escritura manual e imágenes borrosas. Pero la pregunta central sigue siendo directa: ¿qué texto hay en la imagen?&lt;/p&gt;
&lt;h2 id=&#34;nlp-y-llm-hacer-que-las-máquinas-procesen-lenguaje-humano&#34;&gt;NLP y LLM: hacer que las máquinas procesen lenguaje humano
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;NLP&lt;/code&gt; significa &lt;code&gt;Natural Language Processing&lt;/code&gt;. Trata con lenguaje humano: tokenización, traducción, resumen, análisis de sentimiento, preguntas y respuestas, clasificación.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LLM&lt;/code&gt; significa &lt;code&gt;Large Language Model&lt;/code&gt;. Puede entender y generar texto, así que hoy muchas tareas de NLP las realizan LLMs.&lt;/p&gt;
&lt;p&gt;Versión simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;NLP&lt;/code&gt;: hacer que las máquinas procesen lo que las personas dicen y escriben.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LLM&lt;/code&gt;: un modelo de texto grande capaz de manejar muchas tareas de lenguaje.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cuando pides a una IA resumir un artículo, escribir un correo, mejorar un título o explicar código, estás en este campo general.&lt;/p&gt;
&lt;h2 id=&#34;api-y-sdk-una-es-una-interfaz-el-otro-es-un-kit&#34;&gt;API y SDK: una es una interfaz, el otro es un kit
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;API&lt;/code&gt; significa &lt;code&gt;Application Programming Interface&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, alguien abre una entrada para que puedas llamar una capacidad. Una API del clima recibe una ciudad y devuelve el tiempo; una API de pagos recibe un pedido y devuelve el resultado del pago.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SDK&lt;/code&gt; significa &lt;code&gt;Software Development Kit&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, el equipo oficial empaqueta código común, tipos, ejemplos y herramientas para que llames la API más fácilmente. Una API es como el mostrador de un restaurante; un SDK es como una app para pedir. Puedes hablar directamente con el mostrador o usar la app para hacerlo con menos fricción.&lt;/p&gt;
&lt;h2 id=&#34;crud-crear-leer-actualizar-y-borrar&#34;&gt;CRUD: crear, leer, actualizar y borrar
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CRUD&lt;/code&gt; significa &lt;code&gt;Create&lt;/code&gt;, &lt;code&gt;Read&lt;/code&gt;, &lt;code&gt;Update&lt;/code&gt;, &lt;code&gt;Delete&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En lenguaje simple: añadir, ver, modificar y eliminar.&lt;/p&gt;
&lt;p&gt;Muchos sistemas administrativos, paneles de gestión y operaciones de base de datos giran alrededor de CRUD. Gestión de usuarios, artículos, pedidos o inventario parecen negocios distintos, pero por debajo suelen ser formularios más crear/leer/actualizar/borrar.&lt;/p&gt;
&lt;p&gt;Por eso los programadores dicen &amp;ldquo;otra vez CRUD&amp;rdquo;. No necesariamente lo dicen con desprecio; simplemente aparece en todas partes.&lt;/p&gt;
&lt;h2 id=&#34;cache-guardar-una-copia-para-no-recalcular-cada-vez&#34;&gt;Cache: guardar una copia para no recalcular cada vez
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Cache&lt;/code&gt; significa caché.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, dejar cerca lo que se usa con frecuencia para tomarlo directamente la próxima vez, sin buscarlo, calcularlo o pedirlo de nuevo.&lt;/p&gt;
&lt;p&gt;Una página web puede cachear imágenes y scripts; una consulta lenta puede guardar resultados populares en Redis; una inferencia cara de modelo puede cachear respuestas a preguntas repetidas.&lt;/p&gt;
&lt;p&gt;La parte difícil de la caché no es &amp;ldquo;guardar una copia&amp;rdquo;, sino &amp;ldquo;saber cuándo actualizarla&amp;rdquo;. Si los datos cambian y la caché no, aparece información antigua. Ese es el origen de muchos problemas de caché.&lt;/p&gt;
&lt;h2 id=&#34;queue-poner-tareas-en-fila-y-procesarlas-poco-a-poco&#34;&gt;Queue: poner tareas en fila y procesarlas poco a poco
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Queue&lt;/code&gt; significa cola.&lt;/p&gt;
&lt;p&gt;En lenguaje simple: hay demasiadas cosas por hacer, así que se ponen en fila y se procesan una por una.&lt;/p&gt;
&lt;p&gt;Por ejemplo, cuando un usuario sube un video, la transcodificación no siempre termina de inmediato. El sistema puede poner la tarea en una cola y dejar que un servicio en segundo plano la procese. Enviar SMS, correos, generar informes y manejar callbacks de pedidos también suele usar colas.&lt;/p&gt;
&lt;p&gt;Las colas evitan que todas las tareas lentas bloqueen la petición actual. El usuario recibe respuesta primero y el trabajo pesado ocurre después.&lt;/p&gt;
&lt;h2 id=&#34;index-una-tabla-de-contenidos-para-la-base-de-datos&#34;&gt;Index: una tabla de contenidos para la base de datos
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Index&lt;/code&gt; significa índice.&lt;/p&gt;
&lt;p&gt;Un índice de base de datos es como el índice de un libro. Sin índice, quizá tengas que leer desde la primera página hasta la última; con índice, llegas más rápido al contenido.&lt;/p&gt;
&lt;p&gt;Pero no siempre conviene tener más índices. Las consultas pueden ser más rápidas, pero las escrituras y actualizaciones pueden volverse más lentas, porque el índice también debe mantenerse cuando cambian los datos.&lt;/p&gt;
&lt;p&gt;Por eso en optimización de bases de datos se suele mirar primero el índice de una consulta lenta. Pero al crear uno hay que considerar condiciones de búsqueda, campos de orden, volumen de datos y frecuencia de escritura.&lt;/p&gt;
&lt;h2 id=&#34;rpc-rest-y-webhook-cómo-hablan-los-sistemas&#34;&gt;RPC, REST y Webhook: cómo hablan los sistemas
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;RPC&lt;/code&gt; significa &lt;code&gt;Remote Procedure Call&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, es llamar una función que vive en otra máquina como si fuera una función local.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;REST&lt;/code&gt; es común en Web API. Usa URLs y métodos HTTP para expresar operaciones sobre recursos, por ejemplo &lt;code&gt;GET /users&lt;/code&gt; para consultar usuarios y &lt;code&gt;POST /orders&lt;/code&gt; para crear pedidos.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Webhook&lt;/code&gt; es una notificación en sentido contrario. En vez de preguntar todo el tiempo &amp;ldquo;¿ya está?&amp;rdquo;, el otro sistema llama tu URL cuando ocurre algo.&lt;/p&gt;
&lt;p&gt;Forma simple de recordarlo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;RPC&lt;/code&gt;: llamar una función remota.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;REST&lt;/code&gt;: gestionar recursos con HTTP.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Webhook&lt;/code&gt;: recibir aviso cuando algo sucede.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cdn-y-load-balancing-acercar-contenido-y-repartir-carga&#34;&gt;CDN y Load Balancing: acercar contenido y repartir carga
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CDN&lt;/code&gt; significa &lt;code&gt;Content Delivery Network&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, colocar recursos estáticos en nodos más cercanos al usuario. Al acceder a imágenes, videos, CSS o JS, no siempre hace falta ir al servidor de origen.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Load Balancing&lt;/code&gt; significa balanceo de carga.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, si hay demasiado tráfico, no obligar a un solo servidor a cargar con todo; repartir las peticiones entre varias máquinas.&lt;/p&gt;
&lt;p&gt;Uno trata de estar más cerca del usuario; el otro evita agotar una máquina. Los sitios grandes suelen usar ambos.&lt;/p&gt;
&lt;h2 id=&#34;docker-container-y-kubernetes-empaquetar-ejecutar-y-orquestar&#34;&gt;Docker, Container y Kubernetes: empaquetar, ejecutar y orquestar
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Docker&lt;/code&gt; es una herramienta común de contenedores, y &lt;code&gt;Container&lt;/code&gt; significa contenedor.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, empaquetar el programa junto con el entorno que necesita para que pueda ejecutarse de forma similar en otra máquina. Así se reduce el problema de &amp;ldquo;en mi ordenador funciona, en el servidor no&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Kubernetes&lt;/code&gt;, a menudo escrito &lt;code&gt;K8s&lt;/code&gt;, es un sistema de orquestación de contenedores.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, cuando hay muchos contenedores, decide dónde corren, cómo reiniciarlos si fallan, cómo repartir tráfico y cómo actualizar versiones.&lt;/p&gt;
&lt;p&gt;Si solo tienes un servicio pequeño, Docker puede bastar. Si tienes muchos servicios, máquinas y réplicas, K8s empieza a tener más sentido.&lt;/p&gt;
&lt;h2 id=&#34;cicd-construir-y-desplegar-automáticamente&#34;&gt;CI/CD: construir y desplegar automáticamente
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CI&lt;/code&gt; significa &lt;code&gt;Continuous Integration&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, cuando se envía código, el sistema lo descarga, ejecuta pruebas y lo construye automáticamente para detectar problemas pronto.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CD&lt;/code&gt; puede significar &lt;code&gt;Continuous Delivery&lt;/code&gt; o &lt;code&gt;Continuous Deployment&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, cuando la build pasa, el código se envía de forma más estable y automática a pruebas o producción.&lt;/p&gt;
&lt;p&gt;No resuelve &amp;ldquo;cómo escribir código&amp;rdquo;, sino &amp;ldquo;cómo publicar lo escrito con menos errores&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;serialization-empaquetar-objetos-en-un-formato-transmisible&#34;&gt;Serialization: empaquetar objetos en un formato transmisible
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Serialization&lt;/code&gt; significa serialización.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, convertir objetos del programa en un formato que se pueda guardar o transmitir, como JSON, XML o Protobuf.&lt;/p&gt;
&lt;p&gt;Lo contrario, &lt;code&gt;Deserialization&lt;/code&gt;, convierte esos formatos de vuelta en objetos que el programa puede usar.&lt;/p&gt;
&lt;p&gt;Cuando frontend y backend intercambian JSON, o dos servicios usan Protobuf, hay serialización de por medio.&lt;/p&gt;
&lt;h2 id=&#34;token-embedding-y-vector-db-convertir-texto-en-formas-que-el-modelo-puede-procesar&#34;&gt;Token, Embedding y Vector DB: convertir texto en formas que el modelo puede procesar
&lt;/h2&gt;&lt;p&gt;En modelos grandes, &lt;code&gt;Token&lt;/code&gt; suele ser la unidad básica en la que se divide el texto. No siempre equivale a un carácter chino o a una palabra inglesa; es más bien la granularidad interna con la que el modelo procesa texto.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Embedding&lt;/code&gt; significa vector de incrustación.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, convierte texto, imágenes u otros contenidos en una secuencia de números para que el modelo pueda comparar similitudes.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Vector DB&lt;/code&gt; significa base de datos vectorial.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, guarda esos vectores y permite encontrar rápido contenido con significado parecido.&lt;/p&gt;
&lt;p&gt;Por ejemplo, si preguntas &amp;ldquo;cómo resetear el router&amp;rdquo;, el sistema puede buscar en la base vectorial contenidos como &amp;ldquo;restaurar configuración de fábrica&amp;rdquo;, &amp;ldquo;olvidé la contraseña Wi-Fi&amp;rdquo; o &amp;ldquo;fallo al entrar al panel&amp;rdquo;, y pasarlos al modelo como referencia.&lt;/p&gt;
&lt;h2 id=&#34;rag-buscar-primero-responder-después&#34;&gt;RAG: buscar primero, responder después
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;RAG&lt;/code&gt; significa &lt;code&gt;Retrieval-Augmented Generation&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, antes de responder, el modelo busca información relevante en una base de conocimiento y luego responde usando esos materiales.&lt;/p&gt;
&lt;p&gt;Esto reduce el problema de que los modelos grandes inventen cosas desde la memoria. Al conectar documentos internos, bases de conocimiento, manuales de producto o fragmentos de código, el modelo puede usar materiales actuales proporcionados por ti.&lt;/p&gt;
&lt;p&gt;Un flujo típico es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El usuario hace una pregunta.&lt;/li&gt;
&lt;li&gt;El sistema convierte la pregunta en un &lt;code&gt;Embedding&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Busca documentos relacionados en una &lt;code&gt;Vector DB&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Envía fragmentos de documentos y la pregunta a un &lt;code&gt;LLM&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;El modelo genera la respuesta.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Así que RAG suena avanzado, pero en esencia es: primero consulta materiales, luego organiza la respuesta.&lt;/p&gt;
&lt;h2 id=&#34;agent-un-flujo-automatizado-que-descompone-tareas&#34;&gt;Agent: un flujo automatizado que descompone tareas
&lt;/h2&gt;&lt;p&gt;En el contexto de IA, &lt;code&gt;Agent&lt;/code&gt; suele traducirse como agente inteligente.&lt;/p&gt;
&lt;p&gt;En lenguaje simple, no solo responde una frase; puede dividir un objetivo en pasos, llamar herramientas, observar resultados y decidir la siguiente acción.&lt;/p&gt;
&lt;p&gt;Por ejemplo, si le pides &amp;ldquo;analiza por qué fallan las pruebas en este repositorio&amp;rdquo;, un modelo de chat común quizá solo dé consejos. Un Agent puede leer archivos, ejecutar pruebas, revisar errores, modificar código y volver a ejecutar pruebas.&lt;/p&gt;
&lt;p&gt;Por supuesto, Agent no significa fiabilidad garantizada. Es básicamente &amp;ldquo;modelo + llamadas a herramientas + bucle de estado&amp;rdquo;. Que funcione bien depende de permisos, límites de la tarea, manejo de errores y confirmación humana.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Muchos términos informáticos parecen avanzados porque vienen envueltos en siglas, diagramas de arquitectura y marketing de producto. Al desmontarlos, muchos describen acciones muy simples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;TTS&lt;/code&gt;: leer texto en voz alta.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;STT&lt;/code&gt;: transcribir voz.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OCR&lt;/code&gt;: copiar texto desde imágenes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;API&lt;/code&gt;: abrir una entrada de llamada.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SDK&lt;/code&gt;: empaquetar herramientas de llamada.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CRUD&lt;/code&gt;: crear, leer, actualizar y borrar.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Cache&lt;/code&gt;: guardar una copia de resultados comunes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Queue&lt;/code&gt;: poner tareas en fila para procesarlas después.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Index&lt;/code&gt;: poner una tabla de contenidos a los datos.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CDN&lt;/code&gt;: acercar contenido al usuario.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Load Balancing&lt;/code&gt;: repartir peticiones.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Docker&lt;/code&gt;: empaquetar el entorno de ejecución.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CI/CD&lt;/code&gt;: automatizar pruebas y despliegue.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Embedding&lt;/code&gt;: convertir contenido en vectores numéricos.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RAG&lt;/code&gt;: buscar primero, responder después.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Agent&lt;/code&gt;: dejar que el modelo use herramientas paso a paso.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Conviene conservar los términos porque ayudan a buscar, comunicarse y leer documentación. Pero no hace falta dejarse intimidar. Primero tradúcelos a lenguaje simple; luego vuelve a los detalles técnicos. Muchos conceptos se vuelven mucho más claros.&lt;/p&gt;
&lt;h2 id=&#34;referencia&#34;&gt;Referencia
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Respuesta de Zhihu: &lt;a class=&#34;link&#34; href=&#34;https://www.zhihu.com/question/267978646/answer/2035405228460201515&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.zhihu.com/question/267978646/answer/2035405228460201515&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini Embedding 2: texto, imagen, video y audio en un mismo espacio vectorial</title>
        <link>https://knightli.com/es/2026/05/04/gemini-embedding-2-multimodal-rag/</link>
        <pubDate>Mon, 04 May 2026 06:01:10 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/04/gemini-embedding-2-multimodal-rag/</guid>
        <description>&lt;p&gt;Google Developers Blog presento el uso de Gemini Embedding 2 para desarrollo. El modelo ya esta en GA a traves de Gemini API y Gemini Enterprise Agent Platform. Lo importante no es solo que sea &amp;ldquo;un nuevo modelo de embedding&amp;rdquo;, sino que puede mapear texto, imagenes, video, audio y documentos al mismo espacio semantico.&lt;/p&gt;
&lt;p&gt;Esto amplia los limites de los sistemas de recuperacion. Antes, muchos flujos RAG necesitaban convertir imagenes, videos o audio en texto o metadatos y crear indices separados. Gemini Embedding 2 puede procesar directamente entradas multimodales, haciendo que agents, busqueda y sistemas de clasificacion trabajen mas facilmente con materiales reales de negocio.&lt;/p&gt;
&lt;p&gt;Enlace original: &lt;a class=&#34;link&#34; href=&#34;https://developers.googleblog.com/building-with-gemini-embedding-2/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building with Gemini Embedding 2: Agentic multimodal RAG and beyond&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;capacidades-del-modelo&#34;&gt;Capacidades del modelo
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 admite mas de 100 idiomas. Una sola solicitud puede procesar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hasta 8,192 tokens de texto.&lt;/li&gt;
&lt;li&gt;Hasta 6 imagenes.&lt;/li&gt;
&lt;li&gt;Hasta 120 segundos de video.&lt;/li&gt;
&lt;li&gt;Hasta 180 segundos de audio.&lt;/li&gt;
&lt;li&gt;Hasta 6 paginas PDF.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La clave es el &amp;ldquo;espacio semantico unificado&amp;rdquo;. Los desarrolladores pueden poner contenidos de distintas modalidades en una misma representacion vectorial y aplicar la misma logica de recuperacion, clustering o reranking.&lt;/p&gt;
&lt;p&gt;Por ejemplo, una descripcion de texto y una imagen pueden ir en la misma solicitud de embedding:&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;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&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-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google.genai&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;types&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;dog.png&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;rb&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;image_bytes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embed_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;gemini-embedding-2&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;An image of a dog&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;types&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Part&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;from_bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;mime_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;image/png&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embeddings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&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;Si quieres obtener un embedding separado para cada entrada, en vez de agregarlas en un unico vector, puedes usar Batch API. El articulo tambien menciona que Agent Platform sigue avanzando en este soporte por lotes.&lt;/p&gt;
&lt;h2 id=&#34;que-significa-para-rag&#34;&gt;Que significa para RAG
&lt;/h2&gt;&lt;p&gt;El embedding multimodal es muy util para RAG agentico. Un AI agent puede necesitar revisar al mismo tiempo repositorios de codigo, PDF, capturas, graficos, transcripciones de reuniones y fotos de producto. Si todos los materiales entran en el mismo espacio semantico, la recuperacion no necesita una entrada distinta para cada formato.&lt;/p&gt;
&lt;p&gt;Google recomienda usar task prefix segun la tarea para acercar el embedding al objetivo de recuperacion. Por ejemplo, preguntas y respuestas, fact checking, recuperacion de codigo y resultados de busqueda pueden usar prefijos distintos:&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;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&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-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Generate embedding for your task&amp;#39;s query:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;prepare_query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;task: question answering | query: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#34;task: fact checking | query: {content}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#34;task: code retrieval | query: {content}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#34;task: search result | query: {content}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Generate embedding for document of an asymmetric retrieval task:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;prepare_document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;none&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;title: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; | text: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&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;Este prefijo encaja con recuperacion asimetrica: las consultas suelen ser cortas y los documentos largos. Preparar query y document con formatos de tarea distintos puede mejorar el emparejamiento entre consulta corta y documento largo.&lt;/p&gt;
&lt;p&gt;El articulo da dos resultados reales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Harvey mejoro un 3% el Recall@20 precision frente a la generacion anterior de embedding en benchmarks legales.&lt;/li&gt;
&lt;li&gt;Supermemory mejoro un 40% el Recall@1 en precision de busqueda y lo usa en memoria, indexacion, busqueda y Q&amp;amp;A.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos numeros no significan que todos los escenarios mejoren igual, pero muestran que el embedding multimodal ya no es solo una demostracion, sino que produce efecto en productos reales de busqueda.&lt;/p&gt;
&lt;h2 id=&#34;busqueda-visual&#34;&gt;Busqueda visual
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 tambien encaja con busqueda por imagen, busqueda mixta imagen-texto e identificacion de productos. El articulo menciona que Nuuly, una empresa de alquiler de ropa, lo uso para emparejar fotos de ropa sin etiquetar en almacen: Match@20 subio de 60% a casi 87%, y el exito total de identificacion paso de 74% a mas de 90%.&lt;/p&gt;
&lt;p&gt;La clave de estos escenarios no es generar contenido, sino entender &amp;ldquo;a que inventario, documento o registro de producto se parece mas esta imagen&amp;rdquo;. Si tu negocio tiene muchas imagenes, clips de video o documentos escaneados, el embedding multimodal es mas natural que un indice puramente textual.&lt;/p&gt;
&lt;h2 id=&#34;reranking-de-recuperacion&#34;&gt;Reranking de recuperacion
&lt;/h2&gt;&lt;p&gt;El embedding tambien puede usarse para rerank. Una practica comun es recuperar primero un grupo de candidatos y luego calcular la similitud entre cada candidato y la consulta del usuario, subiendo los resultados mas relevantes:&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;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&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-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. Define a function to calculate the dot product (cosine similarity)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;dot_product&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ndarray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ndarray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;@&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;T&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. Retrieve your embeddings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# (Assuming &amp;#39;summaries&amp;#39; is your list of search results)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;search_res&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_embeddings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;summaries&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;embedded_query&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_embeddings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. Calculate similarity scores&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sim_value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dot_product&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;search_res&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;embedded_query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 4. Select the most relevant result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;best_match_index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;argmax&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sim_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&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 articulo tambien menciona otra idea: pedir primero al modelo que genere una respuesta hipotetica con su conocimiento interno, hacer embedding de esa respuesta y compararla con los candidatos. Esto ayuda a elegir resultados semanticamente mas cercanos, especialmente en RAG de preguntas y respuestas.&lt;/p&gt;
&lt;h2 id=&#34;clustering-clasificacion-y-deteccion-de-anomalias&#34;&gt;Clustering, clasificacion y deteccion de anomalias
&lt;/h2&gt;&lt;p&gt;Ademas de recuperacion, los embeddings sirven para clustering, clasificacion y deteccion de anomalias. A diferencia de la recuperacion de preguntas y respuestas, estas son tareas simetricas: query y document pueden usar el mismo prefijo de tarea.&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;/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-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Generate embedding for query &amp;amp; document of your task.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;prepare_query_and_document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#39;task: clustering | query: {content}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#39;task: sentence similarity | query: {content}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#39;task: classification | query: {content}&amp;#39;&lt;/span&gt;
&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;Estas tareas pueden aplicarse a clasificacion de opinion publica, moderacion de contenido, agrupacion de activos similares y deteccion de muestras anomalas. Tambien pueden ayudar a un agent a ordenar mucho contexto antes de entrar en razonamiento posterior.&lt;/p&gt;
&lt;h2 id=&#34;almacenamiento-y-coste&#34;&gt;Almacenamiento y coste
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 devuelve por defecto vectores de 3,072 dimensiones. Usa Matryoshka Representation Learning, por lo que puedes truncar el vector a una dimension menor con &lt;code&gt;output_dimensionality&lt;/code&gt;. Google recomienda 1,536 o 768 dimensiones cuando la eficiencia es prioritaria:&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;/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-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embed_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gemini-embedding-2&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;What is the meaning of life?&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output_dimensionality&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;768&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&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;Los vectores pueden almacenarse en Agent Platform Vector Search, Pinecone, Weaviate, Qdrant, ChromaDB y sistemas similares. En coste, el articulo menciona que Batch API ofrece mayor throughput y puede llegar al 50% del precio por defecto de embeddings.&lt;/p&gt;
&lt;h2 id=&#34;como-usarlo-como-desarrollador&#34;&gt;Como usarlo como desarrollador
&lt;/h2&gt;&lt;p&gt;Si ya tienes RAG textual, puedes empezar con dos mejoras incrementales:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Poner PDF, capturas, descripciones de imagen y documentos de texto en un mismo indice, y comprobar si la recuperacion se vuelve mas estable.&lt;/li&gt;
&lt;li&gt;Agregar task prefix para distintas tareas, como Q&amp;amp;A, fact checking, recuperacion de codigo y busqueda de productos. No proceses todo con el mismo formato de embedding.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si estas creando un producto nuevo, considera primero estas direcciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Base de conocimiento empresarial: recuperar documentos, graficos, capturas de presentaciones y material de reuniones al mismo tiempo.&lt;/li&gt;
&lt;li&gt;Busqueda visual: encontrar productos, activos, disenos y archivos usando imagen, texto o entradas mixtas.&lt;/li&gt;
&lt;li&gt;Toolchain de Agent: permitir que coding agents, research agents o agentes de soporte recuperen materiales de negocio en varios formatos.&lt;/li&gt;
&lt;li&gt;Gobernanza de contenido: clasificar, agrupar y detectar anomalias en texto, imagenes y clips de video.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El valor de Gemini Embedding 2 esta en convertir materiales multimodales en un mismo conjunto de activos recuperables. Para desarrolladores, reduce la capa intermedia de &amp;ldquo;convertir primero a texto y luego buscar&amp;rdquo;, y acerca los sistemas RAG a la forma real de los datos del mundo.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Cómo Elegir Modelos de Embedding Comunes: OpenAI vs BGE vs E5 vs GTE vs Jina</title>
        <link>https://knightli.com/es/2026/04/23/compare-openai-bge-e5-gte-jina-embedding-models/</link>
        <pubDate>Thu, 23 Apr 2026 15:23:47 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/23/compare-openai-bge-e5-gte-jina-embedding-models/</guid>
        <description>&lt;p&gt;Cuando las personas comienzan a construir sistemas RAG, búsqueda semántica o recuperación de bases de conocimiento, a menudo se quedan atascadas en la misma pregunta: hay tantos modelos de embedding, ¿así que cuál debe elegir?&lt;/p&gt;
&lt;p&gt;Las opciones comunes se pueden dividir aproximadamente en dos grupos. Un grupo son los embeddings de texto de propósito general que cubren tareas en chino, inglés y multilingües. El otro grupo está mejor adaptado a escenarios en chino, especialmente la recuperación en chino, el QA en chino y las bases de conocimiento en chino.&lt;/p&gt;
&lt;p&gt;Si quieres la versión corta primero, esta es una forma práctica de verlo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si quieres el camino más fácil y prefieres usar una API directamente: &lt;code&gt;text-embedding-3-small&lt;/code&gt; o &lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si quieres recuperación en chino y prefieres modelos de código abierto que puedes autoalojar: &lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;, &lt;code&gt;bge-m3&lt;/code&gt;, &lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si necesitas soporte multilingüe: &lt;code&gt;multilingual-e5-base&lt;/code&gt;, &lt;code&gt;multilingual-e5-large&lt;/code&gt;, &lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si quieres mantener bajos los costos en escenarios chinos: &lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;, &lt;code&gt;gte-base-zh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-primero-míralos-por-categoría&#34;&gt;1. Primero, Míralos por Categoría
&lt;/h2&gt;&lt;h3 id=&#34;1-serie-openai&#34;&gt;1. Serie OpenAI
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las principales fortalezas de estos modelos son la simplicidad y la estabilidad. Son adecuados si quieres llamar a una API directamente para recuperación, RAG, clasificación y coincidencia de similitud. Su ventaja no es que dominen una tabla de clasificación china específica, sino que la experiencia general es completa: bajo costo de integración, calidad estable y baja sobrecarga de ingeniería.&lt;/p&gt;
&lt;p&gt;Si tu equipo no quiere alojar modelos ni mantener servicios de inferencia, OpenAI suele ser la opción que ahorra más tiempo.&lt;/p&gt;
&lt;h3 id=&#34;2-serie-bge&#34;&gt;2. Serie BGE
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;BAAI/bge-small-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BAAI/bge-base-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;BGE es una de las familias más comunes utilizadas en recuperación china. &lt;code&gt;bge-small-zh-v1.5&lt;/code&gt; y &lt;code&gt;bge-base-zh-v1.5&lt;/code&gt; se inclinan más hacia tareas monolingües en chino, lo que los hace adecuados para la búsqueda semántica en chino, la recuperación de bases de conocimiento y la coincidencia de preguntas frecuentes (FAQ). &lt;code&gt;bge-m3&lt;/code&gt; es más de propósito general y puede cubrir escenarios de recuperación multilingües, de multi-granularidad y más complejos.&lt;/p&gt;
&lt;p&gt;Si la mayor parte de tus datos es texto en chino, BGE es a menudo una de las familias más fáciles de incluir en la lista corta.&lt;/p&gt;
&lt;h3 id=&#34;3-serie-e5&#34;&gt;3. Serie E5
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;intfloat/multilingual-e5-base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-large&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La fortaleza de la familia E5 es una capacidad multilingüe más equilibrada. Funciona bien para datos mixtos chinos-inglés, recuperación translingüística y bibliotecas de contenido internacionalizado. No se enfoca solo en chino.&lt;/p&gt;
&lt;h3 id=&#34;4-serie-e5&#34;&gt;4. Serie E5
&lt;/h3&gt;&lt;h3 id=&#34;5-serie-e5&#34;&gt;5. Serie E5
&lt;/h3&gt;&lt;h2 id=&#34;6-serie-e5&#34;&gt;6. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;7-serie-e5&#34;&gt;7. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;8-serie-e5&#34;&gt;8. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;9-serie-e5&#34;&gt;9. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;10-serie-e5&#34;&gt;10. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;11-serie-e5&#34;&gt;11. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;12-serie-e5&#34;&gt;12. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;13-serie-e5&#34;&gt;13. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;14-serie-e5&#34;&gt;14. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;15-serie-e5&#34;&gt;15. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;16-serie-e5&#34;&gt;16. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;17-serie-e5&#34;&gt;17. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;18-serie-e5&#34;&gt;18. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;19-serie-e5&#34;&gt;19. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;20-serie-e5&#34;&gt;20. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;21-serie-e5&#34;&gt;21. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;22-serie-e5&#34;&gt;22. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;23-serie-e5&#34;&gt;23. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;24-serie-e5&#34;&gt;24. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;25-serie-e5&#34;&gt;25. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;26-serie-e5&#34;&gt;26. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;27-serie-e5&#34;&gt;27. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;28-serie-e5&#34;&gt;28. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;29-serie-e5&#34;&gt;29. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;30-serie-e5&#34;&gt;30. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;31-serie-e5&#34;&gt;31. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;32-serie-e5&#34;&gt;32. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;33-serie-e5&#34;&gt;33. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;34-serie-e5&#34;&gt;34. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;35-serie-e5&#34;&gt;35. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;36-serie-e5&#34;&gt;36. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;37-serie-e5&#34;&gt;37. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;38-serie-e5&#34;&gt;38. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;39-serie-e5&#34;&gt;39. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;40-serie-e5&#34;&gt;40. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;41-serie-e5&#34;&gt;41. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;42-serie-e5&#34;&gt;42. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;43-serie-e5&#34;&gt;43. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;44-serie-e5&#34;&gt;44. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;45-serie-e5&#34;&gt;45. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;46-serie-e5&#34;&gt;46. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;47-serie-e5&#34;&gt;47. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;48-serie-e5&#34;&gt;48. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;49-serie-e5&#34;&gt;49. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;50-serie-e5&#34;&gt;50. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;51-serie-e5&#34;&gt;51. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;52-serie-e5&#34;&gt;52. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;53-serie-e5&#34;&gt;53. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;54-serie-e5&#34;&gt;54. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;55-serie-e5&#34;&gt;55. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;56-serie-e5&#34;&gt;56. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;57-serie-e5&#34;&gt;57. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;58-serie-e5&#34;&gt;58. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;59-serie-e5&#34;&gt;59. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;60-serie-e5&#34;&gt;60. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;61-serie-e5&#34;&gt;61. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;62-serie-e5&#34;&gt;62. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;63-serie-e5&#34;&gt;63. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;64-serie-e5&#34;&gt;64. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;65-serie-e5&#34;&gt;65. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;66-serie-e5&#34;&gt;66. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;67-serie-e5&#34;&gt;67. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;68-serie-e5&#34;&gt;68. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;69-serie-e5&#34;&gt;69. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;70-serie-e5&#34;&gt;70. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;71-serie-e5&#34;&gt;71. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;72-serie-e5&#34;&gt;72. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;73-serie-e5&#34;&gt;73. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;74-serie-e5&#34;&gt;74. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;75-serie-e5&#34;&gt;75. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;76-serie-e5&#34;&gt;76. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;77-serie-e5&#34;&gt;77. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;78-serie-e5&#34;&gt;78. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;79-serie-e5&#34;&gt;79. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;80-serie-e5&#34;&gt;80. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;81-serie-e5&#34;&gt;81. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;82-serie-e5&#34;&gt;82. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;83-serie-e5&#34;&gt;83. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;84-serie-e5&#34;&gt;84. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;85-serie-e5&#34;&gt;85. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;86-serie-e5&#34;&gt;86. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;87-serie-e5&#34;&gt;87. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;88-serie-e5&#34;&gt;88. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;89-serie-e5&#34;&gt;89. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;90-serie-e5&#34;&gt;90. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;91-serie-e5&#34;&gt;91. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;92-serie-e5&#34;&gt;92. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;93-serie-e5&#34;&gt;93. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;94-serie-e5&#34;&gt;94. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;95-serie-e5&#34;&gt;95. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;96-serie-e5&#34;&gt;96. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;97-serie-e5&#34;&gt;97. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;98-serie-e5&#34;&gt;98. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;99-serie-e5&#34;&gt;99. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;100-serie-e5&#34;&gt;100. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;101-serie-e5&#34;&gt;101. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;102-serie-e5&#34;&gt;102. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;103-serie-e5&#34;&gt;103. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;104-serie-e5&#34;&gt;104. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;105-serie-e5&#34;&gt;105. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;106-serie-e5&#34;&gt;106. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;107-serie-e5&#34;&gt;107. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;108-serie-e5&#34;&gt;108. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;109-serie-e5&#34;&gt;109. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;110-serie-e5&#34;&gt;110. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;111-serie-e5&#34;&gt;111. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;112-serie-e5&#34;&gt;112. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;113-serie-e5&#34;&gt;113. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;114-serie-e5&#34;&gt;114. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;115-serie-e5&#34;&gt;115. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;116-serie-e5&#34;&gt;116. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;117-serie-e5&#34;&gt;117. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;118-serie-e5&#34;&gt;118. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;119-serie-e5&#34;&gt;119. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;120-serie-e5&#34;&gt;120. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;121-serie-e5&#34;&gt;121. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;122-serie-e5&#34;&gt;122. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;123-serie-e5&#34;&gt;123. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;124-serie-e5&#34;&gt;124. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;125-serie-e5&#34;&gt;125. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;126-serie-e5&#34;&gt;126. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;127-serie-e5&#34;&gt;127. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;128-serie-e5&#34;&gt;128. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;129-serie-e5&#34;&gt;129. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;130-serie-e5&#34;&gt;130. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;131-serie-e5&#34;&gt;131. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;132-serie-e5&#34;&gt;132. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;133-serie-e5&#34;&gt;133. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;134-serie-e5&#34;&gt;134. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;135-serie-e5&#34;&gt;135. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;136-serie-e5&#34;&gt;136. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;137-serie-e5&#34;&gt;137. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;138-serie-e5&#34;&gt;138. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;139-serie-e5&#34;&gt;139. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;140-serie-e5&#34;&gt;140. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;141-serie-e5&#34;&gt;141. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;142-serie-e5&#34;&gt;142. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;143-serie-e5&#34;&gt;143. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;144-serie-e5&#34;&gt;144. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;145-serie-e5&#34;&gt;145. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;146-serie-e5&#34;&gt;146. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;147-serie-e5&#34;&gt;147. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;148-serie-e5&#34;&gt;148. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;149-serie-e5&#34;&gt;149. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;150-serie-e5&#34;&gt;150. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;151-serie-e5&#34;&gt;151. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;152-serie-e5&#34;&gt;152. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;153-serie-e5&#34;&gt;153. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;154-serie-e5&#34;&gt;154. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;155-serie-e5&#34;&gt;155. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;156-serie-e5&#34;&gt;156. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;157-serie-e5&#34;&gt;157. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;158-serie-e5&#34;&gt;158. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;159-serie-e5&#34;&gt;159. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;160-serie-e5&#34;&gt;160. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;161-serie-e5&#34;&gt;161. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;162-serie-e5&#34;&gt;162. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;163-serie-e5&#34;&gt;163. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;164-serie-e5&#34;&gt;164. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;165-serie-e5&#34;&gt;165. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;166-serie-e5&#34;&gt;166. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;167-serie-e5&#34;&gt;167. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;168-serie-e5&#34;&gt;168. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;169-serie-e5&#34;&gt;169. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;170-serie-e5&#34;&gt;170. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;171-serie-e5&#34;&gt;171. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;172-serie-e5&#34;&gt;172. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;173-serie-e5&#34;&gt;173. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;174-serie-e5&#34;&gt;174. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;175-serie-e5&#34;&gt;175. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;176-serie-e5&#34;&gt;176. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;177-serie-e5&#34;&gt;177. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;178-serie-e5&#34;&gt;178. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;179-serie-e5&#34;&gt;179. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;180-serie-e5&#34;&gt;180. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;181-serie-e5&#34;&gt;181. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;182-serie-e5&#34;&gt;182. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;183-serie-e5&#34;&gt;183. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;184-serie-e5&#34;&gt;184. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;185-serie-e5&#34;&gt;185. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;186-serie-e5&#34;&gt;186. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;187-serie-e5&#34;&gt;187. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;188-serie-e5&#34;&gt;188. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;189-serie-e5&#34;&gt;189. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;190-serie-e5&#34;&gt;190. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;191-serie-e5&#34;&gt;191. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;192-serie-e5&#34;&gt;192. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;193-serie-e5&#34;&gt;193. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;194-serie-e5&#34;&gt;194. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;195-serie-e5&#34;&gt;195. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;196-serie-e5&#34;&gt;196. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;197-serie-e5&#34;&gt;197. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;198-serie-e5&#34;&gt;198. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;199-serie-e5&#34;&gt;199. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;200-serie-e5&#34;&gt;200. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;201-serie-e5&#34;&gt;201. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;202-serie-e5&#34;&gt;202. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;203-serie-e5&#34;&gt;203. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;204-serie-e5&#34;&gt;204. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;205-serie-e5&#34;&gt;205. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;206-serie-e5&#34;&gt;206. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;207-serie-e5&#34;&gt;207. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;208-serie-e5&#34;&gt;208. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;209-serie-e5&#34;&gt;209. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;210-serie-e5&#34;&gt;210. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;211-serie-e5&#34;&gt;211. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;212-serie-e5&#34;&gt;212. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;213-serie-e5&#34;&gt;213. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;214-serie-e5&#34;&gt;214. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;215-serie-e5&#34;&gt;215. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;216-serie-e5&#34;&gt;216. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;217-serie-e5&#34;&gt;217. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;218-serie-e5&#34;&gt;218. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;219-serie-e5&#34;&gt;219. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;220-serie-e5&#34;&gt;220. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;221-serie-e5&#34;&gt;221. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;222-serie-e5&#34;&gt;222. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;223-serie-e5&#34;&gt;223. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;224-serie-e5&#34;&gt;224. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;225-serie-e5&#34;&gt;225. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;226-serie-e5&#34;&gt;226. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;227-serie-e5&#34;&gt;227. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;228-serie-e5&#34;&gt;228. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;229-serie-e5&#34;&gt;229. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;230-serie-e5&#34;&gt;230. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;231-serie-e5&#34;&gt;231. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;232-serie-e5&#34;&gt;232. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;233-serie-e5&#34;&gt;233. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;234-serie-e5&#34;&gt;234. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;235-serie-e5&#34;&gt;235. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;236-serie-e5&#34;&gt;236. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;237-serie-e5&#34;&gt;237. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;238-serie-e5&#34;&gt;238. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;239-serie-e5&#34;&gt;239. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;240-serie-e5&#34;&gt;240. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;241-serie-e5&#34;&gt;241. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;242-serie-e5&#34;&gt;242. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;243-serie-e5&#34;&gt;243. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;244-serie-e5&#34;&gt;244. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;245-serie-e5&#34;&gt;245. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;246-serie-e5&#34;&gt;246. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;247-serie-e5&#34;&gt;247. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;248-serie-e5&#34;&gt;248. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;249-serie-e5&#34;&gt;249. Serie E5
&lt;/h2&gt;&lt;h2 id=&#34;250-serie-e5&#34;&gt;250. Serie E5
&lt;/h2&gt;</description>
        </item>
        <item>
        <title>Términos de AI explicados: Agent, MCP, RAG y Token en lenguaje simple</title>
        <link>https://knightli.com/es/2026/04/23/ai-terms-agent-mcp-rag-token-explained/</link>
        <pubDate>Thu, 23 Apr 2026 13:13:40 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/23/ai-terms-agent-mcp-rag-token-explained/</guid>
        <description>&lt;p&gt;Cuando la gente empieza con AI, lo que suele alejarla no son los modelos en sí, sino la larga lista de términos que aparecen en cada discusión. &lt;code&gt;Agent&lt;/code&gt;, &lt;code&gt;MCP&lt;/code&gt;, &lt;code&gt;RAG&lt;/code&gt;, &lt;code&gt;AIGC&lt;/code&gt; y &lt;code&gt;Token&lt;/code&gt; suenan familiares, pero sin una explicación simple muchas personas solo reconocen las palabras sin entenderlas de verdad.&lt;/p&gt;
&lt;p&gt;Este artículo condensa 10 términos frecuentes de AI en significados más fáciles de recordar. El objetivo no es sonar académico, sino ayudarte a construir un modelo mental básico para seguir conversaciones cotidianas sobre AI.&lt;/p&gt;
&lt;h2 id=&#34;10-términos-comunes-de-ai-y-qué-significan&#34;&gt;10 términos comunes de AI y qué significan
&lt;/h2&gt;&lt;h3 id=&#34;1-agent-una-ai-que-hace-más-que-chatear&#34;&gt;1. Agent: una AI que hace más que chatear
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Agent&lt;/code&gt; puede entenderse como un asistente AI que realmente hace trabajo.&lt;/p&gt;
&lt;p&gt;Un chatbot normal suele seguir un patrón de pregunta y respuesta. Un &lt;code&gt;Agent&lt;/code&gt; va más lejos: puede dividir una tarea en pasos, organizar un proceso, llamar herramientas y devolver un resultado terminado. Si le pides organizar materiales, buscar algo o generar un documento, quizá no solo dé consejos, sino que encadene acciones y las complete.&lt;/p&gt;
&lt;p&gt;Por eso el punto clave de un &lt;code&gt;Agent&lt;/code&gt; no es si puede hablar, sino si puede actuar.&lt;/p&gt;
&lt;h3 id=&#34;2-openclaw-un-asistente-ai-que-vive-en-tu-ordenador&#34;&gt;2. OpenClaw: un asistente AI que vive en tu ordenador
&lt;/h3&gt;&lt;p&gt;Aquí, &lt;code&gt;OpenClaw&lt;/code&gt; se describe como un tipo de asistente AI que vive en tu ordenador.&lt;/p&gt;
&lt;p&gt;Puedes pensar en esta herramienta como un ayudante AI más orientado al escritorio. No solo recibe texto. También puede observar la interfaz, llamar herramientas locales y ejecutar tareas paso a paso. Frente a un chat web normal, enfatiza mucho más la capacidad operativa.&lt;/p&gt;
&lt;p&gt;Si &lt;code&gt;Agent&lt;/code&gt; es la idea abstracta de una AI orientada a ejecución, este tipo de asistente de escritorio es una versión concreta para ordenador personal.&lt;/p&gt;
&lt;h3 id=&#34;3-skills-paquetes-de-capacidad-añadidos-a-un-agent&#34;&gt;3. Skills: paquetes de capacidad añadidos a un Agent
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Skills&lt;/code&gt; pueden entenderse como módulos funcionales o instrucciones operativas para un &lt;code&gt;Agent&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;El mismo &lt;code&gt;Agent&lt;/code&gt; puede comportarse muy distinto según las &lt;code&gt;Skills&lt;/code&gt; que tenga. Algunas se centran en copywriting, otras en organizar datos y otras en código. Son un poco como apps en un teléfono y un poco como workflows reutilizables.&lt;/p&gt;
&lt;p&gt;En muchos casos no es que el modelo se vuelva más inteligente de repente. Es que se añadieron reglas, herramientas y pasos más claros detrás.&lt;/p&gt;
&lt;h3 id=&#34;4-mcp-una-forma-unificada-para-conectar-ai-con-herramientas&#34;&gt;4. MCP: una forma unificada para conectar AI con herramientas
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;MCP&lt;/code&gt; significa &lt;code&gt;Model Context Protocol&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En términos cotidianos, es un poco como un conector &lt;code&gt;Type-C&lt;/code&gt; para el mundo AI. Antes, conectar un modelo a distintas herramientas solía exigir integraciones separadas una por una. Con un protocolo unificado, la forma de conectar herramientas se vuelve más estándar y reutilizable.&lt;/p&gt;
&lt;p&gt;Para la mayoría de usuarios, lo importante es recordar esto: &lt;code&gt;MCP&lt;/code&gt; no trata de si un modelo puede responder una pregunta. Trata de cómo un modelo puede conectarse a herramientas y recursos externos de forma segura y estable.&lt;/p&gt;
&lt;h3 id=&#34;5-gacha-la-salida-ai-es-inherentemente-aleatoria&#34;&gt;5. Gacha: la salida AI es inherentemente aleatoria
&lt;/h3&gt;&lt;p&gt;El término &amp;ldquo;gacha&amp;rdquo; aparece a menudo en generación de imágenes, video y trabajo creativo con &lt;code&gt;AI&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;La idea es simple. Incluso con el mismo prompt y la misma dirección general, el resultado puede cambiar cada vez. A veces sale genial. A veces se rompe. Por eso se compara repetir generaciones con tirar gacha en un juego.&lt;/p&gt;
&lt;p&gt;Esto recuerda que la generación AI no es una fórmula fija, sino un proceso probabilístico con variación.&lt;/p&gt;
&lt;h3 id=&#34;6-api-la-conexión-entre-una-app-y-un-modelo&#34;&gt;6. API: la conexión entre una app y un modelo
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;API&lt;/code&gt; significa &lt;code&gt;Application Programming Interface&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Puedes pensarla como el punto de entrada estándar por el que los programas se comunican. Cuando llamas un servicio de modelo desde tu app, script o editor, usas una &lt;code&gt;API&lt;/code&gt; para enviar una solicitud y recibir un resultado.&lt;/p&gt;
&lt;p&gt;Si comparas un servicio de modelo con un restaurante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;el menú es como la documentación de &lt;code&gt;API&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;hacer un pedido es como una solicitud &lt;code&gt;API&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;la cocina devolviendo el plato es como el modelo devolviendo resultado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por eso muchas herramientas pueden verse distintas en superficie y aun así llamar alguna &lt;code&gt;API&lt;/code&gt; por debajo.&lt;/p&gt;
&lt;h3 id=&#34;7-multimodalidad-ai-maneja-más-que-texto&#34;&gt;7. Multimodalidad: AI maneja más que texto
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Multimodality&lt;/code&gt; significa que AI ya no solo lee y escribe texto. Puede procesar varios tipos de entrada y salida.&lt;/p&gt;
&lt;p&gt;Por ejemplo, puede leer imágenes, entender voz, interpretar video, generar dibujos o soportar interacción de voz y video en tiempo real. Frente a los primeros modelos solo texto, los modelos multimodales se acercan más a combinar ver, oír, hablar y escribir.&lt;/p&gt;
&lt;p&gt;Por eso muchos productos AI ya no giran alrededor de una sola caja de texto.&lt;/p&gt;
&lt;h3 id=&#34;8-rag-recuperar-información-primero-y-luego-generar-respuesta&#34;&gt;8. RAG: recuperar información primero y luego generar respuesta
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;RAG&lt;/code&gt; significa &lt;code&gt;Retrieval-Augmented Generation&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Sirve para resolver un problema práctico: los datos de entrenamiento de un modelo tienen un límite temporal y no conoce automáticamente los documentos nuevos de tu empresa, registros de soporte o reglas de negocio. La idea de &lt;code&gt;RAG&lt;/code&gt; es recuperar primero material relevante de fuentes específicas y luego generar una respuesta basada en ese material.&lt;/p&gt;
&lt;p&gt;Su valor aparece en tres formas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;las respuestas se mantienen más cerca del material fuente real&lt;/li&gt;
&lt;li&gt;puedes rastrear de dónde salió la respuesta&lt;/li&gt;
&lt;li&gt;documentos nuevos pueden añadirse y reflejarse rápido&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por eso muchas bases de conocimiento empresariales, sistemas de atención AI y herramientas internas de Q&amp;amp;A dependen de &lt;code&gt;RAG&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;9-aigc-término-general-para-contenido-generado-por-ai&#34;&gt;9. AIGC: término general para contenido generado por AI
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;AIGC&lt;/code&gt; significa &lt;code&gt;AI Generated Content&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;No es una herramienta concreta. Es una etiqueta amplia para contenido producido por AI: texto, imágenes, audio, video y más. Escritura AI, ilustración AI, generación de video corto y síntesis de voz AI entran bajo &lt;code&gt;AIGC&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Lo importante es que describe una forma de producir contenido, no un modelo específico.&lt;/p&gt;
&lt;h3 id=&#34;10-token-la-unidad-usada-para-medir-procesamiento-del-modelo&#34;&gt;10. Token: la unidad usada para medir procesamiento del modelo
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Token&lt;/code&gt; puede entenderse como la unidad básica que un modelo usa para procesar texto.&lt;/p&gt;
&lt;p&gt;No equivale exactamente a un carácter o una palabra, pero en la práctica puedes tratarlo como la unidad común para cómputo y facturación del modelo. Tu entrada consume &lt;code&gt;Token&lt;/code&gt;, la salida del modelo consume &lt;code&gt;Token&lt;/code&gt; y el contexto guardado en memoria también ocupa &lt;code&gt;Token&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Por eso los servicios de modelos hablan tanto de longitud de contexto, control de coste y compresión de prompts. En el fondo, todo eso está ligado a &lt;code&gt;Token&lt;/code&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Notas del proyecto RAGFlow: funciones y uso de un motor RAG open source</title>
        <link>https://knightli.com/es/2026/04/15/ragflow-rag-engine-guide/</link>
        <pubDate>Wed, 15 Apr 2026 22:09:25 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/15/ragflow-rag-engine-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;RAGFlow&lt;/code&gt; es un motor RAG open source de &lt;code&gt;infiniflow&lt;/code&gt;. Su objetivo no es ofrecer una simple capa de &amp;ldquo;sube documentos y haz preguntas&amp;rdquo;, sino reunir parsing de documentos, chunking, recuperación, reranking, trazabilidad de citas, configuración de modelos, capacidades de agentes e integración API en un flujo completo.&lt;/p&gt;
&lt;p&gt;Si estás construyendo una base de conocimiento empresarial, Q&amp;amp;A sobre documentos, un asistente de soporte, recuperación de información interna o una capa de contexto más fiable para un LLM, RAGFlow es una de las opciones open source que merece atención seria.&lt;/p&gt;
&lt;h2 id=&#34;01-qué-problema-resuelve-ragflow&#34;&gt;01 Qué problema resuelve RAGFlow
&lt;/h2&gt;&lt;p&gt;La mayoría de sistemas RAG tropiezan con tres problemas comunes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El parsing de documentos es inestable, especialmente con PDFs, escaneos, tablas, imágenes y layouts complejos.&lt;/li&gt;
&lt;li&gt;La estrategia de chunking es opaca, así que la recuperación puede parecer correcta mientras el contexto real está incompleto.&lt;/li&gt;
&lt;li&gt;Las respuestas no tienen citas confiables, lo que dificulta verificar de dónde viene la respuesta.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;RAGFlow se centra justo en esos problemas. El README del proyecto enfatiza &lt;code&gt;Deep document understanding&lt;/code&gt;, chunking basado en plantillas, visualización de chunks, grounding de citas y recuperación multipath con reranking. En otras palabras, le importa más que una entrada de alta calidad lleve a respuestas de alta calidad que simplemente conectar una base vectorial a una UI de chat.&lt;/p&gt;
&lt;h2 id=&#34;02-funciones-principales&#34;&gt;02 Funciones principales
&lt;/h2&gt;&lt;h3 id=&#34;1-comprensión-profunda-de-documentos&#34;&gt;1. Comprensión profunda de documentos
&lt;/h3&gt;&lt;p&gt;RAGFlow puede extraer conocimiento de datos no estructurados complejos. El README lista formatos como Word, PPT, Excel, TXT, imágenes, documentos escaneados, datos estructurados y páginas web.&lt;/p&gt;
&lt;p&gt;Esto importa mucho para bases de conocimiento empresariales. El material real rara vez es Markdown limpio. Suele mezclar contratos, informes, tablas, PDFs escaneados, manuales de producto, capturas y contenido web. Si el parsing es débil, tanto la recuperación como las respuestas del LLM sufrirán.&lt;/p&gt;
&lt;h3 id=&#34;2-chunking-basado-en-plantillas&#34;&gt;2. Chunking basado en plantillas
&lt;/h3&gt;&lt;p&gt;RAGFlow ofrece chunking basado en plantillas. El valor está en que el chunking no es una caja negra: distintos tipos de documentos pueden usar estrategias distintas.&lt;/p&gt;
&lt;p&gt;Por ejemplo, artículos, papers, tablas, documentos Q&amp;amp;A, explicaciones de imágenes y cláusulas contractuales necesitan límites y granularidad de chunk diferentes. El chunking por plantillas ayuda a reducir frases rotas, pérdida de contexto de tablas y separación entre títulos y cuerpo.&lt;/p&gt;
&lt;h3 id=&#34;3-citas-trazables&#34;&gt;3. Citas trazables
&lt;/h3&gt;&lt;p&gt;RAGFlow enfatiza citas fundamentadas, es decir, respuestas que pueden rastrearse hasta pasajes fuente. También ofrece visualización de chunks, facilitando inspeccionar y ajustar resultados de parsing y chunking.&lt;/p&gt;
&lt;p&gt;Esto es especialmente importante en producción. El Q&amp;amp;A interno empresarial no solo necesita producir algo que parezca correcto; también debe ser verificable. Para políticas, cumplimiento, finanzas, documentación técnica y soporte al cliente, las citas y la trazabilidad son casi obligatorias.&lt;/p&gt;
&lt;h3 id=&#34;4-flujo-rag-automatizado&#34;&gt;4. Flujo RAG automatizado
&lt;/h3&gt;&lt;p&gt;RAGFlow convierte el ciclo de vida RAG en un flujo más completo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crear una base de conocimiento&lt;/li&gt;
&lt;li&gt;Subir o sincronizar datos&lt;/li&gt;
&lt;li&gt;Parsear documentos&lt;/li&gt;
&lt;li&gt;Revisar y ajustar chunks&lt;/li&gt;
&lt;li&gt;Configurar modelos LLM y embedding&lt;/li&gt;
&lt;li&gt;Ejecutar recuperación multipath y reranking&lt;/li&gt;
&lt;li&gt;Crear asistentes de chat&lt;/li&gt;
&lt;li&gt;Integrar mediante APIs en sistemas de negocio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso lo acerca más a una plataforma RAG que a una librería aislada. Para equipos importan tanto la UI como la API: personas no técnicas pueden mantener la base de conocimiento y los ingenieros pueden integrar la capacidad en sistemas existentes.&lt;/p&gt;
&lt;h3 id=&#34;5-extensiones-de-agent-mcp-y-workflow&#34;&gt;5. Extensiones de Agent, MCP y workflow
&lt;/h3&gt;&lt;p&gt;Las actualizaciones recientes de RAGFlow ya incluyen Agentic workflow, MCP, Agent Memory y componentes de ejecución de código. Eso sugiere que ya no se limita al Q&amp;amp;A tradicional de bases de conocimiento y también se mueve hacia escenarios orientados a agentes.&lt;/p&gt;
&lt;p&gt;Un patrón típico es que un agente use RAGFlow como capa fiable de conocimiento empresarial: recuperar contexto cuando lo necesita, generar respuestas con citas y combinarlo con herramientas o pasos de workflow cuando sea necesario.&lt;/p&gt;
&lt;h2 id=&#34;03-flujo-básico-de-uso&#34;&gt;03 Flujo básico de uso
&lt;/h2&gt;&lt;p&gt;Según la documentación oficial de quickstart, el uso común de RAGFlow puede resumirse en estos pasos.&lt;/p&gt;
&lt;h3 id=&#34;1-preparar-el-entorno&#34;&gt;1. Preparar el entorno
&lt;/h3&gt;&lt;p&gt;Los requisitos básicos listados en el README oficial son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU &amp;gt;= 4 cores&lt;/li&gt;
&lt;li&gt;RAM &amp;gt;= 16 GB&lt;/li&gt;
&lt;li&gt;Disk &amp;gt;= 50 GB&lt;/li&gt;
&lt;li&gt;Docker &amp;gt;= 24.0.0&lt;/li&gt;
&lt;li&gt;Docker Compose &amp;gt;= v2.26.1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si quieres usar el sandbox para el ejecutor de código, también necesitas &lt;code&gt;gVisor&lt;/code&gt;. Otra nota práctica es que las imágenes Docker oficiales apuntan principalmente a plataformas x86. Para ARM64, la documentación recomienda construir la imagen por cuenta propia.&lt;/p&gt;
&lt;h3 id=&#34;2-clonar-el-proyecto&#34;&gt;2. Clonar el proyecto
&lt;/h3&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;git clone https://github.com/infiniflow/ragflow.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ragflow/docker
&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;h3 id=&#34;3-revisar-vmmax_map_count&#34;&gt;3. Revisar &lt;code&gt;vm.max_map_count&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;El despliegue de RAGFlow depende de componentes como Elasticsearch u OpenSearch, así que en Linux normalmente hay que verificar:&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;sysctl vm.max_map_count
&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;Si el valor está por debajo de &lt;code&gt;262144&lt;/code&gt;, puedes configurarlo temporalmente:&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;sudo sysctl -w vm.max_map_count&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;262144&lt;/span&gt;
&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;Si quieres que persista tras reiniciar, añádelo a &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;4-arrancar-con-docker-compose&#34;&gt;4. Arrancar con Docker Compose
&lt;/h3&gt;&lt;p&gt;Puedes iniciar directamente el modo CPU:&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;docker compose -f docker-compose.yml up -d
&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;Si quieres aceleración GPU para tareas DeepDoc, el README muestra cómo activar &lt;code&gt;DEVICE=gpu&lt;/code&gt; en &lt;code&gt;.env&lt;/code&gt; antes del arranque:&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;sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;1i DEVICE=gpu&amp;#39;&lt;/span&gt; .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose -f docker-compose.yml up -d
&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;Luego inspecciona los logs:&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;docker logs -f docker-ragflow-cpu-1
&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;Cuando los servicios estén listos, abre la dirección de la máquina en el navegador. Con la configuración predeterminada suele ser:&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://IP_OF_YOUR_MACHINE
&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;h3 id=&#34;5-configurar-claves-api-de-modelos&#34;&gt;5. Configurar claves API de modelos
&lt;/h3&gt;&lt;p&gt;RAGFlow necesita configuración de LLM y modelos de embedding. El README menciona elegir la fábrica LLM predeterminada en &lt;code&gt;service_conf.yaml.template&lt;/code&gt; y actualizar el &lt;code&gt;API_KEY&lt;/code&gt; correspondiente.&lt;/p&gt;
&lt;p&gt;En la práctica, necesitas configurar modelos según tu proveedor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modelo de chat&lt;/li&gt;
&lt;li&gt;Modelo de embedding&lt;/li&gt;
&lt;li&gt;Modelo de rerank&lt;/li&gt;
&lt;li&gt;Modelo multimodal, si quieres entender imágenes dentro de PDFs o DOCX&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;6-crear-la-base-de-conocimiento-y-subir-documentos&#34;&gt;6. Crear la base de conocimiento y subir documentos
&lt;/h3&gt;&lt;p&gt;Después de arrancar el servicio, el flujo típico es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Iniciar sesión en la Web UI.&lt;/li&gt;
&lt;li&gt;Crear un dataset o base de conocimiento.&lt;/li&gt;
&lt;li&gt;Subir documentos o configurar una sincronización de fuente de datos.&lt;/li&gt;
&lt;li&gt;Esperar a que termine el parsing.&lt;/li&gt;
&lt;li&gt;Inspeccionar los chunks y ajustarlos si hace falta.&lt;/li&gt;
&lt;li&gt;Crear un asistente de chat y asociar la base de conocimiento.&lt;/li&gt;
&lt;li&gt;Probar calidad de respuesta y fuentes de cita.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si necesitas integrarlo con un sistema de negocio, puedes continuar con la API o SDK de RAGFlow y conectar recuperación y chat a tu propia aplicación.&lt;/p&gt;
&lt;h2 id=&#34;04-escenarios-adecuados&#34;&gt;04 Escenarios adecuados
&lt;/h2&gt;&lt;p&gt;RAGFlow encaja con necesidades como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Q&amp;amp;A de bases de conocimiento internas empresariales&lt;/li&gt;
&lt;li&gt;Manuales de producto, documentación técnica y recuperación de FAQ&lt;/li&gt;
&lt;li&gt;Asistentes de soporte al cliente y preventa&lt;/li&gt;
&lt;li&gt;Q&amp;amp;A trazable sobre contratos, informes y políticas&lt;/li&gt;
&lt;li&gt;Manejo unificado de materiales multiformato&lt;/li&gt;
&lt;li&gt;Equipos que quieren mantenimiento vía UI e integración API&lt;/li&gt;
&lt;li&gt;Sistemas que quieren usar RAG como capa de contexto para agentes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es especialmente adecuado cuando los formatos documentales son complejos, las citas importan y las personas quieren inspeccionar o intervenir en los resultados de parsing.&lt;/p&gt;
&lt;h2 id=&#34;05-qué-vigilar&#34;&gt;05 Qué vigilar
&lt;/h2&gt;&lt;p&gt;Primero, RAGFlow no es un script ligero. Tiene requisitos reales de infraestructura. La recomendación oficial es al menos 4 cores CPU, 16 GB de RAM y 50 GB de disco. Si solo quieres Q&amp;amp;A sobre una pequeña cantidad de Markdown, una plataforma completa puede ser innecesaria.&lt;/p&gt;
&lt;p&gt;Segundo, la calidad documental sigue importando. RAGFlow puede mejorar parsing y chunking, pero no puede hacer mágicamente fiable material fuente de baja calidad, obsoleto o contradictorio. El gobierno de la base de conocimiento sigue siendo importante antes de producción.&lt;/p&gt;
&lt;p&gt;Tercero, la selección de modelos afecta directamente la calidad. Las elecciones de embedding, rerank, chat y multimodal influyen en recuperación y respuestas. RAGFlow da el flujo, pero el resultado final sigue dependiendo de datos, modelos y ajuste.&lt;/p&gt;
&lt;p&gt;Cuarto, los despliegues en producción deben cuidar permisos y seguridad de datos. Las bases de conocimiento empresariales suelen contener documentos internos, así que el modelo de despliegue, control de acceso, logs, claves API y políticas de datos del proveedor deben diseñarse de antemano.&lt;/p&gt;
&lt;h2 id=&#34;06-conclusión-rápida&#34;&gt;06 Conclusión rápida
&lt;/h2&gt;&lt;p&gt;La fortaleza de RAGFlow es convertir las partes más difíciles de RAG en capacidades de plataforma: parsing de documentos complejos, chunking explicable, grounding de citas, recuperación multipath, reranking, configuración de modelos, Web UI, acceso API y extensiones de agentes.&lt;/p&gt;
&lt;p&gt;Si necesitas una base de conocimiento empresarial verificable y mantenible que pueda conectarse a sistemas de negocio, RAGFlow es más completo que una configuración de &amp;ldquo;base vectorial más chat UI simple&amp;rdquo;. En cambio, si solo necesitas Q&amp;amp;A personal a pequeña escala sobre datos simples, un framework RAG más ligero puede ser más eficiente en recursos.&lt;/p&gt;
&lt;h2 id=&#34;enlaces-relacionados&#34;&gt;Enlaces relacionados
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Proyecto GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/infiniflow/ragflow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/infiniflow/ragflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Documentación oficial: &lt;a class=&#34;link&#34; href=&#34;https://ragflow.io/docs/dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://ragflow.io/docs/dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Demo online: &lt;a class=&#34;link&#34; href=&#34;https://cloud.ragflow.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cloud.ragflow.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
