Saltar al contenido
aprendeaws.dev

Módulo 16 · Inteligencia artificial en AWS/Lección 103

RAG: respuestas con tus propios datos

Darle al modelo los documentos correctos en el momento de la pregunta: fragmentación, embeddings, bases vectoriales, Knowledge Bases y búsqueda híbrida.

Al terminar podrás

  • →Explicar el flujo de RAG de la ingesta a la respuesta
  • →Elegir estrategia de fragmentación y almacén vectorial
  • →Configurar Amazon Bedrock Knowledge Bases con búsqueda híbrida y reranking
  • →Mantener el índice al día y evaluar la calidad de la recuperación

Un modelo fundacional sabe lo que vio cuando lo entrenaron. No conoce tu política de vacaciones, el manual de tu producto ni el precio que cambió ayer. Si le preguntas, puede inventar una respuesta que suena bien. La generación aumentada por recuperación (RAG, Retrieval-Augmented Generation) resuelve eso sin tocar el modelo: antes de responder, busca los fragmentos de tus documentos que tienen que ver con la pregunta y los pone dentro del prompt.

RAG se apoya en dos ideas de IA generativa y modelos fundacionales: los embeddings (vectores que representan el significado de un texto) y la ventana de contexto. Y en lo que ya sabes de prompts por Amazon Bedrock e ingeniería de prompts.

¿Por qué RAG y no reentrenar el modelo?

Hay tres formas de darle conocimiento a un modelo: escribirlo en el prompt, recuperarlo con RAG o ajustar el modelo con fine-tuning. Para conocimiento que cambia, que es privado o que necesita citas, RAG suele ganar. El detalle de fine-tuning y destilación está en personalizar modelos.

CriterioSolo promptRAGFine-tuning
Qué cambiaEl texto que envíasEl contexto que se agrega en cada preguntaLos pesos del modelo
Datos frescosSolo lo que cabe en el promptSí: actualizas el índice, no el modeloNo: hay que volver a entrenar
Citas y trazabilidadNoSí: cada respuesta apunta a sus fuentesNo: el conocimiento queda mezclado en el modelo
Esfuerzo y costoBajoMedio: ingesta, índice y consultasAlto: datos etiquetados, entrenamiento y hospedaje
Bueno paraTareas generalesPreguntas sobre documentos propios y cambiantesCambiar estilo, formato o dominar una tarea

RAG también reduce las alucinaciones porque ancla (grounding) la respuesta en texto real. No las elimina: el modelo puede ignorar el contexto o mezclarlo con lo que cree saber.

El flujo de punta a punta

RAG tiene dos fases. La indexación ocurre antes, cada vez que cambian los documentos. La consulta ocurre en cada pregunta.

  1. 1

    Ingerir

    Leer los documentos desde su origen: un bucket de S3, una wiki, SharePoint, un sitio web. Se extrae el texto, y con un analizador avanzado también tablas e imágenes.
  2. 2

    Fragmentar

    Cortar cada documento en fragmentos (chunks) de tamaño manejable. Un fragmento demasiado grande diluye el significado; uno demasiado chico pierde contexto.
  3. 3

    Generar embeddings

    Un modelo de embeddings convierte cada fragmento en un vector. En Bedrock, por ejemplo, Amazon Titan Text Embeddings V2, Cohere Embed o Amazon Nova Multimodal Embeddings para imágenes, audio y video.
  4. 4

    Guardar en el almacén vectorial

    Cada vector se guarda junto con su texto y sus metadatos (documento, página, fecha, país, área). Los metadatos permiten filtrar después.
  5. 5

    Recuperar

    Llega una pregunta. Se convierte en vector con el mismo modelo de embeddings y se buscan los fragmentos más cercanos (los top-k), con filtros y, si se activa, búsqueda por palabras clave.
  6. 6

    Aumentar el prompt

    Los fragmentos recuperados se insertan en una plantilla junto con la pregunta y las instrucciones: «responde solo con este contexto; si no está, dilo».
  7. 7

    Generar con citas

    El modelo responde y la aplicación muestra de qué documento salió cada afirmación. El usuario puede verificar.

Fragmentar bien y elegir dónde guardar

La fragmentación es la decisión que más afecta la calidad y la que más se subestima. Amazon Bedrock Knowledge Bases ofrece estas estrategias:

EstrategiaCómo corta y cuándo usarla
PredeterminadaFragmentos de unos 300 tokens que respetan las oracionesBuen punto de partida
Tamaño fijoTú eliges tokens por fragmento y porcentaje de solapamientoDocumentos homogéneos; el solapamiento evita cortar una idea a la mitad
SemánticaCorta donde cambia el tema, comparando oraciones vecinasTextos largos con temas mezclados; usa un modelo y cuesta más
JerárquicaFragmentos hijos pequeños para buscar y padres grandes para dar contextoManuales y contratos: precisión al buscar, contexto al responder
Sin fragmentar o con LambdaCada archivo es un fragmento, o tu propia función corta el textoPreguntas frecuentes ya separadas, o reglas de corte muy específicas

Después eliges el almacén vectorial. En AWS hay varias opciones:

  • Amazon OpenSearch Service

    OpenSearch Serverless o clústeres administrados. Búsqueda vectorial y por palabras clave en el mismo motor, filtros ricos y vectores binarios. La opción más completa para búsqueda híbrida.
  • Amazon Aurora

    Aurora PostgreSQL con la extensión pgvector. Ideal si tus datos ya viven en PostgreSQL y quieres unir vectores con tablas relacionales.
  • Amazon RDS

    RDS for PostgreSQL también soporta pgvector. Sirve para un RAG propio; la integración administrada de Knowledge Bases es con Aurora.
  • Amazon Neptune

    Neptune Analytics para GraphRAG: combina vectores con un grafo de entidades y relaciones. Útil cuando la respuesta exige conectar hechos de varios documentos.
  • Amazon S3 Vectors

    Buckets vectoriales dentro de S3, sin infraestructura que administrar. El menor costo para guardar muchos vectores; pensado para consultas poco frecuentes con latencia por debajo del segundo.
  • Amazon Kendra

    No es un almacén vectorial: es un buscador empresarial. Su índice GenAI funciona como recuperador administrado dentro de Knowledge Bases.

También existen búsqueda vectorial en Amazon DocumentDB y Amazon MemoryDB, y Knowledge Bases se conecta con Pinecone, Redis Enterprise Cloud y MongoDB Atlas. La regla práctica: usa el almacén que tu equipo ya opera, salvo que necesites algo que no tiene, como búsqueda híbrida o costo muy bajo para volúmenes enormes. Si necesitas un modelo de embeddings que Bedrock no ofrece, puedes hospedarlo en SageMaker AI.

Amazon Bedrock Knowledge Bases

Knowledge Bases arma el flujo completo por ti: conecta las fuentes, fragmenta, genera embeddings, escribe en el almacén y expone dos APIs. Retrieve devuelve solo los fragmentos, para que tú armes el prompt. RetrieveAndGenerate recupera, arma el prompt, llama al modelo y devuelve la respuesta con citas. Hay dos tipos:

  • Managed Knowledge Base: AWS administra el almacenamiento vectorial, la indexación y la recuperación. Trae conectores para S3, SharePoint, Confluence, Google Drive, OneDrive y un rastreador web, con sincronización automática y recuperación agéntica para preguntas que requieren varios saltos.
  • Knowledge base personalizada: tú eliges el almacén vectorial, el modelo de embeddings y la estrategia de fragmentación. Más control, más decisiones.

Las palancas para mejorar la recuperación:

  • Filtrado por metadatos: limita la búsqueda a fragmentos con ciertos atributos (país, versión, fecha). En S3, cada documento lleva un archivo .metadata.json al lado. Con el filtrado implícito, un modelo deduce el filtro a partir de la pregunta.
  • Búsqueda híbrida: combina la búsqueda por significado con la búsqueda por palabras exactas. Rescata códigos de producto, siglas y nombres propios que los embeddings confunden. Funciona con Aurora/RDS, OpenSearch Serverless y MongoDB cuando el índice tiene un campo de texto filtrable.
  • Reranking: un modelo reordenador (reranker), como Amazon Rerank o Cohere Rerank, vuelve a puntuar los candidatos frente a la pregunta. Recuperas 20, reordenas y pasas los 5 mejores.
  • Descomposición de consultas (query decomposition): parte una pregunta compleja en subpreguntas y recupera para cada una.
  • Plantilla de prompt y guardrails: personalizas las instrucciones de generación y aplicas Bedrock Guardrails a la entrada y la salida.
aws bedrock-agent-runtime retrieve-and-generate \
  --input '{"text": "¿Cuántos días de vacaciones tengo el primer año?"}' \
  --retrieve-and-generate-configuration '{
    "type": "KNOWLEDGE_BASE",
    "knowledgeBaseConfiguration": {
      "knowledgeBaseId": "KB1234ABCD",
      "modelArn": "<ARN del modelo o perfil de inferencia>",
      "retrievalConfiguration": {
        "vectorSearchConfiguration": {
          "numberOfResults": 8,
          "overrideSearchType": "HYBRID",
          "filter": { "equals": { "key": "pais", "value": "CO" } }
        }
      }
    }
  }'
# La respuesta trae el texto generado y "citations":
# qué fragmento y qué documento respaldan cada parte.

Mantener el índice al día

Un índice viejo es peor que no tener RAG: el modelo cita con confianza una política que ya no existe. En una knowledge base personalizada, cada cambio en la fuente exige una sincronización (StartIngestionJob). La sincronización es incremental: solo procesa documentos agregados, modificados o borrados desde la última vez. Si solo cambió el archivo de metadatos, Bedrock puede actualizarlos sin volver a generar embeddings.

Para no depender de que alguien se acuerde, programa la sincronización con EventBridge Scheduler, o dispárala con un evento de S3 que invoque una Lambda. La Managed Knowledge Base sincroniza sola. Después de un trabajo de ingesta, los vectores nuevos pueden tardar unos minutos en aparecer en las consultas.

Cuando RAG falla y cómo medirlo

SíntomaCausa probable y arreglo
La respuesta mezcla dos temasFragmentos demasiado grandesFragmentos más chicos o fragmentación jerárquica
Falta la mitad de la informaciónFragmentos demasiado chicos o top-k bajoMás solapamiento, más resultados y reranking
Cita datos de otro país o versiónFaltan metadatosAgrega metadatos y filtra por ellos
No encuentra un código de productoSolo búsqueda semánticaActiva la búsqueda híbrida
Responde con datos viejosÍndice desactualizadoSincronización programada y fecha en los metadatos
Recupera bien, pero inventaEl modelo ignora el contextoInstrucciones más estrictas y verificación de anclaje

Evalúa la recuperación por separado de la generación. Arma un conjunto de preguntas con los fragmentos que deberían salir y mide si salen: relevancia del contexto (lo recuperado sirve) y cobertura del contexto (lo recuperado contiene todo lo necesario). Bedrock Evaluations calcula ambas. El método completo está en evaluar modelos e IA generativa, y el impacto en la factura, en costos de la IA generativa.

Quiz

Pon a prueba lo que aprendiste

0 de 5 correctas · 5 sin responder

  1. 1.Un banco quiere que su asistente responda sobre productos cuyas tasas cambian cada semana y que cada respuesta muestre el documento de origen. ¿Qué enfoque conviene?

  2. 2.Los usuarios buscan por códigos de pieza como «XR-2207-B» y el asistente devuelve piezas parecidas pero equivocadas. ¿Qué ajuste ayuda más?

  3. 3.Una empresa SaaS indexa documentos de todos sus clientes en una sola knowledge base. Un cliente recibió un fragmento de otro cliente. ¿Qué medida corrige la causa?

  4. 4.Los manuales técnicos son largos. Con fragmentos chicos la búsqueda es precisa pero las respuestas quedan sin contexto; con fragmentos grandes la búsqueda empeora. ¿Qué estrategia equilibra ambas cosas?

  5. 5.Un equipo guarda cientos de millones de vectores de un archivo histórico que se consulta pocas veces al día. La prioridad es el menor costo de almacenamiento. ¿Qué almacén encaja?