Semana 2 · Módulo 2 de 11

Datos para modelos fundacionales, embeddings y almacenes vectoriales

Aprenderás a validar, limpiar y transformar datos (texto, imágenes, audio, tablas) para que un modelo fundacional los consuma, a trocearlos y convertirlos en embeddings, y a elegir, dimensionar y mantener al día el almacén vectorial adecuado en AWS. Es la mitad «de datos» del dominio 1 y la base de RAG.

⏱ ~16 h de estudioTask statements: 1.31.4
Al terminar este módulo sabrás:
  • Diseñar flujos de validación de calidad de datos con AWS Glue Data Quality, SageMaker Data Wrangler, Lambda y CloudWatch
  • Procesar documentos, imágenes, audio y tablas con Textract, Transcribe, Bedrock Data Automation y modelos multimodales
  • Formatear las entradas según lo que espera cada API y cada modelo
  • Elegir estrategia de chunking y modelo de embeddings (dimensiones, idioma, modalidad)
  • Entender métricas de distancia e índices ANN (HNSW, IVF) y su impacto en recall, latencia y coste
  • Elegir el almacén vectorial adecuado (S3 Vectors, OpenSearch, Aurora pgvector, DocumentDB, Neptune, ElastiCache) con su coste
  • Diseñar metadatos y sistemas de sincronización para que el índice no se quede obsoleto
Índice del módulo

Reparto de la semana

Día Qué hacer Tiempo
Lunes Secciones 1 a 3: el viaje de los datos, ingesta y validación de calidad 2,5 h
Martes Secciones 4 a 6: procesar texto, imágenes, audio y tablas; formatear y mejorar entradas 2,5 h
Miércoles lab-03-pipeline-documentos 2,5 h
Jueves Secciones 7 a 10: chunking, embeddings, métricas de distancia e índices 2,5 h
Viernes Secciones 11 a 16: almacenes vectoriales, metadatos, integración y mantenimiento. lab-04-embeddings-s3-vectors 3 h
Sábado Test del módulo y repaso de los fallos 2 h
Domingo Tarjetas y «Trampas típicas» 1 h

Por qué importa

Un modelo fundacional es tan bueno como los datos que le das. Si le pasas un PDF escaneado sin OCR, un audio sin transcribir o un texto lleno de basura HTML, la respuesta será mala por mucho que pagues el mejor modelo. Y en RAG (módulo 3), si trocear, vectorizar o indexar se hace mal, el modelo recibirá fragmentos irrelevantes y alucinará con total seguridad.

Los task statements 1.3 (data validation and processing pipelines) y 1.4 (vector store solutions) forman la mitad «de datos» del dominio 1. El examen te preguntará:

  • Qué servicio usar para validar la calidad de los datos antes de que lleguen al modelo.
  • Cómo procesar documentos, imágenes, audio y tablas (Textract, Transcribe, Bedrock Data Automation, modelos multimodales, SageMaker Processing).
  • Cómo formatear las entradas según el modelo y la API.
  • Qué almacén vectorial elegir según escala, latencia, coste, filtrado y operación.
  • Cómo diseñar metadatos y cómo mantener el índice al día sin reindexarlo todo.

1. El viaje de los datos hasta el modelo

flowchart LR
  A["Fuentes: S3, SharePoint, wikis, bases de datos, SaaS, NAS, streams"] --> B["Ingesta: DataSync, Transfer Family, AppFlow, Kinesis, MSK"]
  B --> C["Aterrizaje en Amazon S3"]
  C --> D["Validación: Glue Data Quality, Lambda, CloudWatch"]
  D --> E["Procesamiento: Textract, Transcribe, BDA, modelos multimodales, SageMaker Processing"]
  E --> F["Mejora y metadatos: Comprehend, Bedrock, Lambda"]
  F --> G["Chunking"]
  G --> H["Embeddings: Titan, Cohere, Nova"]
  H --> I["Almacén vectorial: S3 Vectors, OpenSearch, Aurora pgvector…"]
  I --> J["Recuperación para el FM (RAG, módulo 3)"]

Dos maneras de construirlo:

  • Gestionada: Amazon Bedrock Knowledge Bases hace casi todo (conectores, parsing, chunking, embeddings, almacén, sincronización). Es la opción con LEAST operational overhead y la verás a fondo en el módulo 3.
  • A medida: Step Functions orquesta Lambda, Textract, Transcribe, Bedrock y el almacén vectorial que elijas. Más control y más trabajo. Es lo que construyes en los labs de esta semana para entender cada pieza.

2. Fuentes e ingesta

Lo básico de estos servicios ya lo conoces del SAA-C03. Aquí importa qué papel juegan en una solución de IA generativa:

Servicio Qué es (en una línea) Uso típico en IA generativa
Amazon S3 Almacenamiento de objetos Zona de aterrizaje del corpus, fuente de Knowledge Bases, entrada y salida de lotes
AWS DataSync Copia gestionada desde NFS, SMB, HDFS u otras nubes hacia S3, EFS o FSx; tareas programadas (mínimo cada hora) con modo incremental (TransferMode CHANGED) Llevar a S3 los documentos de un NAS corporativo cada noche
AWS Transfer Family Servidores SFTP, FTPS, FTP y AS2 gestionados sobre S3 o EFS Socios que envían contratos o facturas por SFTP
Amazon AppFlow Integración sin código con SaaS: Salesforce, ServiceNow, Zendesk, Slack, Microsoft SharePoint Online, Microsoft Teams, Google Analytics 4… Volcar tickets, casos o documentos de SaaS a S3 para indexarlos
Amazon Kinesis Data Streams Streaming en tiempo real con retención de 24 h a 365 días Eventos o conversaciones que hay que procesar en near real-time
Amazon Data Firehose Entrega gestionada de streams a S3, OpenSearch, Splunk, HTTP… con transformación opcional en Lambda Llevar logs o chats a S3 u OpenSearch sin código de consumidor
Amazon MSK Apache Kafka gestionado (con MSK Connect y MSK Serverless) Empresas que ya usan Kafka como bus de eventos
Amazon Athena SQL serverless sobre S3 y consultas federadas Explorar y filtrar el corpus, preparar datos tabulares
Amazon EMR (y EMR Serverless) Spark y Hive gestionados Preparar corpus masivos (limpieza y deduplicación a gran escala)
AWS Glue ETL serverless, Data Catalog, crawlers y Data Quality Catalogar, transformar y validar

3. Validar la calidad de los datos (Skill 1.3.1)

«Garbage in, garbage out». Antes de que un documento llegue al modelo o al índice vectorial, comprueba que cumple unos mínimos.

Qué significa «calidad» para un FM

Dimensión Ejemplo de problema Consecuencia
Completitud Campos vacíos, páginas sin texto (PDF escaneado sin OCR) El modelo no encuentra la respuesta
Unicidad El mismo documento indexado tres veces Resultados repetidos que desplazan a los relevantes
Validez de formato JSON mal formado, fechas imposibles, codificación rota Errores de proceso o datos basura
Longitud Textos vacíos o gigantes Chunks inútiles o que superan el límite del modelo de embeddings
Idioma Documentos en un idioma no soportado por el modelo de embeddings Búsquedas cruzadas de baja calidad
Actualidad Versiones obsoletas conviviendo con las vigentes Respuestas desactualizadas
Sensibilidad PII o secretos en el texto Riesgo legal y de fuga

AWS Glue Data Quality

Servicio serverless (basado en el proyecto de código abierto Deequ) para definir y evaluar reglas de calidad con DQDL (Data Quality Definition Language). Tiene dos puntos de entrada: sobre tablas del AWS Glue Data Catalog y dentro de trabajos ETL de Glue.

Rules = [
    IsComplete "document_id",
    IsUnique "document_id",
    Completeness "body_text" > 0.98,
    ColumnLength "body_text" > 50,
    ColumnValues "language" in ["es", "en"],
    RowCount > avg(last(3)),
    CustomSql "select count(*) from primary where body_text like '%<html%'" = 0
]
  • Más de 30 tipos de regla: IsComplete, IsUnique, Completeness, Uniqueness, ColumnLength, ColumnValues, RowCount, CustomSql, DataFreshness, DetectAnomalies, ReferentialIntegrity…
  • Reglas dinámicas que se comparan con ejecuciones anteriores (RowCount > avg(last(3))) y detección de anomalías.
  • Recomendaciones automáticas de reglas (sobre el Data Catalog).
  • Publica resultados en Amazon CloudWatch y eventos en Amazon EventBridge (por ejemplo, para parar el pipeline o avisar), y puede escribirlos en S3. En trabajos ETL, además, identifica qué registros fallan para desviarlos a cuarentena.

SageMaker Data Wrangler

Herramienta visual de preparación de datos. En la experiencia actual de SageMaker Studio se usa desde SageMaker Canvas. Ofrece cientos de transformaciones predefinidas y un informe de calidad e insights (Data Quality and Insights Report) que detecta valores ausentes, duplicados, atípicos y problemas de tipos. Útil cuando un analista quiere explorar y preparar un conjunto tabular sin programar.

Validación a medida con Lambda y métricas de CloudWatch

Para reglas específicas de texto (idioma, longitud, presencia de PII, codificación, OCR vacío), una función Lambda valida cada documento, publica métricas personalizadas en CloudWatch (documentos válidos, rechazados por motivo) y deja los rechazados en un prefijo de cuarentena. Con alarmas de CloudWatch sobre la tasa de rechazo detectas que una fuente se ha estropeado.

flowchart LR
  S3["S3: entrada/"] -->|"evento"| EB["EventBridge"]
  EB --> SF["Step Functions"]
  SF --> V["Lambda: validar (idioma, longitud, OCR, PII)"]
  V -->|"válido"| P["Procesamiento y embeddings"]
  V -->|"no válido"| Q["S3: cuarentena/"]
  V --> CW["CloudWatch: métricas y alarma de tasa de rechazo"]
  G["Glue Data Quality (datos tabulares)"] --> CW

4. Procesar datos complejos: texto, imagen, audio y tablas (Skill 1.3.2)

Documentos: Amazon Textract

Amazon Textract extrae texto, formularios y tablas de documentos escaneados e imágenes (OCR con estructura).

Operación Tipo Para qué
DetectDocumentText Síncrona Solo texto
AnalyzeDocument con FeatureTypes Síncrona TABLES, FORMS (pares clave-valor), QUERIES (preguntas en lenguaje natural), SIGNATURES, LAYOUT (títulos, párrafos, listas)
StartDocumentAnalysis / GetDocumentAnalysis Asíncrona Documentos multipágina (PDF, TIFF); avisa por SNS
AnalyzeExpense / StartExpenseAnalysis Síncrona / asíncrona Facturas y tiques
AnalyzeID Síncrona Documentos de identidad (solo pasaportes y permisos de conducir de EE. UU.)

Límites que conviene recordar: formatos JPEG, PNG, PDF y TIFF; las operaciones síncronas admiten 10 MB y una sola página en PDF o TIFF; las asíncronas, hasta 500 MB y 3.000 páginas. La detección de texto admite español, inglés, francés, alemán, italiano y portugués; las queries y la escritura a mano, solo inglés.

La función LAYOUT es especialmente útil para IA generativa: devuelve la estructura (títulos, secciones) que luego permite trocear por estructura (sección 7).

Audio: Amazon Transcribe

Amazon Transcribe convierte voz en texto, en lotes (fichero en S3) o en streaming (tiempo real).

  • Diarización (speaker diarization): identifica quién habla (hasta 30 hablantes) con ShowSpeakerLabels.
  • Vocabularios personalizados y modelos de lenguaje personalizados para jerga del sector.
  • Redacción de PII: en lotes, para varios dialectos (inglés, es-US, francés, alemán, italiano, portugués). Ojo con el español de España (es-ES): admite lotes y streaming, pero no modelos de lenguaje personalizados y la redacción de PII solo en streaming. Es el tipo de detalle que decide una respuesta.
  • Call Analytics para centros de contacto (en es-ES, solo post-llamada).
  • Salida JSON con transcripts, items (palabras con marca de tiempo y confianza) y speaker_labels.

Todo en uno: Amazon Bedrock Data Automation (BDA)

Bedrock Data Automation extrae información estructurada de contenido no estructurado —documentos, imágenes, audio y vídeo— usando IA generativa, con una sola API.

  • Salida estándar (standard output): lo que BDA extrae por defecto según el tipo (texto, resúmenes, transcripciones, descripción de escenas…).
  • Salida personalizada (custom output) con blueprints: defines los campos que quieres (por ejemplo, «importe total», «CIF del proveedor») y BDA los extrae. Disponible para documentos, imágenes y audio (no para vídeo).
  • Proyectos (projects): agrupan la configuración de salida estándar y los blueprints; los referencias al invocar.
  • APIs: InvokeDataAutomationAsync (asíncrona, con resultados en S3) e InvokeDataAutomation (síncrona, para cargas pequeñas).
  • Límites asíncronos para documentos: hasta 3.000 páginas y 500 MB.
  • Se puede usar como parser en Knowledge Bases para convertir audio, vídeo o documentos complejos en texto antes del chunking.
  • Precio por página, imagen o minuto (por ejemplo, en eu-south-2: 0,01 USD por página de documento con salida estándar y 0,04 USD con salida personalizada, según la API de precios a 1 de octubre de 2026).

Directamente con un modelo multimodal

Un modelo como Nova Lite, Nova 2 Lite o Claude puede leer imágenes y documentos que le envías en la Converse API y devolver lo que le pidas (un resumen, un JSON). Es flexible, pero pagas tokens por cada página o imagen y no tienes las garantías de estructura de Textract o BDA.

Procesamiento a medida: SageMaker Processing

SageMaker Processing ejecuta trabajos de procesamiento en contenedores gestionados (propios o predefinidos, por ejemplo con scikit-learn o Spark): lee de S3 (en /opt/ml/processing/input), ejecuta tu script y escribe en S3 (/opt/ml/processing/output). Úsalo cuando necesitas librerías específicas o más recursos de los que da Lambda (15 minutos, 10 GB de memoria): limpiar un corpus de millones de documentos, deduplicar, convertir formatos o evaluar calidad en lote.

¿Qué uso para cada tipo de dato?

Necesidad Primera opción Alternativas
OCR de formularios y tablas con estructura fiable Textract (FORMS, TABLES, LAYOUT) BDA con blueprint
Extraer campos de negocio de documentos, imágenes o audio con una sola API BDA (blueprints) Modelo multimodal con salida JSON
Transcribir llamadas o reuniones Transcribe (lotes o streaming, diarización) BDA para audio
Entender vídeo BDA (salida estándar) o modelo multimodal (Nova Lite) —
Describir o razonar sobre imágenes Modelo multimodal en Bedrock Rekognition para etiquetas y moderación (módulo 7)
Datos tabulares Glue o Athena para transformar; SageMaker Data Wrangler para explorar Convertirlos a texto descriptivo o usar KB de datos estructurados (NL a SQL, módulo 3)
Transformaciones pesadas con librerías propias SageMaker Processing o EMR Lambda para lo ligero

Arquitectura de un pipeline multimodal

flowchart TD
  S["S3: entrada/"] --> EB["EventBridge: Object Created"]
  EB --> SF["Step Functions"]
  SF --> T{"Tipo de fichero"}
  T -->|"PDF o imagen"| TX["Textract asíncrono (LAYOUT, TABLES)"]
  T -->|"Audio"| TR["Transcribe (diarización)"]
  T -->|"Vídeo o formatos complejos"| BDA["Bedrock Data Automation"]
  TX --> N["Lambda: normalizar y validar"]
  TR --> N
  BDA --> N
  N --> C["Comprehend: entidades y PII"]
  C --> OUT["S3: procesado/ (texto + metadata.json)"]
  OUT --> KB["Knowledge Base o pipeline de embeddings"]

Para miles de ficheros, el estado Distributed Map de Step Functions procesa objetos de S3 en paralelo (hasta 10.000 ejecuciones hijas simultáneas), con umbrales de fallos tolerados.

5. Formatear las entradas para cada modelo (Skill 1.3.3)

JSON para las APIs de Bedrock

Con InvokeModel, el cuerpo es el formato nativo del proveedor. Por ejemplo, para Titan Text Embeddings V2:

{
  "inputText": "¿Cuál es el plazo de devolución?",
  "dimensions": 512,
  "normalize": true,
  "embeddingTypes": ["float"]
}

La respuesta trae embedding (vector), inputTextTokenCount y embeddingsByType. Para Claude con InvokeModel el cuerpo lleva anthropic_version, max_tokens y messages; para Nova, messages e inferenceConfig. Cada uno distinto: por eso Converse es preferible para modelos de texto.

Formato conversacional (conversation formatting)

En la Converse API:

  • system: lista de bloques con las instrucciones de sistema (rol, reglas, formato).
  • messages: lista ordenada de mensajes con role (user o assistant) y content (lista de bloques). Los turnos se alternan, y el historial se reenvía completo en cada llamada.
  • Bloques de contenido: text, image (formatos png, jpeg, gif, webp; bytes o ubicación de S3), document (pdf, csv, doc, docx, xls, xlsx, html, txt, md; con name obligatorio), video, toolUse, toolResult.
  • Límites por mensaje: hasta 20 imágenes (máximo 3,75 MB y 8.000 × 8.000 píxeles cada una) y hasta 5 documentos (máximo 4,5 MB cada uno), solo en mensajes de user, y un documento debe ir acompañado de un bloque de texto.
mensajes = [
    {
        "role": "user",
        "content": [
            {"text": "Extrae el número de factura y el importe total en JSON."},
            {"document": {"format": "pdf", "name": "factura-0923", "source": {"bytes": pdf_bytes}}},
        ],
    }
]

Endpoints de SageMaker AI

Un endpoint de SageMaker recibe el formato que define su contenedor. Muchos contenedores de LLM aceptan un JSON del estilo {"inputs": "…", "parameters": {"max_new_tokens": 256, "temperature": 0.2}}, pero debes consultar la documentación del contenedor o del modelo de JumpStart. Prepara los datos estructurados (listas de registros, CSV) exactamente como los espera el ContentType configurado.

Lotes

La inferencia por lotes espera JSONL en S3: una línea por registro con recordId y modelInput (el cuerpo en formato InvokeModel o, si lo indicas, Converse).

{"recordId": "ticket-000001", "modelInput": {"messages": [{"role": "user", "content": [{"text": "Clasifica: no puedo pagar"}]}], "inferenceConfig": {"maxTokens": 10}}}

6. Mejorar la calidad de la entrada (Skill 1.3.4)

Pequeñas transformaciones antes del modelo o del índice mejoran mucho la calidad y la consistencia:

Técnica Herramienta Ejemplo
Normalizar texto Lambda Quitar HTML y cabeceras repetidas, unificar Unicode y espacios, fechas a ISO 8601, unidades homogéneas
Reformatear con un FM Bedrock (modelo barato) Convertir una transcripción caótica en texto limpio con párrafos; reescribir tablas como frases; generar un título y resumen por documento
Extraer entidades Amazon Comprehend Personas, organizaciones, lugares, fechas y cantidades (DetectEntities) como metadatos para filtrar
Detectar idioma Comprehend (DetectDominantLanguage) Enrutar a un modelo de embeddings multilingüe o descartar
Detectar y ocultar PII Comprehend (DetectPiiEntities, en inglés y español) Enmascarar DNI, IBAN o teléfonos antes de indexar (módulo 7)
Deduplicar Lambda con hash del contenido, Glue Evitar resultados repetidos
Enriquecer con contexto Lambda o Bedrock Añadir al chunk el título del documento y de la sección

7. Trocear documentos: estrategias de chunking

Los documentos no se vectorizan enteros: se trocean en chunks (fragmentos) y se genera un embedding por chunk. ¿Por qué?

  • Un embedding de un documento de 80 páginas mezcla decenas de temas y no se parece a ninguna pregunta concreta. Un chunk de un párrafo sí.
  • Los modelos de embeddings tienen un máximo de entrada (8.192 tokens en Titan Text Embeddings V2; 512 en Cohere Embed v3).
  • Al modelo generador solo le pasas los chunks relevantes: menos tokens, menos coste y menos ruido.

El dilema de siempre: chunks pequeños dan embeddings precisos pero sin contexto suficiente para responder; chunks grandes tienen contexto pero embeddings «diluidos» y más tokens por consulta.

Las estrategias

Estrategia Cómo funciona Ventajas Inconvenientes Cuándo
Tamaño fijo (fixed-size) N tokens por chunk con un solapamiento (overlap) entre consecutivos Simple, predecible, barato; fácil de implementar en Lambda Corta frases e ideas por la mitad; ignora la estructura Textos homogéneos (FAQ, tickets, correos); primera iteración
Jerárquico (hierarchical, padre-hijo) Chunks hijos pequeños para buscar y chunks padres grandes que los contienen; se busca por los hijos y se devuelve el padre Precisión de búsqueda de los pequeños + contexto de los grandes Más almacenamiento; se devuelven menos resultados de los pedidos (varios hijos comparten padre) Documentos largos y técnicos: manuales, contratos, normativas
Semántico (semantic) Divide donde cambia el significado, comparando embeddings de frases consecutivas Chunks temáticamente coherentes Más caro (usa un modelo para calcular similitudes) y más lento de ingerir Textos que saltan de tema sin estructura clara (transcripciones, artículos)
Por estructura (structure-based) Usa la estructura del documento: títulos, secciones, páginas, párrafos, Markdown, HTML, funciones de código Respeta unidades lógicas; permite añadir el título de sección como contexto Necesita parsing previo (Textract LAYOUT, BDA, parser con FM) o código propio Documentación bien estructurada, wikis, código
Sin chunking Cada fichero es un chunk Control total si ya viene troceado Solo sirve si pretroceas tú Ficheros pequeños ya segmentados (una FAQ por fichero)

Chunking en Amazon Bedrock Knowledge Bases

Bedrock Knowledge Bases ofrece estas opciones de fábrica:

  • Por defecto: chunks de aproximadamente 300 tokens respetando los límites de frase.
  • Tamaño fijo: indicas el máximo de tokens por chunk y el porcentaje de solapamiento.
  • Jerárquico: indicas el tamaño máximo del chunk padre, el del hijo y los tokens de solapamiento. En la recuperación se buscan los hijos y se sustituyen por sus padres, así que puedes recibir menos resultados de los pedidos.
  • Semántico: indicas el máximo de tokens, el tamaño del búfer (buffer size: cuántas frases vecinas se incluyen al calcular el embedding de cada frase; con 1, se combinan la anterior, la actual y la siguiente) y el umbral de percentil de ruptura (breakpoint percentile threshold: cuanto más alto, menos cortes y chunks más grandes). Tiene coste adicional porque usa un modelo fundacional.
  • Sin chunking: cada documento es un chunk (pierdes el número de página en las citas).
  • Transformación personalizada con Lambda: tu función recibe el contenido tras el parsing (usando un bucket S3 intermedio) y devuelve tus propios chunks; combinada con «sin chunking», te da control total. Es como implementas un chunking por estructura a tu medida.

Con contenido ya analizado por un parser avanzado, Bedrock respeta los límites lógicos (páginas, secciones) y no fusiona contenido entre ellos.

Tamaño y solapamiento: puntos de partida

  • Empieza con el valor por defecto (~300 tokens) o con 300–500 tokens y un 10–20 % de solapamiento, y mide con preguntas reales (evaluación de recuperación, módulo 10).
  • Preguntas muy concretas (códigos de error, cláusulas) → chunks más pequeños o jerárquico.
  • Preguntas que necesitan contexto amplio (explicar un procedimiento) → chunks más grandes o jerárquico.
  • Añade contexto al chunk: título del documento y de la sección al principio del texto que vectorizas. Mejora mucho la búsqueda.

La Skill 1.5.1 (segmentación de documentos para la recuperación) se amplía en el módulo 3; aquí te basta con elegir la estrategia y entender su impacto en el almacén vectorial.

8. Embeddings a fondo

Qué es exactamente un vector

Un embedding es una lista de números en coma flotante, por ejemplo de 1.024 dimensiones. Cada dimensión no tiene un significado legible por sí sola; lo que importa es la posición relativa: textos similares, vectores cercanos. Mismo modelo para indexar y para consultar, siempre: los vectores de modelos distintos no son comparables.

Modelos de embeddings en Amazon Bedrock

Datos de la documentación oficial, consultados el 01/10/2026:

Modelo ID Entrada Dimensiones Máximo de entrada Notas
Titan Text Embeddings V2 amazon.titan-embed-text-v2:0 Texto 1.024 (por defecto), 512, 256 8.192 tokens o 50.000 caracteres normalize (por defecto true); tipos float y binary; optimizado para inglés con soporte multilingüe (más de 100 idiomas, incluido el español); In-Region en Fráncfort e Irlanda
Titan Multimodal Embeddings G1 amazon.titan-embed-image-v1 Texto e imagen 1.024 en el ejemplo oficial (longitud configurable con outputEmbeddingLength) — Búsqueda de imágenes por texto y viceversa; In-Region en Fráncfort e Irlanda
Cohere Embed v3 (English / Multilingual) cohere.embed-english-v3, cohere.embed-multilingual-v3 Texto (e imagen) 1.024 512 tokens por texto, hasta 96 textos por petición input_type (search_document, search_query, classification, clustering, image); tipos float, int8, uint8, binary, ubinary
Cohere Embed v4 cohere.embed-v4:0 Texto, imagen e intercalado 256, 512, 1.024 o 1.536 (por defecto) Hasta 128K tokens Multimodal; en la UE mediante perfil eu.
Amazon Nova Multimodal Embeddings amazon.nova-2-multimodal-embeddings-v1:0 Texto, imagen, documento, vídeo, audio 256, 384, 1.024 o 3.072 (por defecto) 8K tokens; 30 s de vídeo o audio por segmento embeddingPurpose (GENERIC_INDEX, GENERIC_RETRIEVAL, TEXT_RETRIEVAL…); vídeo y audio largos con StartAsyncInvoke. A 01/10/2026, solo en us-east-1 (y GovCloud): no disponible en la UE
TwelveLabs Marengo Embed 3.0 twelvelabs.marengo-embed-3-0-v1:0 Texto, imagen, voz, vídeo — — Especializado en vídeo; en Irlanda

Cómo elegir el modelo de embeddings (dimensionality y domain fit)

Criterio Qué mirar
Idioma Corpus y preguntas en español o mezclados → modelo multilingüe (Titan V2, Cohere Multilingual o v4). La documentación de Titan V2 avisa de que las consultas entre idiomas (documentos en un idioma, pregunta en otro) dan resultados subóptimos
Modalidad Solo texto → Titan V2 o Cohere. Imágenes → Titan Multimodal, Cohere v4. Vídeo y audio → Nova Multimodal Embeddings, Marengo
Dimensiones Más dimensiones = algo más de calidad potencial, pero más almacenamiento, más memoria del índice y más latencia. Con millones de vectores, pasar de 1.024 a 256 dimensiones divide por cuatro el tamaño
Longitud de entrada Chunks grandes → modelo con límite de entrada suficiente (Cohere v3 trunca a 512 tokens)
Tipo de vector binary o int8 reducen mucho el tamaño con cierta pérdida de precisión. En Knowledge Bases, solo OpenSearch (Serverless o gestionado) admite vectores binarios
Disponibilidad regional El modelo debe estar en tu región o geografía (Nova Multimodal Embeddings no está en la UE)
Coste y cuotas Precio por token; los modelos de embeddings se limitan por peticiones por minuto (RPM)

Documentos frente a consultas

Algunos modelos distinguen el uso del embedding: Cohere con input_type (search_document al indexar, search_query al buscar) y Nova Multimodal Embeddings con embeddingPurpose (GENERIC_INDEX al indexar, *_RETRIEVAL al consultar). Usar el tipo correcto mejora la recuperación. Titan Text Embeddings V2 no tiene ese parámetro.

Generar embeddings a escala

  • Lambda que recibe lotes de chunks (por ejemplo, de una cola SQS o del estado Map de Step Functions) e invoca el modelo; controla la concurrencia para no superar las RPM.
  • Batch inference de Bedrock para vectorizar un corpus grande con descuento (el precio batch de Titan V2 es la mitad).
  • Knowledge Bases lo hace por ti en la ingesta.

Normalización

Normalizar un vector es escalarlo para que su longitud sea 1. Titan V2 lo hace por defecto (normalize: true). Con vectores normalizados, coseno y producto escalar dan el mismo orden de resultados y la distancia euclídea también es equivalente para ordenar.

9. Métricas de distancia

La métrica de distancia (o de similitud) decide qué vectores se consideran «cercanos». Elige la que recomienda el modelo de embeddings.

Métrica Qué mide Rango e interpretación Cuándo
Coseno (cosine similarity) El ángulo entre vectores; ignora la magnitud De −1 a 1 (1 = misma dirección) La más habitual con texto; ideal con vectores normalizados
Euclídea (L2) La distancia en línea recta 0 = idénticos; cuanto menor, más parecidos Cuando importan dirección y magnitud
Producto escalar (dot product, inner product) Proyección de un vector sobre otro Cuanto mayor, más parecidos Equivale al coseno si los vectores están normalizados; muy eficiente
Hamming Número de bits distintos Para vectores binarios Embeddings binarios en OpenSearch

Cómo se llama en cada servicio:

Servicio Métricas
S3 Vectors cosine, euclidean (fija al crear el índice; no se puede cambiar)
OpenSearch (k-NN) l2, cosinesimil, innerproduct, l1, linf, hamming
Aurora / RDS PostgreSQL (pgvector) Clases de operador vector_l2_ops, vector_cosine_ops, vector_ip_ops
DocumentDB euclidean, cosine, dotProduct
DynamoDB (búsqueda vectorial nativa) COSINE, EUCLIDEAN, DOT_PRODUCT

10. Índices: cómo se busca rápido entre millones de vectores

Búsqueda exacta frente a aproximada

  • k-NN exacto (flat, fuerza bruta): compara la consulta con todos los vectores. Recall perfecto, pero el coste crece linealmente: inviable con decenas de millones de vectores y baja latencia.
  • ANN (approximate nearest neighbor, vecinos más cercanos aproximados): estructuras de índice que encuentran casi siempre los más cercanos examinando solo una parte. Se mide con el recall (qué porcentaje de los verdaderos vecinos devuelve).

El triángulo de decisión: recall ↔ latencia ↔ memoria/coste. Subir uno suele empeorar otro.

HNSW (Hierarchical Navigable Small World)

Un grafo por capas: las capas superiores tienen pocos nodos con enlaces largos (para «saltar» rápido a la zona correcta) y las inferiores, todos los nodos con enlaces cortos (para afinar). La búsqueda baja de capa en capa acercándose a la consulta.

Parámetro Qué controla Subirlo
m Número de enlaces por nodo Más recall, más memoria
ef_construction Amplitud de la búsqueda al construir el índice Mejor grafo, indexación más lenta
ef_search Amplitud de la búsqueda al consultar Más recall, más latencia

Ventajas: muy buen recall con baja latencia y admite inserciones incrementales. Inconveniente: consume mucha memoria (el grafo vive en RAM). En pgvector, los valores por defecto de HNSW son m = 16 y ef_construction = 64; en DocumentDB, m = 16, efConstruction = 64 y efSearch = 40.

IVF (Inverted File)

Agrupa los vectores en nlist clústeres (con k-means) y, al consultar, solo examina los nprobes clústeres más cercanos a la consulta.

  • Necesita una fase de entrenamiento con datos representativos.
  • Menos memoria que HNSW; se combina bien con cuantización (IVF-PQ).
  • Recall algo menor y peor comportamiento si los datos cambian mucho respecto al entrenamiento.
  • En pgvector se llama IVFFlat (parámetros lists y ivfflat.probes).

Cuantización (quantization)

Guardar cada componente del vector con menos bits: float32 → fp16 (2×), byte/int8 (4×), binario (hasta 32×) o product quantization (PQ, hasta 64×). En OpenSearch existe además el modo en disco (on_disk) con niveles de compresión, que reduce drásticamente la memoria a cambio de algo de latencia.

Índice Recall Latencia Memoria Construcción Cuándo
Flat (exacto) 100 % Alta con muchos vectores Media Inmediata Pocos miles de vectores, o para medir el recall de otros
HNSW Muy alto Muy baja Alta Media-lenta Opción por defecto para baja latencia
IVF / IVFFlat Alto (depende de nprobes) Baja Menor Requiere entrenamiento Muchos vectores con memoria limitada
IVF-PQ, binario, on_disk Algo menor Baja-media Mínima Requiere entrenamiento (PQ) Miles de millones de vectores, coste por encima de todo

Filtrar y buscar a la vez

Cuando combinas búsqueda vectorial y filtro por metadatos («solo documentos de 2026 del departamento legal»), importa cuándo se filtra. Con post-filtrado (buscar los K más cercanos y luego filtrar) puedes quedarte con menos de K resultados. Los índices ENHANCED de S3 Vectors (los predeterminados en buckets creados desde el 30/09/2026) aplican pre-filtrado y mejoran el recall en consultas filtradas; los índices CLASSIC pueden devolver menos de K resultados.

11. Almacenes vectoriales en AWS

Amazon S3 Vectors

Buckets vectoriales (vector buckets) con índices vectoriales dentro, gestionados como S3: sin servidores ni capacidad que aprovisionar.

  • Hasta 2.000 millones de vectores por índice, 10.000 índices por bucket y 10.000 buckets por región.
  • Dimensiones de 1 a 4.096; métrica coseno o euclídea; tipo float32. Nombre, dimensión, métrica y claves no filtrables no se pueden cambiar tras crear el índice.
  • Metadatos: hasta 40 KB por vector (filtrable + no filtrable), de los que 2 KB filtrables, hasta 50 claves y hasta 10 claves no filtrables por índice (típico: guardar ahí el texto del chunk).
  • Filtros: $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $exists, $startsWith, $and, $or.
  • Latencia: subsegundo en consultas poco frecuentes y en torno a 100 ms en las frecuentes. Escrituras con consistencia fuerte.
  • Hasta 500 vectores por PutVectors; top-K de hasta 10.000 por consulta.
  • Precio: almacenamiento a 0,06 USD por GB-mes (us-east-1) y cobros por escritura, por consulta y por datos procesados. Para un corpus de miles de chunks: céntimos al mes.
  • Integración: almacén de Bedrock Knowledge Bases (con límites propios: 1 KB de metadatos personalizados y 35 claves por vector) y con OpenSearch (exportación puntual a OpenSearch Serverless para búsquedas avanzadas, o S3 Vectors como motor de índices en dominios gestionados).

Ideal para: RAG con volumen grande y consultas moderadas, coste mínimo y cero operación. No es para latencias de un solo dígito de milisegundos ni para búsqueda híbrida con palabras clave.

Amazon OpenSearch Service (dominios gestionados)

El motor de búsqueda más completo: k-NN con los motores Faiss y Lucene (NMSLIB es el histórico; Bedrock Knowledge Bases exige Faiss), métodos HNSW e IVF, hasta 10.000 dimensiones, cuantización y modo en disco. Y además búsqueda por palabras clave (BM25), agregaciones y búsqueda híbrida.

  • Neural search y ML Commons: conectores que invocan modelos de Amazon Bedrock (por ejemplo, Titan Embeddings) desde OpenSearch. Un ingest pipeline con el procesador text_embedding vectoriza al indexar, y la consulta neural vectoriza la pregunta. Hay plantillas de CloudFormation en la consola para la integración con Bedrock.
  • Búsqueda híbrida: un search pipeline con el procesador de normalización (min_max o l2) y combinación (arithmetic_mean…) mezcla los resultados léxicos y vectoriales.
  • Memoria: la mitad de la RAM de cada nodo va al heap de Java; los grafos k-NN usan como máximo la mitad del resto. Vigila la métrica KNNGraphMemoryUsage.
  • Sharding: la guía general recomienda shards de 10–30 GiB cuando la latencia de búsqueda es prioritaria (30–50 GiB para cargas de escritura). Más shards = más paralelismo, pero demasiados shards pequeños desperdician recursos. Las réplicas aumentan la capacidad de consulta y la disponibilidad (y multiplican la memoria).
  • Varios índices para dominios distintos (legal, técnico, RR. HH.): cada uno con su mapeo, su modelo y su tamaño de shard.
  • Los índices k-NN pueden moverse a UltraWarm y cold storage en dominios 2.17 o posteriores.

Ideal para: búsqueda híbrida, filtros complejos, latencia baja con alto volumen de consultas y equipos que ya usan OpenSearch. Coste por instancia-hora aunque no haya consultas.

Amazon OpenSearch Serverless (colecciones de búsqueda vectorial)

OpenSearch sin gestionar clústeres. Se crea una colección de tipo vector search y se paga por OCU (OpenSearch Compute Unit, 6 GiB de memoria más CPU) de indexación y de búsqueda, más almacenamiento. Precio orientativo: 0,268 USD por OCU-hora en eu-south-2.

  • Grupos de colecciones (collection groups): permiten fijar mínimos y máximos de OCU, con mínimo de 0 OCU para indexación y búsqueda (sin coste de cómputo en reposo).
  • Colecciones NextGen (escalan a cero, compresión 32× por defecto) y Classic (solo HNSW con Faiss; no admiten IVF).
  • Si una herramienta crea la colección por ti (por ejemplo, la creación rápida del almacén desde la consola de Knowledge Bases), revisa la capacidad configurada: una colección con mínimos de OCU encendidos 24/7 cuesta cientos de dólares al mes.

Amazon Aurora PostgreSQL y Amazon RDS for PostgreSQL con pgvector

La extensión pgvector añade el tipo vector y los índices HNSW e IVFFlat a PostgreSQL.

CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE bedrock_integration.bedrock_kb (
  id uuid PRIMARY KEY,
  embedding vector(1024),
  chunks text,
  metadata json,
  custom_metadata jsonb
);
CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops);
CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (to_tsvector('simple', chunks));
  • Como almacén de Knowledge Bases (solo Aurora PostgreSQL): pgvector 0.5.0 o superior, RDS Data API activada, credenciales en Secrets Manager y un índice GIN de texto completo para la búsqueda híbrida.
  • Ventaja decisiva: SQL y vectores en la misma base de datos. Unes la búsqueda semántica con tus tablas relacionales (permisos, precios, stock) y con transacciones.
  • Aurora Serverless v2 admite mínimo de 0 ACU con pausa automática: sin coste de cómputo cuando no hay conexiones (pagas almacenamiento). Precio orientativo: 0,14 USD por ACU-hora en eu-south-2.
  • Con pgvector 0.8.0, las consultas filtradas mejoran con el escaneo iterativo (hnsw.iterative_scan).

Ideal para: equipos con PostgreSQL, datos relacionales + vectores, RDS con documentos en S3 (metadatos y referencias en la base de datos, originales en S3).

Amazon DocumentDB

Búsqueda vectorial en clústeres basados en instancias (versión 5.0 o superior) con índices HNSW o IVFFlat, métricas euclidean, cosine y dotProduct e índices de hasta 2.000 dimensiones. Ideal si tus datos ya son documentos JSON en DocumentDB (compatible con MongoDB).

Amazon Neptune Analytics

Base de datos de grafos en memoria con un índice vectorial por grafo (dimensión fija, de 1 a 65.535, definida al crear el grafo). Bedrock Knowledge Bases lo usa para GraphRAG: combina búsqueda vectorial con las relaciones entre entidades para preguntas que requieren conectar información (módulo 3).

Amazon ElastiCache y Amazon MemoryDB

  • ElastiCache for Valkey 8.2 incluye búsqueda vectorial (HNSW y FLAT; coseno, euclídea y producto escalar) en clústeres basados en nodos sin coste adicional, con latencias de microsegundos. Su uso estrella: caché semántica (guardar respuestas a preguntas parecidas para no volver a invocar el modelo, módulo 9).
  • MemoryDB también ofrece búsqueda vectorial en memoria con durabilidad, limitada a un único shard.

Amazon DynamoDB

  • Desde el 5 de agosto de 2026, DynamoDB ofrece búsqueda vectorial nativa (índices vectoriales de hasta 4.096 dimensiones, métricas COSINE, EUCLIDEAN y DOT_PRODUCT, filtros de coincidencia exacta y hasta 100 resultados por consulta). No figura como almacén de Bedrock Knowledge Bases.
  • Su papel clásico en IA generativa, y el que cita la guía del examen: almacenar metadatos (propietario, versión, permisos, estado de indexación), historial de conversaciones y registro de qué se ha vectorizado, junto a un almacén vectorial.
  • La integración zero-ETL con OpenSearch (mediante OpenSearch Ingestion y DynamoDB Streams) mantiene un índice de OpenSearch sincronizado con una tabla sin escribir código.

Otros almacenes compatibles con Knowledge Bases

Pinecone, Redis Enterprise Cloud y MongoDB Atlas (servicios de terceros).

Tabla de decisión (con coste)

Precios orientativos a 1 de octubre de 2026; confírmalos en la página de precios de cada servicio.

Requisito dominante Elige Modelo de coste Por qué no los demás
Coste mínimo, cero operación, gran volumen, latencia de ~100 ms a subsegundo aceptable S3 Vectors Almacenamiento (0,06 USD/GB-mes en us-east-1) + peticiones y datos procesados; sin coste fijo OpenSearch y Aurora tienen coste de cómputo
Búsqueda híbrida (palabras clave + vectores), filtros complejos, alto volumen de consultas con baja latencia OpenSearch Service (gestionado) Instancias por hora + almacenamiento EBS S3 Vectors no hace BM25; Aurora escala peor en consultas masivas
Lo mismo sin gestionar clústeres OpenSearch Serverless (grupo de colecciones con mínimo 0 OCU si el tráfico es intermitente) OCU-hora (0,268 USD en eu-south-2) + almacenamiento Con mínimos encendidos, cientos de USD al mes
Ya usas PostgreSQL; unir vectores con datos relacionales y transacciones Aurora PostgreSQL con pgvector (Serverless v2 con 0 ACU si es intermitente) ACU-hora (0,14 USD en eu-south-2) + almacenamiento Un almacén separado duplica datos y sincronización
Datos en documentos JSON compatibles con MongoDB DocumentDB Instancias por hora —
Preguntas que requieren relaciones entre entidades Neptune Analytics (GraphRAG) Capacidad de memoria por hora Los almacenes vectoriales puros no modelan relaciones
Caché semántica con latencia de microsegundos ElastiCache (Valkey) Nodos por hora S3 Vectors u OpenSearch son más lentos para caché
Aplicación ya en DynamoDB que necesita búsqueda vectorial sencilla DynamoDB (vectores nativos) Pago por petición No integra con Knowledge Bases
Mínimo esfuerzo operativo absoluto para RAG Bedrock Managed Knowledge Base (almacén gestionado por Bedrock) 5 USD/GB-mes de almacenamiento + 0,001 USD por consulta (Fráncfort) Módulo 3
flowchart TD
  A["¿Qué necesitas?"] --> B{"¿Búsqueda híbrida o filtros complejos con alto volumen de consultas?"}
  B -->|"Sí"| C{"¿Quieres gestionar clústeres?"}
  C -->|"Sí"| D["OpenSearch Service"]
  C -->|"No"| E["OpenSearch Serverless"]
  B -->|"No"| F{"¿Datos relacionales o PostgreSQL existente?"}
  F -->|"Sí"| G["Aurora PostgreSQL + pgvector"]
  F -->|"No"| H{"¿Relaciones entre entidades?"}
  H -->|"Sí"| I["Neptune Analytics (GraphRAG)"]
  H -->|"No"| J{"¿Caché semántica de microsegundos?"}
  J -->|"Sí"| K["ElastiCache (Valkey)"]
  J -->|"No"| L["S3 Vectors (coste mínimo)"]

12. Arquitecturas vectoriales avanzadas (Skills 1.4.1 y 1.4.3)

La guía del examen cita varios patrones concretos:

  • Organización jerárquica con Knowledge Bases: chunking jerárquico (padre-hijo) para buscar con precisión y devolver contexto amplio; o dos niveles de índice (hierarchical indexing): un índice de resúmenes de documento para localizar los documentos relevantes y otro de chunks detallados dentro de ellos.
  • OpenSearch con el plugin Neural e integración con Bedrock para segmentación por temas: el pipeline de ingesta vectoriza con Bedrock y cada documento se etiqueta por tema (clasificación con un FM o con Comprehend); las consultas se dirigen al índice o al filtro del tema correcto.
  • Amazon RDS con un repositorio de documentos en S3: la base de datos guarda metadatos, vectores (pgvector) y la clave S3 del original; el documento completo vive en S3 (barato y versionado).
  • DynamoDB para metadatos + base de datos vectorial para embeddings: DynamoDB guarda el estado de cada documento (hash, versión, fecha de indexación, permisos) y el almacén vectorial, los vectores con el ID como clave común.
  • Multi-índice para dominios especializados: un índice por dominio (legal, técnico, médico), cada uno con su modelo de embeddings y su chunking, y un enrutador que decide dónde buscar.
  • Sharding en OpenSearch: dimensionar shards y réplicas según volumen y latencia; separar índices calientes y fríos.
flowchart LR
  Q["Consulta"] --> R["Lambda: enrutador por dominio"]
  R --> I1["Índice legal (OpenSearch)"]
  R --> I2["Índice técnico (OpenSearch)"]
  I1 --> M["Fusión y reranking"]
  I2 --> M
  M --> FM["Modelo fundacional"]
  DDB["DynamoDB: metadatos, versiones, permisos"] -.-> R
  S3["S3: documentos originales"] -.-> FM

13. Metadatos: precisión y contexto (Skill 1.4.2)

Los vectores dicen «de qué trata» un chunk; los metadatos dicen de dónde viene, de quién es, de cuándo es y a quién va dirigido. Con ellos puedes filtrar (solo documentos vigentes, solo del país del usuario), citar la fuente y controlar el acceso.

Metadato Para qué Cómo se obtiene
Fecha de publicación o de última modificación Priorizar lo vigente, filtrar por periodo Metadatos de objeto de S3 (Last-Modified) o metadatos definidos por el usuario
Autor, departamento, propietario Atribución y filtros Atributos personalizados
Dominio o categoría (legal, RR. HH., producto) Filtrar y enrutar Etiquetado manual, clasificación con un FM o con Comprehend
Idioma Enrutar al modelo adecuado Comprehend
Nivel de confidencialidad, grupos con acceso Seguridad en la recuperación Del sistema de origen
Documento, sección y página de origen Citas Del parsing
Versión y hash del contenido Detectar cambios y duplicados Calculado en la ingesta

Dónde viven en AWS:

  • Metadatos de objeto de S3 definidos por el usuario (cabeceras x-amz-meta-, hasta 2 KB; no se pueden cambiar sin copiar el objeto) y etiquetas de objeto. S3 Metadata genera tablas Iceberg de solo lectura con los metadatos de los objetos, consultables con Athena.
  • Ficheros de metadatos de Knowledge Bases: junto a cada documento, un fichero nombre.extension.metadata.json (máximo 10 KB) con metadataAttributes:
{
  "metadataAttributes": {
    "departamento": "legal",
    "anio": 2026,
    "autor": "Lucía Martín",
    "confidencialidad": "interna"
  }
}
  • Metadatos del vector en el almacén: en S3 Vectors, filtrables (hasta 2 KB, para filtrar) y no filtrables (para devolver, como el texto del chunk).

14. Conectar con las fuentes de la empresa (Skill 1.4.4)

Fuente Integración
SharePoint, Confluence, Google Drive, OneDrive, sitios web Conectores nativos de Bedrock Managed Knowledge Base (incluyen permisos por documento). Desde el 30/09/2026, los Knowledge Bases gestionados por el cliente ya no permiten crear conectores nuevos de Confluence, SharePoint, Salesforce ni Web Crawler: solo S3 y Custom
Salesforce, ServiceNow, Zendesk, SharePoint Online Amazon AppFlow hacia S3 y, desde S3, a la base de conocimiento
Servidor de ficheros on-premises AWS DataSync hacia S3
Socios que envían ficheros AWS Transfer Family (SFTP) hacia S3
Wiki interna o sistema documental con API Lambda programada que lee la API y escribe en S3, o que ingiere directamente con la API de ingesta de Knowledge Bases (fuente de datos Custom)
Bases de datos Exportación a S3 (Glue, Athena), zero-ETL a OpenSearch (DynamoDB) o KB de datos estructurados (módulo 3)

15. Mantener el índice al día (Skill 1.4.5)

Un índice desactualizado produce respuestas con información vieja, con total seguridad. Mecanismos:

Mecanismo Cómo Cuándo
Actualización incremental StartIngestionJob de Knowledge Bases procesa solo los documentos añadidos, modificados o borrados desde la última sincronización Siempre: nunca reindexes todo sin necesidad
Detección de cambios en tiempo real Evento de S3 (Object Created / Object Deleted) → EventBridge → Lambda que lanza la sincronización o llama a IngestKnowledgeBaseDocuments / DeleteKnowledgeBaseDocuments (ingesta directa, hasta 25 documentos por petición) Contenido que debe estar disponible en minutos
Sincronización automatizada Step Functions: detectar cambios (hash en DynamoDB), procesar, vectorizar, actualizar el almacén y registrar el estado Pipelines a medida
Refresco programado EventBridge Scheduler que lanza la sincronización cada noche Fuentes que cambian a diario y toleran horas de retraso
Captura de cambios de bases de datos DynamoDB Streams → Lambda; zero-ETL DynamoDB → OpenSearch Catálogos, fichas de producto
Reindexación completa Nuevo índice con el nuevo modelo o chunking y cambio atómico (alias) Solo al cambiar de modelo de embeddings o de estrategia de chunking
flowchart LR
  S3["S3: corpus"] -->|"Object Created o Deleted"| EB["EventBridge"]
  EB --> L["Lambda"]
  L -->|"cambios sueltos"| DI["IngestKnowledgeBaseDocuments / DeleteKnowledgeBaseDocuments"]
  SCH["EventBridge Scheduler (noche)"] --> SJ["StartIngestionJob (incremental)"]
  DI --> KB["Knowledge Base"]
  SJ --> KB
  KB --> CW["CloudWatch: estado de ingesta y alarmas"]

No olvides los borrados: si un documento se retira, su vector debe desaparecer, o el modelo seguirá citando una política derogada. Y vigila la calidad: métricas de documentos ingeridos y fallidos en CloudWatch, y pruebas de recuperación periódicas (módulo 10).

16. Gestionar el corpus en S3

Función Para qué en IA generativa
S3 Intelligent-Tiering Corpus con patrones de acceso impredecibles: mueve automáticamente los objetos a Infrequent Access tras 30 días sin acceso y a Archive Instant Access tras 90 (opcionalmente, Archive Access y Deep Archive Access). Cobra una pequeña tarifa de monitorización por objeto; los objetos de menos de 128 KB no se monitorizan
S3 Lifecycle Transiciones de clase y expiración: borrar versiones antiguas, datos temporales de procesamiento o resultados de lotes tras N días (también es una herramienta de retención de datos, módulo 7)
Versionado Recuperar documentos sobrescritos y saber qué versión se indexó
S3 Cross-Region Replication (CRR) Copia del corpus en otra región para recuperación ante desastres o para servir una base de conocimiento regional. Requiere versionado en origen y destino; con Replication Time Control (RTC), la mayoría de los objetos se replican en 15 minutos

Trampas típicas del examen

  • «Validar datos con reglas declarativas y alertas» → Glue Data Quality (DQDL). No confundir con SageMaker Clarify (sesgo, en mantenimiento) ni con Macie (PII en S3).
  • «OCR con tablas y formularios» → Textract; «extraer campos de documentos, imágenes y audio con blueprints» → Bedrock Data Automation; «transcribir llamadas con quién habla» → Transcribe con diarización.
  • Transcribe en español de España: redacción de PII solo en streaming y sin modelos de lenguaje personalizados. Si el enunciado exige redacción en lotes, fíjate en el dialecto.
  • Comprehend PII funciona en inglés y español; Topic Modeling y Prompt Safety Classification están en mantenimiento.
  • Cambiar de modelo de embeddings → re-vectorizar todo el corpus. No se pueden mezclar vectores.
  • Dimensiones: menos dimensiones = menos coste y latencia; binario solo con OpenSearch en Knowledge Bases.
  • Chunking jerárquico devuelve menos resultados de los pedidos (varios hijos, un padre) y no se recomienda con S3 Vectors.
  • Chunking semántico cuesta más (usa un modelo).
  • S3 Vectors: dimensión, métrica y claves no filtrables inmutables; solo coseno o euclídea; sin búsqueda por palabras clave.
  • Búsqueda híbrida → OpenSearch (o Aurora con índice de texto completo en Knowledge Bases).
  • OpenSearch Serverless con mínimos de OCU encendidos cuesta 24/7: usa grupos de colecciones con mínimo 0 OCU si el tráfico es intermitente.
  • HNSW = rápido y preciso pero memoria alta; IVF = menos memoria, requiere entrenamiento.
  • Índice obsoleto → sincronización incremental dirigida por eventos, no reindexar todo cada noche.
  • Metadatos de Knowledge Bases → fichero .metadata.json junto al documento (máximo 10 KB).

Resumen

  • Datos buenos antes que modelos caros: valida (Glue Data Quality, Lambda + CloudWatch), procesa (Textract, Transcribe, BDA, modelos multimodales, SageMaker Processing) y mejora (normalizar, Comprehend, reformatear con un FM).
  • Formatea según la API: cuerpo nativo con InvokeModel, mensajes y bloques con Converse, JSONL para lotes, el esquema del contenedor en SageMaker.
  • Chunking: fijo (simple), jerárquico (precisión + contexto), semántico (coherente pero más caro), por estructura (respeta secciones). Mide con preguntas reales.
  • Embeddings: mismo modelo para indexar y consultar; elige por idioma, modalidad, dimensiones y región. Titan V2: 256, 512 o 1.024 dimensiones.
  • Métricas: coseno (la habitual), euclídea, producto escalar (igual que coseno con vectores normalizados), Hamming para binarios.
  • Índices ANN: HNSW (recall y latencia, más memoria) frente a IVF (menos memoria, entrenamiento); cuantización para escalar.
  • Almacenes: S3 Vectors (coste mínimo), OpenSearch (híbrida y escala), Aurora pgvector (relacional + vectores), Neptune (grafos), ElastiCache (caché semántica), DynamoDB (metadatos y ahora también vectores).
  • Metadatos para filtrar, citar y controlar acceso; sincronización incremental dirigida por eventos para no servir información caducada.

Cobertura del temario

Task statement Skill (resumen) Dónde se trata
1.3 1.3.1 Flujos de validación de calidad (Glue Data Quality, SageMaker Data Wrangler, Lambda, métricas de CloudWatch) Sección 3; lab-03-pipeline-documentos
1.3 1.3.2 Procesar texto, imagen, audio y tablas (modelos multimodales de Bedrock, SageMaker Processing, Transcribe, pipelines multimodales) Sección 4; lab-03-pipeline-documentos
1.3 1.3.3 Formatear las entradas según el modelo (JSON para Bedrock, datos para endpoints de SageMaker, formato conversacional) Sección 5
1.3 1.3.4 Mejorar la calidad de la entrada (reformatear con Bedrock, entidades con Comprehend, normalizar con Lambda) Sección 6; lab-03-pipeline-documentos
1.4 1.4.1 Arquitecturas vectoriales avanzadas (KB jerárquica, OpenSearch Neural con Bedrock, RDS con repositorio S3, DynamoDB para metadatos) Secciones 7, 11 y 12
1.4 1.4.2 Marcos de metadatos (metadatos de objeto S3, atributos personalizados, etiquetado por dominio) Sección 13; lab-04-embeddings-s3-vectors
1.4 1.4.3 Rendimiento a escala (sharding de OpenSearch, multi-índice, indexación jerárquica) Secciones 10, 11 y 12
1.4 1.4.4 Componentes de integración con fuentes (gestores documentales, bases de conocimiento, wikis) Secciones 2 y 14
1.4 1.4.5 Mantenimiento de los almacenes (actualización incremental, detección de cambios, sincronización automatizada, refresco programado) Sección 15; lab-04-embeddings-s3-vectors

Practica lo aprendido

Hacer el test (35 preguntas)Repasar tarjetas (40)

Documentación oficial para ampliar