← Blog

Por qué tu chatbot inventa respuestas (y cuándo no hace falta una base vectorial)

Un chatbot no sabe lo que no le diste, pero igual puede contestar. Qué es RAG, dónde falla y cómo lo aplicamos en Nerdlabs.

En 2024, un tribunal de Columbia Británica, en Canadá, ordenó a Air Canada indemnizar a un pasajero al que su chatbot le había informado mal sobre una tarifa. La aerolínea argumentó que no debía responder por lo que dijera el bot. No funcionó.

Ese es el costo real de un chatbot que inventa: no es un error técnico, es una promesa hecha en nombre de tu empresa.

Por qué inventa

Un modelo de lenguaje genera la respuesta más probable según lo que aprendió y lo que recibe en la conversación. No sabe cuál es tu política de cambios ni tu stock de hoy. Si no le das ese dato, puede contestar igual, con el mismo tono seguro de cuando acierta.

Qué hace RAG

RAG (Retrieval-Augmented Generation) agrega un paso previo: antes de responder, el sistema busca en tus documentos los fragmentos relacionados con la pregunta y se los pasa al modelo junto con una instrucción: respondé a partir de esto.

La implementación más común divide los documentos en fragmentos y los convierte en embeddings, vectores numéricos que representan su significado. Así, una base vectorial puede encontrar "devoluciones" aunque el cliente haya escrito "quiero devolver lo que compré".

RAG reduce el problema, pero no lo elimina.

Dónde sigue fallando

  • No encuentra el fragmento correcto: si la búsqueda falla, el modelo responde con contexto equivocado o incompleto.
  • Encuentra uno viejo: la política cambió, pero el documento anterior sigue indexado.
  • Corta mal el documento: una condición queda en un fragmento y su excepción, en otro.
  • No tiene permiso para decir "no sé": si nadie se lo pide y lo prueba, puede intentar responder igual.

Cuándo no hace falta una base vectorial

  • Tenés pocos documentos: si las preguntas frecuentes y las políticas entran en el contexto del modelo, podés pasárselas directamente.
  • El dato está en un sistema: el precio, el stock o el estado de un pedido no se buscan en un texto, se consultan en su sistema con una herramienta o una consulta a la base de datos.
  • Buscás términos exactos: para códigos de producto o nombres propios, una búsqueda por palabras suele andar mejor.

La base vectorial suma valor cuando la gente pregunta con palabras distintas a las del documento. Incluso ahí, muchas veces conviene combinarla con búsqueda por palabras.

Cómo lo aplicamos en Nerdlabs

Nuestros agentes internos necesitan consultar la documentación de Nerdlabs. Esa documentación cambia seguido, la usan varios agentes y cada respuesta tiene que poder citar su fuente. Por eso armamos un servicio propio, con estas decisiones:

  • Búsqueda híbrida: PostgreSQL con pgvector combina búsqueda por significado y por palabras. Así encuentra tanto una pregunta dicha con otras palabras como el nombre exacto de una variable.
  • Índice al día: cada cambio en la documentación dispara una sincronización que se aplica completa o no se aplica. Si algo falla, sigue vigente el índice anterior.
  • Acceso por MCP y solo lectura: los agentes consultan por MCP, y las herramientas no pueden modificar nada.
  • Reglas de respuesta: el agente tiene que buscar antes de responder, afirmar solo lo que recuperó y citar la página. Si no está en la documentación, tiene que decirlo y marcar como opinión lo que agregue.

Una instrucción en el prompt no es una garantía, así que también hay que medir.

Cómo saber si funciona

Antes de ponerlo frente a clientes, armá una lista con preguntas reales y sus respuestas esperadas. Incluí preguntas que el sistema no debería poder contestar. Después medí tres cosas:

  1. ¿Encontró el fragmento correcto?
  2. ¿La respuesta se apoya en ese fragmento?
  3. ¿Dijo "no sé" cuando correspondía?

Nuestro set tiene preguntas reales y el documento que debería aparecer en cada una. Un comando calcula con qué frecuencia aparece entre los primeros resultados. Conviene volver a correr una prueba así cada vez que cambien los documentos, el modelo o el prompt.

Por dónde empezar

No empieces eligiendo una base vectorial. Empezá por las preguntas que recibís, dónde está cada respuesta y qué pasa si el bot se equivoca. Muchas veces, eso ya define una solución más simple.