Semana 3 · Módulo 3 de 11
Recuperación aumentada (RAG) a fondo
Aprenderás a diseñar el mecanismo de recuperación que alimenta a un modelo con tus propios datos: chunking, embeddings, búsqueda semántica e híbrida, filtros de metadatos, reranking, transformación de consultas y GraphRAG, con Amazon Bedrock Knowledge Bases como pieza central. Es el task statement 1.5 y uno de los temas que más preguntas genera en el examen.
- Explicar el flujo RAG completo, de la ingesta a las citas, y decidir entre RAG, fine-tuning y prompt largo
- Elegir estrategia de chunking y modelo de embeddings según el contenido y el almacén vectorial
- Configurar Amazon Bedrock Knowledge Bases (gestionada y del cliente), sus fuentes de datos y su sincronización
- Usar Retrieve y RetrieveAndGenerate con filtros de metadatos, búsqueda híbrida, reranking y descomposición de consultas
- Reconocer cuándo aplicar GraphRAG con Amazon Neptune Analytics y qué ha pasado con Amazon Kendra y Amazon Q Business
- Exponer la recuperación de forma estándar mediante function calling, MCP y APIs
Índice del módulo
- Reparto de la semana
- Por qué importa
- 1. RAG desde cero: vocabulario imprescindible
- 2. El flujo RAG completo
- 3. RAG, fine-tuning o prompt largo: tabla de decisión
- 4. Segmentación de documentos (chunking)
- 5. Embeddings: elegir y configurar el modelo
- 6. Almacenes vectoriales al servicio de la recuperación
- 7. Amazon Bedrock Knowledge Bases a fondo
- 8. GraphRAG con Amazon Neptune Analytics
- 9. Acceso estándar a la recuperación: function calling, MCP y APIs
- 10. ¿Knowledge Bases o RAG a medida?
- 11. Amazon Kendra, Amazon Q Business y Amazon Quick: estado actual
- 12. Diagnóstico de problemas de RAG (avance de 5.2.4)
- Trampas típicas del examen
- Resumen
- Cobertura del temario
Reparto de la semana
| Día | Qué hacer | Tiempo |
|---|---|---|
| Lunes | Secciones 1-3: qué es RAG, el flujo completo y la tabla RAG / fine-tuning / prompt largo | 2 h |
| Martes | Secciones 4-6: chunking, embeddings y almacenes vectoriales para recuperación | 2,5 h |
| Miércoles | Sección 7 (7.1-7.6): Knowledge Bases, fuentes, sincronización, parsing y APIs | 2,5 h |
| Jueves | Lab 05: Knowledge Base con S3 Vectors | 2 h |
| Viernes | Sección 7 (7.7-7.10): filtros, búsqueda híbrida, reranking y consultas; secciones 8-12 | 2,5 h |
| Sábado | Lab 06: RAG avanzado (metadatos, reranking, descomposición y evaluación rápida) | 2,5 h |
| Domingo | Test del módulo, tarjetas y repaso de las «Trampas típicas» | 2 h |
Por qué importa
Un modelo fundacional (FM, foundation model) solo sabe lo que vio durante su entrenamiento: no conoce tus manuales internos, ni el catálogo de hoy, ni la normativa que cambió el mes pasado. Si le preguntas por ello, o dice que no lo sabe o, peor, se lo inventa con total seguridad (una alucinación, hallucination).
RAG (Retrieval Augmented Generation, generación aumentada por recuperación) resuelve eso sin reentrenar el modelo: antes de preguntar al modelo, buscas los fragmentos relevantes de tus documentos y se los pegas en el prompt como contexto. El modelo responde apoyándose en ellos y puede citar de dónde sale cada afirmación.
El task statement 1.5 (Design retrieval mechanisms for FM augmentation) pide seis habilidades: segmentar documentos, elegir embeddings, desplegar búsqueda vectorial, construir búsquedas avanzadas (híbrida, reranking), tratar consultas complejas y ofrecer un acceso estándar a la recuperación. Además, RAG reaparece en seguridad (grounding para reducir alucinaciones, 3.1.3), en rendimiento (4.2.2), en evaluación (5.1.5-5.1.6) y en troubleshooting (5.2.4). Si dominas este módulo, tienes una parte grande del examen encarrilada.
1. RAG desde cero: vocabulario imprescindible
Antes de ver servicios, fija estos términos. Aparecerán en inglés en el examen.
| Término | Qué es | Ejemplo |
|---|---|---|
| Chunk (fragmento) | Trozo de un documento que se indexa y se recupera por separado | Un párrafo de 300 tokens del manual de vacaciones |
| Chunking / document segmentation | Proceso de partir documentos en chunks | Cortar cada 300 tokens con un 20 % de solapamiento |
| Token | Unidad mínima que procesa el modelo (≈ ¾ de palabra en inglés; en español algo menos) | «vacaciones» puede ser 2-3 tokens |
| Embedding | Vector de números que representa el significado de un texto | [0,012, -0,33, …] con 1.024 posiciones |
| Embedding model | Modelo que convierte texto (o imagen) en embeddings | Amazon Titan Text Embeddings V2 |
| Vector store / vector index | Base de datos que guarda vectores y busca los más parecidos | Amazon S3 Vectors, OpenSearch, Aurora con pgvector |
| Similarity search / semantic search | Buscar vectores cercanos (coseno, euclídea) al vector de la pregunta | «días libres» encuentra «vacaciones» |
| Keyword search / lexical search | Buscar por coincidencia de palabras (BM25) | Encuentra el código exacto «ERR-4012» |
| Hybrid search | Combina semántica y palabras clave | Útil con jerga + códigos |
Top-k / numberOfResults |
Cuántos chunks se recuperan | 5 por defecto en Knowledge Bases |
| Reranking | Segunda ordenación de los resultados con un modelo más preciso | Amazon Rerank 1.0, Cohere Rerank 3.5 |
| Grounding | Anclar la respuesta del modelo a fuentes concretas | Responder «solo con el contexto» |
| Citations / source attribution | Referencias a los documentos usados | URI de S3 del PDF y fragmento |
| Context window | Máximo de tokens (entrada + salida) que el modelo puede manejar | Nova Micro: 128K tokens |
La idea clave: un embedding coloca textos con significado parecido cerca en un espacio de muchas dimensiones. «¿Cuántos días libres tengo?» y «Política de vacaciones: 23 días laborables» quedan próximos aunque no compartan palabras. Eso es lo que la búsqueda por palabras clave no consigue.
2. El flujo RAG completo
RAG tiene dos fases que ocurren en momentos distintos: la ingesta (ingestion, en diferido, cada vez que cambian los documentos) y la consulta (query time, en cada pregunta del usuario).
flowchart LR
subgraph ING["Ingesta (offline, al sincronizar)"]
A["Documentos en S3, SharePoint, Confluence..."] --> B["Parsing: extraer texto, tablas e imágenes"]
B --> C["Chunking: partir en fragmentos"]
C --> D["Embeddings: modelo de embeddings"]
D --> E[("Índice vectorial + texto + metadatos")]
end
subgraph QRY["Consulta (online, en cada pregunta)"]
Q["Pregunta del usuario"] --> QT["Transformación de la consulta (opcional)"]
QT --> QE["Embedding de la pregunta"]
QE --> R["Recuperación top-k + filtros de metadatos"]
E -.-> R
R --> RR["Reranking (opcional)"]
RR --> AU["Aumentación: prompt = instrucciones + chunks + pregunta"]
AU --> G["Generación con el FM"]
G --> CI["Respuesta con citas"]
end
Paso a paso, con lo que puede fallar en cada uno:
- Ingesta de fuentes. Un conector lee los documentos (S3, SharePoint, Confluence, web…). Fallo típico: documentos sin permisos o formatos no admitidos que se saltan en silencio.
- Parsing. Se extrae el texto. Un PDF escaneado o con tablas complejas necesita un parser avanzado (un FM o Bedrock Data Automation); el parser por defecto solo saca texto.
- Chunking. Se corta en fragmentos. Si los chunks son enormes, diluyes la relevancia y gastas tokens; si son diminutos, pierdes contexto.
- Embeddings. Cada chunk se convierte en un vector con el mismo modelo que luego usarás para la pregunta. Cambiar de modelo obliga a reindexar todo.
- Índice. Se guarda vector + texto + metadatos (fecha, departamento, cliente…). Los metadatos permiten filtrar después.
- Recuperación. La pregunta se convierte en vector y se buscan los k chunks más cercanos, opcionalmente filtrando por metadatos y combinando con palabras clave (híbrida).
- Reranking. Un modelo reranker reordena los candidatos leyendo pregunta y chunk juntos; mejora la precisión de los primeros puestos.
- Aumentación. Se construye el prompt: instrucciones («responde solo con el contexto; si no está, dilo»), los chunks recuperados y la pregunta.
- Generación. El FM redacta la respuesta.
- Citas. Se devuelven las referencias (documento, ubicación, fragmento) para que el usuario verifique. Es la base de la transparencia (3.4.1) y de la verificación de exactitud (3.1.3).
3. RAG, fine-tuning o prompt largo: tabla de decisión
Hay tres formas de que un modelo «sepa» algo que no sabía. El examen las enfrenta constantemente.
- Prompt largo (long context o context stuffing): metes el documento entero en el prompt en cada llamada. Sencillo, pero pagas todos esos tokens cada vez y está limitado por la ventana de contexto.
- RAG: recuperas solo lo relevante y lo pegas en el prompt. Conocimiento actualizable al instante (basta con reindexar), con citas.
- Fine-tuning (ajuste fino) o destilación: reentrenas el modelo con ejemplos para cambiar su comportamiento: estilo, formato, tono, vocabulario de dominio, tarea muy específica. No es buena forma de meter hechos que cambian.
| Criterio | Prompt largo | RAG | Fine-tuning |
|---|---|---|---|
| Datos que cambian a diario | Posible, pero caro | Sí, ideal | No (hay que reentrenar) |
| Volumen de conocimiento | Pequeño (cabe en la ventana) | Grande (miles o millones de documentos) | Grande, pero «difuminado» en pesos |
| Citas y trazabilidad | Parcial | Sí, nativas | No |
| Permisos por usuario o cliente | Tú filtras qué metes | Sí, filtros de metadatos o ACL | No (el modelo lo «sabe» todo) |
| Cambiar estilo, tono o formato fijo | Con instrucciones | No es su objetivo | Sí, ideal |
| Coste inicial | Nulo | Bajo-medio (indexar) | Alto (datos etiquetados, entrenamiento, alojamiento) |
| Coste por consulta | Alto (muchos tokens) | Medio | Bajo en tokens, pero el modelo personalizado suele requerir despliegue específico |
| Operativa | Mínima | Baja con servicio gestionado | Alta (pipelines, versiones, evaluación) |
| Riesgo de alucinación sobre hechos | Bajo si cabe todo | Bajo, con grounding | Medio-alto |
Reglas rápidas para el examen:
- «Documentos internos que cambian con frecuencia», «sin reentrenar», «respuestas con fuentes» → RAG.
- «El modelo debe adoptar el estilo de la marca» o «formato de salida muy específico que el prompt no consigue» → fine-tuning (se ve en el módulo 06).
- «Pocos documentos pequeños, prototipo rápido, un único usuario» → prompt largo o chat with your document de Knowledge Bases (sin configurar almacén).
- Combinaciones válidas: fine-tuning para el tono + RAG para los hechos.
4. Segmentación de documentos (chunking)
Skill 1.5.1. El tamaño y la forma del chunk deciden la calidad de la recuperación más que casi cualquier otro ajuste.
4.1 Por qué importa el tamaño
- Chunk pequeño: embedding muy preciso (habla de una sola cosa), pero puede faltar contexto para responder («el plazo es de 30 días»… ¿de qué?).
- Chunk grande: más contexto, pero el embedding mezcla varios temas y «pierde nitidez»; además, cada chunk recuperado consume más tokens del prompt.
- Solapamiento (overlap): repetir un trozo del final del chunk anterior al inicio del siguiente evita cortar una idea por la mitad.
4.2 Estrategias de Amazon Bedrock Knowledge Bases
| Estrategia (API) | Cómo funciona | Cuándo elegirla | Ojo |
|---|---|---|---|
| Por defecto | Chunks de unos 300 tokens respetando frases completas | Empezar; texto general | Poco control |
FIXED_SIZE |
Tú fijas maxTokens y overlapPercentage |
Documentos homogéneos; quieres control predecible | Puede cortar secciones lógicas |
HIERARCHICAL |
Chunks hijo pequeños para buscar; al recuperar se sustituyen por su chunk padre, más grande | Manuales largos y estructurados: precisión al buscar + contexto al generar | Devuelve menos resultados de los pedidos (varios hijos comparten padre); no recomendado con S3 Vectors por el límite de metadatos |
SEMANTIC |
Corta donde cambia el significado entre frases (parámetros: tokens máximos, buffer size, breakpoint percentile threshold) | Textos sin estructura clara, con cambios de tema | Coste extra: usa un FM durante la ingesta |
NONE |
Cada fichero es un chunk | Ya has troceado tú (p. ej., una FAQ por fichero) o usas una Lambda de chunking propia | Sin número de página en citas |
Detalles verificados que suelen preguntarse:
- La estrategia de chunking no se puede cambiar después de crear la fuente de datos (data source). Hay que crear otra fuente o reindexar.
- Con chunking jerárquico,
numberOfResultsse refiere a los chunks hijo; como varios hijos se sustituyen por el mismo padre, puedes recibir menos resultados. - Para contenido multimodal (audio, vídeo, imágenes) con Nova Multimodal Embeddings, el troceado ocurre en el modelo de embeddings (duración de segmento configurable); con el parser de BDA, primero se convierte a texto y luego se aplica el chunking de texto.
4.3 Chunking personalizado con Lambda
Si ninguna estrategia te sirve (por ejemplo, quieres cortar un contrato por cláusulas numeradas, o un código fuente por funciones), Knowledge Bases permite una transformación personalizada con Lambda (custom transformation) en el paso POST_CHUNKING:
- Eliges
NONEcomo estrategia y tu Lambda hace todo el chunking; o - Eliges una estrategia nativa y tu Lambda solo añade metadatos por chunk (los metadatos de chunk prevalecen sobre los de fichero si coinciden).
- La Lambda lee y escribe los lotes en un bucket S3 intermedio (
intermediateStorage).
"vectorIngestionConfiguration": {
"chunkingConfiguration": { "chunkingStrategy": "NONE" },
"customTransformationConfiguration": {
"intermediateStorage": { "s3Location": { "uri": "s3://mi-bucket-intermedio/" } },
"transformations": [{
"stepToApply": "POST_CHUNKING",
"transformationFunction": {
"transformationLambdaConfiguration": { "lambdaArn": "arn:aws:lambda:eu-central-1:111122223333:function:chunker-clausulas" }
}
}]
}
}
Si montas tu propio pipeline sin Knowledge Bases (por ejemplo, Step Functions + Lambda + OpenSearch), el chunking de tamaño fijo en Lambda es una función de pocas líneas; el jerárquico basado en estructura se implementa leyendo encabezados (Markdown, HTML, estructura que devuelve Textract o BDA) y generando chunks padre-hijo con un identificador común en los metadatos.
4.4 Tabla de decisión de chunking
| Contenido | Estrategia recomendada |
|---|---|
| FAQ: una pregunta-respuesta por entrada | Una entrada por fichero + NONE, o fijo pequeño |
| Manuales técnicos largos con capítulos | HIERARCHICAL (salvo en S3 Vectors) o Lambda por secciones |
| Transcripciones de reuniones, correos | SEMANTIC o fijo con solapamiento |
| Contratos con cláusulas numeradas | Lambda personalizada por cláusula |
| Tablas y PDF con gráficos | Parser avanzado (FM o BDA) + chunking estándar |
| Prototipo rápido | Por defecto |
5. Embeddings: elegir y configurar el modelo
Skill 1.5.2. El modelo de embeddings determina qué significa «parecido».
5.1 Modelos de embeddings admitidos por Knowledge Bases
| Modelo | Dimensiones | Tipo de vector | Notas |
|---|---|---|---|
Amazon Titan Text Embeddings V2 (amazon.titan-embed-text-v2:0) |
256, 512 o 1.024 | float o binario | Opción por defecto en muchas regiones; barato |
| Amazon Titan Embeddings G1 - Text | 1.536 | float | Anterior; solo algunas regiones |
| Cohere Embed English v3 / Multilingual v3 | 1.024 | float o binario | Multilingual para corpus en varios idiomas |
| Cohere Embed v4 | — | — | Disponible en Bedrock; admitido como embedding personalizado en la Managed Knowledge Base |
| Amazon Titan Multimodal Embeddings G1 | 1.024 | float | Imágenes + texto |
| Amazon Nova Multimodal Embeddings | 1.024 | float | Texto, imagen, audio y vídeo; a 1 de octubre de 2026 solo está en us-east-1 (y GovCloud), no en regiones de la UE |
Criterios de elección (el ejemplo del temario habla de «dimensionalidad y encaje de dominio»):
- Dimensiones. Más dimensiones capturan más matices, pero ocupan más almacenamiento y memoria y hacen la búsqueda algo más lenta. Titan V2 a 256 dimensiones reduce el tamaño del índice a una cuarta parte frente a 1.024 con una pérdida de precisión que debes medir.
- Binario frente a float. Los vectores binarios reducen mucho el almacenamiento, pero solo los admiten OpenSearch Serverless y OpenSearch Managed Clusters. S3 Vectors solo admite float32.
- Idioma y dominio. Para un corpus mezclado español-inglés, un modelo multilingüe. Evalúa con tus preguntas reales: el ranking público no sustituye a tu conjunto de prueba.
- Coherencia. Documentos y preguntas con el mismo modelo y las mismas dimensiones. El índice se crea con una dimensión fija: en S3 Vectors, la dimensión, la métrica y las claves no filtrables no se pueden cambiar tras crear el índice.
5.2 Generar embeddings a escala
Knowledge Bases genera los embeddings por ti durante la ingesta. Si construyes tu pipeline:
- Lambda por lotes (ejemplo del temario): una Lambda lee N chunks de SQS o S3, llama a
InvokeModelcon el modelo de embeddings y escribe en el almacén (PutVectorsen S3 Vectors admite lotes; conviene insertar en lotes grandes). - Batch inference de Bedrock para volúmenes enormes y sin urgencia (más barato que on-demand; se ve en el módulo 09).
- Controla el throttling del modelo de embeddings (cuotas de tokens por minuto) con reintentos y backoff.
import boto3, json
bedrock = boto3.client("bedrock-runtime", region_name="eu-central-1")
def embed(texto: str, dims: int = 1024) -> list[float]:
body = {"inputText": texto, "dimensions": dims, "normalize": True}
r = bedrock.invoke_model(modelId="amazon.titan-embed-text-v2:0", body=json.dumps(body))
return json.loads(r["body"].read())["embedding"]
6. Almacenes vectoriales al servicio de la recuperación
Skill 1.5.3. El diseño a fondo de almacenes vectoriales es del módulo 02 (task 1.4); aquí nos interesa qué capacidades de recuperación te da cada uno cuando lo usas con Knowledge Bases.
| Almacén (Customer-managed KB) | Búsqueda híbrida | Vectores binarios | Filtros | Cuándo |
|---|---|---|---|---|
| Amazon OpenSearch Serverless | Sí (con campo de texto filtrable) | Sí | Todos, incluido startsWith y stringContains |
Máxima funcionalidad de búsqueda; ojo al coste mínimo de OCU |
| Amazon OpenSearch Service (Managed Clusters) | Según configuración | Sí (versión 2.16+) | Sí | Ya tienes un dominio OpenSearch; el dominio debe tener acceso público para KB |
| Amazon S3 Vectors | No (solo semántica) | No | Sí, salvo startsWith y stringContains; hasta 1 KB y 35 claves de metadatos por vector |
Coste mínimo, consultas poco frecuentes, labs |
Amazon Aurora PostgreSQL (pgvector) — tipo RDS |
Sí (índice GIN sobre el texto) | No | Sí (columna JSONB con índice GIN recomendada) | Ya usas PostgreSQL; Aurora Serverless v2 puede escalar a 0 ACU |
| Amazon Neptune Analytics | GraphRAG | No | Sí (in, notIn mejor soportados aquí y en OpenSearch Serverless) |
Relaciones entre entidades y razonamiento multisalto |
| MongoDB Atlas | Sí (con índice de texto) | — | Requiere configurar filtros en el índice | Ya usas MongoDB Atlas |
| Pinecone, Redis Enterprise Cloud | — | — | Sí | Proveedor externo ya contratado |
Fuera de Knowledge Bases, el temario cita OpenSearch Service con capacidades vectoriales (k-NN, y el neural plugin que llama a Bedrock para generar embeddings dentro de OpenSearch) y Aurora con pgvector como opciones de búsqueda semántica «hechas por ti». Elígelas cuando necesites control total del índice (shards, algoritmo HNSW, puntuación personalizada) o integrar búsqueda vectorial en una base de datos que ya existe.
7. Amazon Bedrock Knowledge Bases a fondo
Amazon Bedrock Knowledge Bases es el servicio gestionado de RAG de AWS: conecta fuentes, trocea, genera embeddings, indexa y ofrece APIs de recuperación y de generación con citas.
7.1 Tipos de Knowledge Base (estado octubre de 2026)
Desde marzo de 2026 hay dos grandes tipos, y AWS recomienda la gestionada para casos nuevos:
| Característica | Managed Knowledge Base (type: MANAGED) |
Customer-managed Knowledge Base (type: VECTOR) |
|---|---|---|
| Almacén | Lo gestiona Bedrock por completo (escala solo) | Lo eliges, aprovisionas y mantienes tú |
| Embeddings | Modelo gestionado sin coste extra, o uno de Bedrock (float32, 1.024 dims) | Cualquier modelo de embeddings de Bedrock admitido |
| Búsqueda | Siempre híbrida (semántica + palabras clave), más recuperación agéntica | Eliges estrategia según el almacén |
| Reranking | Reranker gestionado por defecto sin coste extra (rerankingModelType: MANAGED, CUSTOM o NONE) |
Opcional, con un modelo de reranking de Bedrock |
| Recuperación agéntica (agentic retrieval) | Sí: descompone la consulta, recupera en varios saltos, comprueba si basta | No |
| Conectores | Siete nativos: S3, SharePoint, Confluence, Google Drive, OneDrive, Web Crawler y Custom | S3 y Custom para fuentes nuevas: desde el 30/09/2026 ya no se pueden crear conectores nuevos de SharePoint, Confluence, Salesforce ni Web Crawler en una KB del cliente (las fuentes que ya existían siguen funcionando) |
| Chunking | Por defecto, tamaño fijo, jerárquico o sin chunking; no admite el semántico | Todas las estrategias (sección 4) |
| Permisos por documento (ACL) | Sí (salvo Web Crawler) | No |
| Parsing | Parser gestionado multimodal (smart parsing) | Por defecto, FM o Bedrock Data Automation |
| Integración con AgentCore Gateway (MCP) y Amazon Quick | Nativa | Tienes que construirla |
| Consulta | Retrieve con managedSearchConfiguration |
Retrieve / RetrieveAndGenerate con vectorSearchConfiguration |
| Regiones UE | eu-central-1, eu-west-1, eu-west-2 | Casi todas las regiones con Bedrock, incluida eu-south-2 |
Además existen tres variantes especiales de la Customer-managed:
- Datos estructurados (
type: SQL): la KB traduce lenguaje natural a SQL (NL2SQL) sobre un almacén estructurado y ejecuta la consulta. La APIGenerateQueryte devuelve solo el SQL generado para que lo metas en tu flujo. Encaja con el ejemplo del temario de text-to-SQL para resultados deterministas (3.1.2). - Amazon Kendra GenAI index (
type: KENDRA): usa un índice de Kendra como recuperador. Kendra está cerrado a clientes nuevos (sección 11). - GraphRAG con Neptune Analytics (sección 8).
7.2 Plano de control y plano de datos
Como en otros servicios de AWS, las APIs se reparten en dos clientes de SDK:
| Cliente boto3 | Operaciones | Para qué |
|---|---|---|
bedrock-agent (build-time) |
CreateKnowledgeBase, CreateDataSource, StartIngestionJob, GetIngestionJob, IngestKnowledgeBaseDocuments, DeleteKnowledgeBaseDocuments |
Crear y mantener la KB |
bedrock-agent-runtime (runtime) |
Retrieve, RetrieveAndGenerate, RetrieveAndGenerateStream, GenerateQuery, Rerank |
Consultar en producción |
Permisos: la KB tiene un rol de servicio que Bedrock asume (bedrock.amazonaws.com) para leer S3, invocar el modelo de embeddings y escribir en el almacén. Tu aplicación necesita bedrock:Retrieve y/o bedrock:RetrieveAndGenerate sobre la KB, más bedrock:InvokeModel sobre el modelo de generación.
7.3 Fuentes de datos y conector de S3
Lo que debes saber del conector de S3 (el más preguntado):
- Solo buckets de uso general (General Purpose) y en la misma región que la KB (puede ser de otra cuenta con la política de bucket adecuada).
- Prefijos de inclusión (inclusion prefixes): indexa solo
documentos/en vez del bucket entero. - Metadatos por documento: un fichero
nombre.ext.metadata.jsonjunto al documento, de 10 KB como máximo. - Tamaño máximo por documento de texto estándar: 50 MB (consulta la página de cuotas para multimodal).
- Sincronización incremental: en cada sync se procesan solo los ficheros nuevos, modificados o borrados.
- Política de borrado (
dataDeletionPolicy):DELETEelimina los vectores al borrar la fuente;RETAINlos conserva.
Formato del fichero de metadatos (va siempre en un bloque de código, nunca en texto):
{
"metadataAttributes": {
"departamento": { "value": { "type": "STRING", "stringValue": "rrhh" }, "includeForEmbedding": false },
"anio": { "value": { "type": "NUMBER", "numberValue": 2026 }, "includeForEmbedding": false },
"confidencial": { "value": { "type": "BOOLEAN", "booleanValue": false }, "includeForEmbedding": false }
}
}
includeForEmbedding: true concatena el par clave-valor al texto antes de calcular el embedding (mejora la relevancia si la pregunta menciona ese valor); con false el metadato solo sirve para filtrar. El formato simplificado "metadataAttributes": { "clave": "valor" } equivale a false.
Esto conecta con la skill 1.4.2 (marcos de metadatos: fechas desde metadatos de S3, autoría, clasificación por dominio) y con la 3.3.2 (atribución de fuentes).
7.4 Sincronización y mantenimiento del índice
Un RAG con datos viejos responde mal con mucha seguridad. Opciones:
| Mecanismo | Cómo | Cuándo |
|---|---|---|
| Sync manual o programado | StartIngestionJob (consola: Sync); programar con EventBridge Scheduler que llama a la API |
Cambios diarios o semanales; lo más sencillo |
| Sync dirigido por eventos | Evento de S3 (ObjectCreated/ObjectRemoved) → EventBridge → Lambda que lanza StartIngestionJob (agrupando cambios para no lanzar un job por fichero) |
Cambios frecuentes y dispersos |
| Ingesta directa | IngestKnowledgeBaseDocuments / DeleteKnowledgeBaseDocuments: indexa documentos al momento, sin sync |
Casi tiempo real (p. ej., un ticket nuevo). Con fuente S3, replica luego el cambio en S3 o el siguiente sync lo pisará |
| Fuente Custom | Tu aplicación empuja documentos con la ingesta directa | Datos que no están en S3 ni en un conector |
Reglas verificadas: la primera vez con una fuente S3 debes hacer un sync completo; no lances IngestKnowledgeBaseDocuments y StartIngestionJob a la vez.
flowchart LR
S3["Bucket S3 de documentos"] -- "ObjectCreated / ObjectRemoved" --> EB["Amazon EventBridge"]
EB --> SQS["Cola SQS (agrupa cambios)"]
SQS --> L["Lambda: StartIngestionJob"]
SCH["EventBridge Scheduler (cada noche)"] --> L
L --> KB["Knowledge Base"]
KB --> CW["CloudWatch: estado del job y estadísticas"]
GetIngestionJob devuelve estadísticas (documentos escaneados, indexados, fallidos, borrados). Alarmar sobre documentos fallidos es parte del mantenimiento de almacenes vectoriales (1.4.5, 4.3.5).
7.5 Parsing avanzado
| Parser | Qué extrae | Coste | Cuándo |
|---|---|---|---|
| Por defecto | Solo texto de .txt, .md, .html, .doc/.docx, .xls/.xlsx, .pdf | Sin cargo | Documentos de texto puro |
| Foundation model (Claude, Nova o Llama 4 con visión) | Texto + tablas, gráficos e imágenes; prompt de extracción personalizable | Tokens del FM | PDF con tablas o gráficos; quieres controlar cómo se describen |
| Bedrock Data Automation (BDA) | Multimodal sin prompt: documentos, imágenes, audio y vídeo convertidos a texto | Por página o imagen | Procesamiento gestionado sin ajustar prompts. En la documentación de KB aparece en preview y en us-west-2 |
Ojo: si eliges FM o BDA, se usan para todos los PDF de la fuente, aunque sean solo texto, y se cobran. Con parser FM, el tamaño total de ficheros no puede superar 100 GB. La Managed KB usa un parser gestionado que elige estrategia por tipo de fichero.
7.6 Retrieve frente a RetrieveAndGenerate
Retrieve |
RetrieveAndGenerate |
|
|---|---|---|
| Devuelve | Chunks: content, location, score, metadata |
Texto generado + citations + sessionId |
| Quién genera | Tú (Converse, un agente, otro modelo) | Bedrock, con el modelo o perfil de inferencia que indiques |
| Control del prompt | Total | Plantilla con marcadores $search_results$, $query$, $output_format_instructions$ (necesario para citas), $current_time$ |
| Conversación multiturno | La gestionas tú | sessionId mantiene el contexto entre turnos |
| Streaming | — | RetrieveAndGenerateStream |
| Guardrails | En tu llamada de generación | guardrailConfiguration dentro de generationConfiguration |
| Descomposición de consultas | La implementas tú | orchestrationConfiguration.queryTransformationConfiguration.type = QUERY_DECOMPOSITION |
| Úsalo cuando | Necesitas lógica propia, varios almacenes, un agente, caché, o un modelo no admitido | Quieres RAG con citas con mínimo código |
Ejemplo Retrieve con boto3 (Customer-managed KB):
import boto3
rt = boto3.client("bedrock-agent-runtime", region_name="eu-central-1")
resp = rt.retrieve(
knowledgeBaseId="KBID123456",
retrievalQuery={"text": "¿Cuántos días de teletrabajo tengo a la semana?"},
retrievalConfiguration={"vectorSearchConfiguration": {"numberOfResults": 5}},
)
for r in resp["retrievalResults"]:
print(round(r["score"], 3), r["location"]["s3Location"]["uri"], r["content"]["text"][:80])
Ejemplo RetrieveAndGenerate con un perfil de inferencia europeo:
cuenta = boto3.client("sts").get_caller_identity()["Account"]
modelo = f"arn:aws:bedrock:eu-central-1:{cuenta}:inference-profile/eu.amazon.nova-micro-v1:0"
resp = rt.retrieve_and_generate(
input={"text": "¿Cuántos días de teletrabajo tengo a la semana?"},
retrieveAndGenerateConfiguration={
"type": "KNOWLEDGE_BASE",
"knowledgeBaseConfiguration": {"knowledgeBaseId": "KBID123456", "modelArn": modelo},
},
)
print(resp["output"]["text"])
for c in resp["citations"]:
for ref in c["retrievedReferences"]:
print("Fuente:", ref["location"]["s3Location"]["uri"])
Para la Managed KB la consulta es Retrieve con managedSearchConfiguration (no vectorSearchConfiguration). Si pides más contexto del que cabe y la generación falla por longitud, la documentación propone: reducir numberOfResults, usar chunks más pequeños, acortar la plantilla o la pregunta.
7.7 Filtros de metadatos
Los filtros restringen la búsqueda a chunks cuyos metadatos cumplen una condición. Son la herramienta para multi-tenant, vigencia temporal y precisión por dominio.
| Operador (API) | Tipos | Notas |
|---|---|---|
equals, notEquals |
string, number, boolean | |
greaterThan, greaterThanOrEquals, lessThan, lessThanOrEquals |
number | Fechas como número (p. ej. epoch o 20260115) |
in, notIn |
lista de strings | Mejor soportados en OpenSearch Serverless y Neptune |
startsWith |
string | Solo OpenSearch Serverless |
stringContains, listContains |
string / lista | Mejor soportados en OpenSearch Serverless |
andAll, orAll |
combinan hasta 5 expresiones | Un nivel de anidamiento de grupos |
No admiten startsWith ni stringContains: S3 Vectors y la Managed KB. En la Managed KB, los campos reservados empiezan por guion bajo (_source_uri); en la Customer-managed, por x-amz-bedrock (p. ej. x-amz-bedrock-kb-document-page-number en PDF con OpenSearch Serverless o Aurora).
filtro = {
"andAll": [
{"equals": {"key": "departamento", "value": "rrhh"}},
{"greaterThanOrEquals": {"key": "anio", "value": 2025}},
]
}
resp = rt.retrieve(
knowledgeBaseId="KBID123456",
retrievalQuery={"text": "política de gastos de viaje"},
retrievalConfiguration={"vectorSearchConfiguration": {"numberOfResults": 5, "filter": filtro}},
)
Filtrado implícito (implicit metadata filtering): con implicitFilterConfiguration describes el esquema de metadatos (clave, tipo, descripción) y un modelo genera el filtro a partir de la pregunta («políticas de 2025 de RR. HH.» → filtro por año y departamento). Está soportado con modelos Anthropic Claude.
7.8 Búsqueda semántica, por palabras clave e híbrida
Skill 1.5.4.
- Semántica (vectores): entiende sinónimos y paráfrasis, pero falla con identificadores exactos, siglas raras o números de pieza («ERR-4012», «RD 1/2026»).
- Por palabras clave (léxica, BM25): encuentra coincidencias exactas, pero no entiende que «coche» y «automóvil» son lo mismo.
- Híbrida: ejecuta ambas y fusiona las puntuaciones. Es la mejor opción por defecto cuando hay jerga, códigos de producto o nombres propios.
En Knowledge Bases, overrideSearchType acepta HYBRID o SEMANTIC; si no lo indicas, decide Bedrock. La híbrida solo está disponible en Customer-managed con Amazon RDS (Aurora PostgreSQL), OpenSearch Serverless y MongoDB que tengan un campo de texto filtrable; en el resto (por ejemplo, S3 Vectors) la consulta es semántica. En la Managed KB la búsqueda es siempre híbrida.
Si construyes la búsqueda tú mismo con OpenSearch, la híbrida se implementa con una consulta compuesta (k-NN + match) y un search pipeline de normalización y combinación de puntuaciones, que es donde entra la «puntuación personalizada» de la skill 4.2.2.
7.9 Reranking
Skill 1.5.4 (ejemplo «Amazon Bedrock reranker models»).
La recuperación vectorial es rápida porque compara vectores precalculados, pero es aproximada. Un reranker (cross-encoder) lee la pregunta y cada chunk juntos y puntúa su relevancia con más precisión. El patrón es de dos etapas: recuperas muchos candidatos (p. ej. 20-50) y el reranker se queda con los mejores (p. ej. 5).
| Modelo | ID | Regiones in-region (UE) |
|---|---|---|
| Amazon Rerank 1.0 | amazon.rerank-v1:0 |
eu-central-1 (no disponible en us-east-1) |
| Cohere Rerank 3.5 | cohere.rerank-v3-5:0 |
eu-central-1 (también us-east-1) |
Configuración en Retrieve/RetrieveAndGenerate (Customer-managed):
"vectorSearchConfiguration": {
"numberOfResults": 20,
"rerankingConfiguration": {
"type": "BEDROCK_RERANKING_MODEL",
"bedrockRerankingConfiguration": {
"numberOfRerankedResults": 5,
"modelConfiguration": { "modelArn": "arn:aws:bedrock:eu-central-1::foundation-model/amazon.rerank-v1:0" }
}
}
}
Si numberOfRerankedResults supera numberOfResults, se devuelven como mucho numberOfResults (salvo con descomposición de consultas, donde puede ser hasta cinco veces más). También existe la API independiente Rerank para reordenar documentos que no están en una KB. Coste: el reranking se factura por search units (1 USD por 1.000 en Fráncfort según la API oficial de precios a 1 de octubre de 2026; consulta https://aws.amazon.com/bedrock/pricing/). En la Managed KB el reranker gestionado viene activado y sin coste extra si usas el embedding gestionado.
7.10 Tratamiento de consultas: reformulación, expansión y descomposición
Skill 1.5.5. Las preguntas de los usuarios son cortas, ambiguas o compuestas. Tres técnicas:
| Técnica | Qué hace | Ejemplo | En AWS |
|---|---|---|---|
| Reformulación (query rewriting/reformulation) | Reescribe la pregunta en forma autónoma y precisa, usando el historial | «¿Y en Portugal?» → «¿Cuántos días de vacaciones tienen los empleados en Portugal?» | Plantilla de orquestación de RetrieveAndGenerate; o un FM de Bedrock antes de Retrieve |
| Expansión (query expansion) | Añade sinónimos, términos relacionados o varias versiones de la pregunta y fusiona resultados | «baja» → «baja médica, incapacidad temporal, IT» | Un FM de Bedrock genera variantes; se lanzan varios Retrieve en paralelo |
| Descomposición (query decomposition) | Parte una pregunta compleja en subpreguntas y recupera para cada una | «¿Quién tiene más días libres, Madrid o Lisboa?» → dos subconsultas | QUERY_DECOMPOSITION en RetrieveAndGenerate; Lambda para descomposición propia; Step Functions (estado Map) para orquestar varias transformaciones y recuperaciones en paralelo |
"retrieveAndGenerateConfiguration": {
"type": "KNOWLEDGE_BASE",
"knowledgeBaseConfiguration": {
"knowledgeBaseId": "KBID123456",
"modelArn": "arn:aws:bedrock:eu-central-1:111122223333:inference-profile/eu.amazon.nova-micro-v1:0",
"orchestrationConfiguration": {
"queryTransformationConfiguration": { "type": "QUERY_DECOMPOSITION" }
}
}
}
Técnicas adicionales que conviene reconocer por el nombre:
- HyDE (Hypothetical Document Embeddings): el FM genera una respuesta hipotética y se busca con su embedding; ayuda cuando la pregunta es muy corta.
- Recuperación agéntica (Managed KB): un agente planifica varias recuperaciones, evalúa si tiene suficiente y vuelve a buscar (razonamiento multisalto).
- Enrutado de consultas: una Lambda o un FM clasifica la pregunta y la envía a la KB adecuada (RR. HH., legal, producto) o a un almacén estructurado.
flowchart TD
U["Pregunta del usuario + historial"] --> SF["Step Functions"]
SF --> RW["Bedrock: reformular pregunta autónoma"]
RW --> DEC["Lambda: ¿pregunta compuesta?"]
DEC -- "No" --> R1["Retrieve"]
DEC -- "Sí" --> MAP["Map: una Retrieve por subpregunta"]
MAP --> FUS["Fusión y deduplicado de chunks"]
R1 --> RR["Rerank"]
FUS --> RR
RR --> GEN["Converse: respuesta con citas"]
7.11 Seguridad y calidad en Knowledge Bases (avance)
- Guardrails: se aplican a la entrada y a la respuesta generada, no a los chunks recuperados. Detalles en el módulo 07.
- Contextual grounding check de Guardrails: bloquea respuestas no sustentadas por el contexto recuperado (3.1.3).
- Cifrado: KMS para la KB, las fuentes, el almacenamiento transitorio de ingesta y el almacén (S3 Vectors admite SSE-S3 o SSE-KMS, elegido al crear el bucket e inmutable).
- Evaluación de RAG: Amazon Bedrock Evaluations tiene evaluación de recuperación y de recuperación + generación (módulo 10).
8. GraphRAG con Amazon Neptune Analytics
El RAG vectorial encuentra chunks parecidos a la pregunta, pero falla cuando la respuesta exige conectar hechos repartidos en varios documentos: «¿Qué proveedores de los proyectos que dirige Ana tienen contratos que vencen este año?». Ningún chunk contiene todo eso.
GraphRAG en Knowledge Bases combina vectores y grafo:
- Durante la ingesta, un FM que eliges (graph construction model) extrae entidades y relaciones de los documentos y construye un grafo en Amazon Neptune Analytics, junto con el índice vectorial. Elegir el modelo de construcción activa el enriquecimiento contextual.
- En la consulta, primero hace una búsqueda vectorial de nodos relevantes, luego recorre el grafo para traer chunks relacionados y responde con ese contexto enriquecido.
| Aspecto | Dato verificado |
|---|---|
| Almacén | Grafo vacío de Neptune Analytics con índice vectorial (la dimensión se fija al crear el grafo y debe coincidir con el embedding) |
| Fuente de datos | Solo Amazon S3 |
| Límite | 1.000 ficheros por fuente de datos (ampliable hasta 10.000) |
| Personalización del grafo | No se puede configurar cómo se construye |
| Autoescalado | Neptune Analytics no autoescala en esta integración |
| Chunking jerárquico | GraphRAG devuelve solo chunks hijo (no los sustituye por el padre) |
| Regiones UE | Fráncfort, Londres e Irlanda |
| Limpieza | Borrar la KB no borra el grafo: hay que borrarlo aparte o seguirá facturando |
Cuándo elegirlo: preguntas multisalto (multi-hop), dominios con muchas entidades relacionadas (cadena de suministro, fraude, investigación, normativa con referencias cruzadas) y requisitos de razonamiento entre documentos. No lo elijas para una FAQ simple: añade coste (capacidad m-NCU de Neptune) y un FM en la ingesta.
9. Acceso estándar a la recuperación: function calling, MCP y APIs
Skill 1.5.6: create consistent access mechanisms to enable seamless integration with FMs. La recuperación no siempre la invoca tu código: cada vez más la invoca el propio modelo cuando la necesita.
| Mecanismo | Cómo funciona | Cuándo |
|---|---|---|
| Function calling / tool use | Declaras una herramienta buscar_documentos(consulta, filtros) en toolConfig de Converse; el modelo decide llamarla y tu código ejecuta Retrieve |
El modelo debe decidir si y qué buscar (preguntas mixtas) |
| MCP (Model Context Protocol) | Protocolo abierto cliente-servidor para exponer herramientas y datos a agentes. AWS publica un servidor MCP oficial para consultar Knowledge Bases (bedrock-kb-retrieval-mcp-server en awslabs/mcp), y la Managed KB se integra de forma nativa con AgentCore Gateway, que la expone como herramienta MCP |
Varios agentes o frameworks deben usar la misma KB sin código a medida |
| API estándar de recuperación | API Gateway + Lambda que encapsula Retrieve con contrato fijo (petición, filtros permitidos, formato de respuesta, autenticación) |
Varios equipos consumen RAG; quieres gobernar filtros, cuotas y logs en un único sitio |
| Nodo de KB en Bedrock Flows | Nodo Knowledge base que devuelve resultados o respuesta generada | Flujos sin código (módulo 04) |
Declaración de la herramienta de búsqueda para el modelo (el bucle completo de tool use se ve en el módulo 04):
{
"toolSpec": {
"name": "buscar_documentacion_interna",
"description": "Busca en la documentación interna de RR. HH. y devuelve fragmentos con su fuente.",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"consulta": { "type": "string", "description": "Pregunta autónoma y precisa" },
"departamento": { "type": "string", "enum": ["rrhh", "legal", "ventas"] }
},
"required": ["consulta"]
}
}
}
}
10. ¿Knowledge Bases o RAG a medida?
| Situación | Elige |
|---|---|
| RAG sobre S3/SharePoint/Confluence con mínima operativa, citas y ACL | Managed Knowledge Base |
| Necesitas un almacén concreto (coste con S3 Vectors, Aurora existente, OpenSearch con híbrida) pero sin programar el pipeline | Customer-managed Knowledge Base |
| Control total: índices por dominio, sharding propio, puntuación híbrida personalizada, embeddings dentro de OpenSearch con el neural plugin | RAG a medida con OpenSearch Service + Lambda/Step Functions |
| Preguntas sobre tablas y bases de datos | KB de datos estructurados (NL2SQL) o GenerateQuery |
| Relaciones entre entidades, multisalto | GraphRAG con Neptune Analytics |
| Un único documento subido por el usuario | Chat with your document |
11. Amazon Kendra, Amazon Q Business y Amazon Quick: estado actual
La guía oficial sigue listando estos servicios como in-scope, así que pueden salir. Pero su estado ha cambiado (fuentes en docs/investigacion.md):
| Servicio | Qué es | Estado (octubre de 2026) | Alternativa recomendada por AWS |
|---|---|---|---|
| Amazon Kendra | Búsqueda empresarial inteligente con conectores y permisos por documento; su GenAI index podía servir de recuperador para Knowledge Bases | Modo mantenimiento desde el 30/06/2026; cerrado a clientes nuevos desde el 30/07/2026 | Bedrock Managed Knowledge Base |
| Amazon Q Business y Q Business Apps | Asistente de IA generativa «llave en mano» para empleados, con conectores empresariales y apps ligeras sin código | Cerrado a clientes nuevos; solo correcciones de errores y seguridad | Amazon Quick |
| Amazon Quick (antes Quick Suite) | Espacio de trabajo con agentes, investigación, flujos y BI (incluye Amazon Quick Sight) | Activo | — |
Cómo razonar en el examen:
- Si el enunciado pide «asistente de empresa listo para usar, sin desarrollo, para que los empleados pregunten a SharePoint y Confluence respetando permisos», la respuesta de la guía era Q Business; hoy la vigente es Amazon Quick (que puede asociar una Managed KB de forma nativa).
- Si pide «búsqueda empresarial con conectores y ACL como recuperador de un RAG propio», antes era Kendra; hoy es la Managed Knowledge Base.
- Amazon Q Business Apps (Q Apps) permitían a los empleados crear, describiéndolas en lenguaje natural o a partir de una conversación con Q Business, pequeñas aplicaciones de IA generativa (formularios que generan un borrador, un resumen o una checklist) y compartirlas sin programar. Si el enunciado pide «que usuarios de negocio sin programar creen y compartan pequeñas herramientas de IA», esa era la respuesta de la guía; hoy el equivalente está en Amazon Quick (sus flujos y agentes).
- Si una opción propone Kendra o Q Business para una cuenta nueva, sabes que no es viable en la práctica; si la pregunta es conceptual («qué servicio ofrece…»), puede seguir siendo la respuesta esperada. Lee con atención.
12. Diagnóstico de problemas de RAG (avance de 5.2.4)
| Síntoma | Causa probable | Solución |
|---|---|---|
| Responde con datos antiguos | Falta sincronizar o el job falló | Revisar GetIngestionJob; automatizar sync; ingesta directa para urgentes |
| No encuentra códigos exactos o siglas | Solo búsqueda semántica | Búsqueda híbrida (almacén compatible o Managed KB) |
| El documento correcto sale, pero abajo | Ranking vectorial aproximado | Reranking; aumentar numberOfResults antes de rerankear |
| Respuestas incompletas en manuales largos | Chunks demasiado pequeños | Jerárquico o chunks mayores con solapamiento |
| Mezcla información de otros clientes | Sin filtro de tenant | Filtro de metadatos obligatorio en backend o KBs separadas |
| Preguntas compuestas mal respondidas | Una sola búsqueda | Descomposición de consultas o recuperación agéntica |
| Tablas y gráficos ignorados | Parser por defecto | Parser FM o BDA |
| Error de ingesta con S3 Vectors | Metadatos por encima de 1 KB o 35 claves; jerárquico con muchos tokens | Reducir metadatos; chunking fijo |
| Error de longitud al generar | Demasiado contexto | Menos chunks, chunks más pequeños, plantilla más corta |
| Resultados raros tras cambiar de modelo de embeddings | Índice con vectores del modelo anterior | Reindexar todo con el nuevo modelo |
Trampas típicas del examen
- «Datos que cambian a diario, sin reentrenar, con citas» → RAG con Knowledge Bases, nunca fine-tuning.
- «Códigos de producto, referencias legales, números de pieza» → búsqueda híbrida. Si la opción usa S3 Vectors con
HYBRID, es incorrecta: S3 Vectors solo hace semántica. - «Los resultados relevantes aparecen pero mal ordenados» → reranking, no cambiar de modelo de generación.
- «Aislar datos por cliente con un único índice» → filtro de metadatos aplicado por el backend. Desconfía de opciones que dejan al cliente elegir el filtro.
- «Preguntas que combinan varias partes» → descomposición de consultas (
QUERY_DECOMPOSITION) o recuperación agéntica. - «Relaciones entre entidades a través de muchos documentos» → GraphRAG con Neptune Analytics (y recuerda: solo fuente S3).
- Cambiar la estrategia de chunking de una fuente existente no se puede: nueva fuente o reindexado.
- Vectores binarios → solo OpenSearch. S3 Vectors → solo float32, sin
startsWith/stringContains, 1 KB y 35 claves de metadatos, sin jerárquico recomendado. - Reranking en Europa → eu-central-1. Amazon Rerank 1.0 no está en us-east-1.
- Guardrails no filtran los chunks recuperados, solo entrada y respuesta.
- Kendra y Q Business: explicables, pero cerrados a clientes nuevos; alternativas actuales: Managed KB y Amazon Quick.
- «Conectar SharePoint o Confluence a una Knowledge Base nueva» → Managed KB. Desde el 30/09/2026 una KB del cliente ya no admite conectores nuevos de esas fuentes: si el enunciado exige un almacén propio, lleva los documentos a S3 (AppFlow, Lambda) o usa la fuente Custom.
- Chunking semántico en la Managed KB: no está disponible; si el enunciado lo exige, es una KB del cliente.
- Borrar una KB con GraphRAG no borra el grafo de Neptune (coste residual).
- Palabras clave: ground responses, reduce hallucinations, source attribution, up-to-date information, LEAST operational overhead, MOST relevant results, multi-hop reasoning, semantic search beyond keyword matching.
Resumen
- RAG = recuperar fragmentos relevantes y añadirlos al prompt; se separa en ingesta (parse, chunk, embed, index) y consulta (transformar, recuperar, rerankear, aumentar, generar, citar).
- RAG para hechos cambiantes y citas; fine-tuning para comportamiento y estilo; prompt largo para poco contenido.
- El chunking decide la calidad: por defecto, fijo, jerárquico, semántico, ninguno o Lambda personalizada. No se cambia después.
- El modelo de embeddings y su dimensión se fijan al crear el índice; mismo modelo para documentos y preguntas.
- Knowledge Bases: Managed (recomendada, híbrida, reranker y ACL gestionados, conectores, recuperación agéntica) o Customer-managed (tú eliges el almacén: S3 Vectors, OpenSearch, Aurora, Neptune…).
Retrievedevuelve chunks;RetrieveAndGeneratedevuelve respuesta con citas y admite descomposición, plantillas, guardrails y sesiones.- Filtros de metadatos para multi-tenant y vigencia; híbrida para términos exactos; reranking para ordenar mejor; transformación de consultas para preguntas complejas.
- GraphRAG con Neptune Analytics para razonamiento entre entidades.
- Acceso estándar mediante tool use, MCP (servidor oficial y AgentCore Gateway) o una API propia.
- Kendra y Q Business están cerrados a clientes nuevos: Managed KB y Amazon Quick son las alternativas.
Cobertura del temario
| Task statement | Skill | Dónde se trata en este módulo |
|---|---|---|
| 1.5 | 1.5.1 Segmentación de documentos (chunking de Bedrock, Lambda de tamaño fijo, jerárquico por estructura) | Sección 4 completa (4.2 estrategias de KB, 4.3 Lambda y jerárquico por estructura, 4.4 tabla de decisión); lab 05 |
| 1.5 | 1.5.2 Soluciones de embeddings (Titan por dimensión y dominio, evaluar modelos de Bedrock, Lambda para generar por lotes) | Sección 5 (5.1 modelos y criterios, 5.2 Lambda por lotes y batch); lab 05 |
| 1.5 | 1.5.3 Búsqueda vectorial (OpenSearch con vectores, Aurora pgvector, KB con almacén gestionado) | Sección 6 (tabla de almacenes), 7.1 (Managed KB), 10 (RAG a medida); lab 05 con S3 Vectors |
| 1.5 | 1.5.4 Arquitecturas de búsqueda avanzada (OpenSearch semántico, híbrida, rerankers de Bedrock) | Secciones 7.8 (semántica, léxica, híbrida) y 7.9 (reranking); lab 06 |
| 1.5 | 1.5.5 Tratamiento de consultas (expansión con Bedrock, descomposición con Lambda, transformación con Step Functions) | Sección 7.10 (reformulación, expansión, descomposición, HyDE, recuperación agéntica, diagrama con Step Functions); lab 06 |
| 1.5 | 1.5.6 Mecanismos de acceso coherentes (function calling para búsqueda vectorial, clientes MCP, APIs estándar) | Sección 9 |
| Servicios in-scope | Amazon Bedrock Knowledge Bases, Amazon Kendra, Amazon Q Business, Amazon Q Business Apps, Amazon Quick, Amazon Neptune, Amazon OpenSearch Service, Amazon Aurora | Secciones 7 (tipos de KB, conectores y chunking de cada tipo), 8, 6, 10 y 11 (estado de Kendra y Q Business, qué eran las Q Business Apps) |
| Relacionados (otros módulos) | 1.4.2 metadatos, 1.4.5 sincronización, 3.1.3 grounding, 4.2.2 rendimiento de recuperación, 5.2.4 troubleshooting de recuperación | Secciones 7.3, 7.4, 7.11 y 12 (avance; los módulos 02, 07, 09 y 10 los desarrollan) |
Practica lo aprendido
Knowledge Base con S3 VectorsLab
RAG avanzado - metadatos, reranking, descomposición y evaluación rápida
Documentación oficial para ampliar
- Amazon Bedrock Knowledge Bases
- Managed Knowledge Base frente a Customer-managed
- Chunking en Knowledge Bases
- Configurar consultas (filtros, búsqueda híbrida, reranking, descomposición)
- Prerrequisitos de almacenes vectoriales (S3 Vectors, Aurora, OpenSearch, Neptune)
- Modelos de reranking y regiones
- GraphRAG con Amazon Neptune Analytics
- Knowledge Bases sobre datos estructurados
- Ingesta directa de documentos
- Transformación personalizada con Lambda durante la ingesta
- Servidor MCP oficial para Knowledge Bases (awslabs/mcp)