RAG en NappAI
RAG (generación aumentada con recuperación) es la forma de que un agente de IA responda con tu información y no solo con lo que el modelo sabe de forma general. Antes de responder, el agente busca en tus documentos o en tus datos los fragmentos que tienen que ver con la pregunta y escribe la respuesta a partir de ellos.
Funciona en dos momentos:
- Preparar el conocimiento (ingesta). Tus documentos se dividen en fragmentos, cada fragmento se convierte en un vector (una huella numérica de su significado) y se guarda en una base vectorial. Se hace una vez, y otra cada vez que cambian los documentos.
- Responder (consulta). Cuando llega una pregunta, se buscan los fragmentos más parecidos, se ordenan y se pasan al agente, que contesta citando solo lo que ha encontrado.
En NappAI cada paso es un componente del lienzo. Eliges la base de datos, cómo se trocean los documentos, el modelo de vectores, la técnica de búsqueda y el agente, y los combinas sin escribir código.
Este vídeo recorre un RAG completo: un asistente para los técnicos de un servicio técnico de cafeteras que busca en toda la documentación, filtra por marca y consulta el historial de incidencias.
Lo que ves en el vídeo
- La base de conocimiento: 9 PDF guardados en el almacenamiento de NappAI. Son los manuales de la Jaltec Brío 2G, las Vellani Aurora 2G y 3G y el molino Molinar M64 OD, la garantía y las tarifas, la guía de mantenimiento, tres informes mensuales de incidencias y las preguntas frecuentes. Un mismo código de error significa cosas distintas en cada marca.
- El flujo «Base de conocimiento · ingesta»: un Storage Files lista los archivos (List Files) y otro los lee uno a uno en Batch Mode (Get File). Contextual Text Splitter los divide en fragmentos con contexto, Metadata Tagger etiqueta cada fragmento con la marca, el tipo de documento, el mes y los códigos que aparecen, y Qdrant los guarda con los vectores de FastEmbed Embeddings (Local). Se ejecuta en directo y se ve la tabla de fragmentos etiquetados.
- El flujo «Neo4j GraphRAG · guardar registros»: Storage Files lee el fichero de incidencias y Neo4j GraphRAG en la operación Add Records guarda cada una unida a su bar, su técnico y su máquina con tres líneas en Relationships. Al ejecutarlo: 24 incidencias y 72 relaciones en un segundo. En GraphRAG tienes las dos formas de llenar el grafo.
- El flujo «Asistente técnico · todo el RAG»: un Agent (DeepSeek) con tres herramientas. «Buscar en la documentación» une BM25 Retriever y Qdrant en un Ensemble Retriever, y Local Rerank se queda con los 5 mejores. «Buscar por marca» es Qdrant con un filtro por metadatos en modo
Dynamicque el agente rellena a partir de la pregunta. «Consultar incidencias» es Neo4j GraphRAG en la operación Text2Cypher sobre el grafo de incidencias, donde cada incidencia está unida a su bar, su técnico y su máquina. - «¿Qué pieza es la MO-305…?»: el condensador de arranque del molino Molinar, y la incidencia en la que se cambió.
- «Mi Vellani Aurora marca el error E07…»: caudalímetro bloqueado, la pieza VL-1180 y casos reales. Además avisa de que el E07 significa otra cosa en el molino.
- «¿Qué incidencias abiertas tiene Lucía Ortega…?»: las tres, cada una con su bar, sacadas del grafo. Y a «¿Cuánto cuesta comprar una Vellani Aurora nueva?» responde que no tiene ese dato en lugar de inventarlo.
Los dos flujos se explican en la receta Asistente técnico con manuales y grafo.
Un vídeo por técnica
Cada técnica del asistente tiene su propio vídeo, con la misma base de conocimiento:
| Técnica | Página con su vídeo |
|---|---|
| Filtros por metadatos: solo los documentos de una marca | Técnicas de recuperación y Qdrant |
| Self Query: un modelo escribe el filtro a partir de la pregunta | Self Query Retriever |
| Búsqueda híbrida y reordenación, para códigos y referencias | Local Rerank |
| Multi Query y compresión, para preguntas dichas con otras palabras | Multi Query Retriever |
| Fragmento pequeño, sección completa | Multi Vector Retriever |
| Agente de RAG con fuentes y comprobaciones | Agente de RAG |
| Medir las respuestas de tu propio RAG | RAG Evaluator |
Los tipos de RAG que puedes montar en NappAI
No hay un RAG mejor para todo. Cada tipo resuelve un tipo de pregunta, y lo habitual es combinar dos o tres. Las cifras de coste son las de nuestra medición y orientan, no prometen.
| Tipo | Para qué preguntas sirve | Componentes | Coste y tiempo por pregunta | Cuándo elegirlo |
|---|---|---|---|---|
| RAG básico con base vectorial | Preguntas dichas con otras palabras: «¿cada cuánto cambio las gomas del portafiltros?» | Un divisor de texto, FastEmbed Embeddings (Local) y una base vectorial (FAISS, Chroma DB, Qdrant, PGVector) | Sin llamadas a modelos. Decenas de milisegundos. | Siempre como punto de partida. |
| RAG híbrido (palabras + significado) | Preguntas con códigos, referencias o nombres exactos: «¿qué pieza es la JT-777?» | BM25 Retriever y la base vectorial, unidos en un Ensemble Retriever | Sin llamadas a modelos. Unos milisegundos más. | Tu información está llena de códigos de error, referencias de producto o números de pedido. |
| RAG con reordenación | Cuando el buen fragmento aparece, pero no el primero. | Local Rerank (gratuito, en la plataforma) o Cohere Rerank (servicio de Cohere) | Sin llamadas a modelos de lenguaje. Entre 1 y 2 segundos con 20 a 30 candidatos. | Quieres pasar al agente pocos fragmentos y buenos, y poder descartar los que no tienen que ver. |
| RAG con contexto | Fragmentos que no dicen de qué hablan: «Este código indica…», «Sustituye la pieza…» | Contextual Text Splitter en la ingesta | Una llamada a un modelo por fragmento, solo al preparar los documentos. Nada al preguntar. | Manuales, contratos o informes con apartados que no repiten el producto o el periodo. Junto con la reordenación, la mejor combinación medida. |
| RAG con etiquetas y filtros | Preguntas que acotan por marca, mes, tipo de documento o producto: «el error E07 en la Vellani» | Metadata Tagger en la ingesta y SelfQueryRetriever o los filtros de la base vectorial al buscar | Una llamada por fragmento al etiquetar. Con SelfQueryRetriever, una llamada más por pregunta (alrededor de 1 segundo). | El mismo término significa cosas distintas según el documento, o los usuarios preguntan por un periodo o una categoría. |
| GraphRAG | Preguntas que cruzan relaciones: «averías parecidas a esta, con su cliente y su técnico» | Neo4j GraphRAG en modo Vector + Graph o Hybrid + Graph | Sin llamadas a modelos. Decenas de milisegundos. | Tus datos son entidades unidas entre sí (clientes, máquinas, técnicos, pedidos) y quieres traer lo relacionado con cada resultado. |
| Consulta estructurada | Contar, ordenar o filtrar registros: «¿cuántas incidencias abiertas tiene Lucía?», «¿qué cliente tiene más?» | Neo4j GraphRAG en la operación Text2Cypher, o una consulta SQL preparada por ti con SQLRetrieverTool | Text2Cypher: una llamada a un modelo para escribir la consulta, alrededor de 1 segundo. Una consulta preparada no necesita modelo. | Tienes registros operativos (incidencias, pedidos, tickets) y las preguntas piden cifras exactas. |
| Agente de RAG con verificación | Políticas, condiciones o soporte donde una respuesta inventada sale cara. | RAG Agent con uno o varios buscadores | Varias llamadas por pregunta: puntúa cada documento y revisa la respuesta. Es la opción más lenta. | Prefieres un «no lo encuentro» a una respuesta dudosa, y quieres que se compruebe cada respuesta sin configurarlo tú. |
Cómo elegir
- Empieza por el RAG básico con FastEmbed Embeddings (Local) y la base vectorial que mejor te encaje. Ya responde bien a las preguntas dichas con otras palabras.
- Si tus usuarios preguntan por códigos o referencias, añade Local Rerank o la búsqueda híbrida.
- Si muchos fragmentos no dicen de qué hablan, usa Contextual Text Splitter en la ingesta.
- Si las preguntas acotan por marca, mes o tipo de documento, guarda esos datos en cada fragmento y filtra por ellos.
- Si las preguntas cuentan, ordenan o filtran registros, esos registros van en una base de datos que se consulta (un grafo en Neo4j o una base SQL), no en fragmentos de texto.
- Si una respuesta equivocada tiene consecuencias, usa el RAG Agent o, como mínimo, pide al agente en sus instrucciones que diga «no lo sé» cuando no lo encuentre.
La combinación que mejor funcionó en nuestra medición fue: fragmentos con contexto, búsqueda híbrida y Local Rerank. Encontró la respuesta entre los cinco primeros resultados en todas las preguntas sobre documentos, frente al 83 % de la búsqueda básica. Los detalles están en Técnicas de recuperación.
Qué te da NappAI
- Todo son componentes. La base de datos, el troceado, el modelo de vectores, la técnica de búsqueda, la reordenación y el agente se eligen y se conectan en el lienzo, sin código. Cambiar de técnica es cambiar un componente.
- Opciones locales y gratuitas. FastEmbed Embeddings (Local) calcula los vectores y Local Rerank reordena los resultados dentro de la plataforma: sin clave de API, sin coste por uso y sin enviar tus textos a otro servicio.
- Varias fuentes en un mismo agente. Un Agent puede tener como herramientas la búsqueda en los manuales, la consulta al grafo de incidencias y cualquier otro componente, y usar las que necesite para cada pregunta.
- Grafos y registros junto a los documentos. Con Neo4j GraphRAG el mismo agente responde preguntas de relaciones y de recuento que una búsqueda en documentos no puede responder.
- Medido. Hemos probado las bases, las técnicas y los modelos de vectores con las mismas preguntas. Los resultados están en Cómo lo hemos medido.
En esta sección
| Página | Qué encontrarás |
|---|---|
| Bases vectoriales | FAISS, Chroma, Qdrant, PGVector y Neo4j comparadas, y cuál elegir. |
| Vectorización y etiquetado | De los archivos a los fragmentos: divisores, contexto, modelos de vectores y etiquetas. |
| Técnicas de recuperación | Qué técnica de búsqueda usar para cada tipo de pregunta y cómo conseguir que el agente diga «no lo sé». |
| GraphRAG con Neo4j | Cuándo un grafo responde mejor, los cinco modos y cómo preparar Neo4j. |
| Agente de RAG | El RAG Agent: qué hace cada opción, cuánto cuesta y configuraciones recomendadas. |
| Ejemplos paso a paso | Tres flujos completos para montar tal cual. |
| Cómo lo hemos medido | La prueba, sus resultados y sus límites. |