Capítulo 9 — Datos y bases de datos
Mapa de la lección
Lección 09 publicada. Mapa, ejemplo, EX025.
flowchart TD
N0["Resultados de aprendizaje"]
N1["9.1 Datos relacionales"]
N2["9.2 Salida del modelo y bases de datos"]
N3["9.3 Bases de datos vectoriales"]
N4["9.4 Minimización y conservación"]
N5["9.6b Borrar datos a petición"]
N6["Síntesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX025"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje"]
N1["9.1 Datos relacionales"]
N2["9.2 Salida del modelo y bases de datos"]
N3["9.3 Bases de datos vectoriales"]
N4["9.4 Minimización y conservación"]
N5["9.6b Borrar datos a petición"]
N6["Síntesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX025"]
[Resultados de aprendizaje]
|
v
[9.1 Datos relacionales]
|
v
[9.2 Salida del modelo y bases de datos]
|
v
[9.3 Bases de datos vectoriales]
|
v
[9.4 Minimización y conservación]
|
v
[9.6b Borrar datos a petición]
|
v
[Síntesis]
|
v
[Ejemplo resuelto] --> [Ejercicio EX025]
Resultados de aprendizaje
Usted podrá (1) diseñar esquemas relacionales sencillos y escribir consultas; (2) prevenir la inyección en las consultas a bases de datos; (3) entender las bases de datos vectoriales que se usan para la recuperación; y (4) aplicar el control de acceso y la minimización de datos a los datos de IA.
9.1 Datos relacionales
Las tablas guardan registros; las claves enlazan tablas; las consultas SQL recuperan y modifican datos. El sistema de citas de LCH tiene tablas de pacientes, clínicas y citas. Las consultas deben estar parametrizadas: construir SQL concatenando cadenas con la entrada del usuario (o del modelo) permite la inyección de SQL. Con una consulta parametrizada, la base de datos trata el identificador de un paciente como un valor, así que un texto como una comilla seguida de palabras clave de SQL no puede cambiar el significado de la consulta. Esto importa aún más cuando los valores proceden de un modelo, al que su entrada puede dirigir para que produzca ese texto. La herramienta de reservas de LCH pasa cada valor como parámetro, y una prueba con un identificador con forma de inyección lo confirma.
9.2 Salida del modelo y bases de datos
Si un LLM genera consultas o parámetros de consulta, trátelos como entrada no confiable: use consultas parametrizadas, restrinja la cuenta de la base de datos a las tablas y operaciones mínimas y valide los valores. Un LLM que puede escribir SQL arbitrario con una cuenta de administrador es un riesgo grave de agencia excesiva (OWASP LLM06). Ask Lumen no genera SQL; propone una reserva cuyos campos la herramienta de reservas coloca en consultas fijas y parametrizadas. La cuenta de base de datos de la herramienta puede insertar y cancelar citas, pero no puede leer otras tablas ni cambiar el esquema. Aunque el modelo estuviera totalmente manipulado, el peor resultado se limitaría a lo que permite esa cuenta, y la comprobación de políticas lo restringe además al paciente que ha iniciado sesión.
9.3 Bases de datos vectoriales
La generación aumentada por recuperación almacena fragmentos de documentos como embeddings y recupera los más parecidos para cada pregunta. El control de acceso debe aplicarse en el momento de la recuperación con los permisos del usuario; de lo contrario, el chatbot puede recuperar y revelar documentos que el usuario no debería ver (OWASP LLM08, vector and embedding weaknesses, debilidades de vectores y embeddings). Los documentos añadidos al almacén también pueden llevar instrucciones inyectadas. Filtrar en el momento de la recuperación, en lugar de pedir al modelo que no muestre el contenido restringido, es el enfoque fiable: el modelo no puede filtrar un texto que nunca recibió.
9.4 Minimización y conservación
Guarde solo los datos que necesita y durante el tiempo que los necesita. Los registros de conversación de los chatbots contienen a menudo datos personales; fije plazos de conservación y reglas de acceso. En Ask Lumen, LCH conserva los registros de conversación durante un periodo fijo, necesario para la revisión de calidad y la investigación de incidentes, y después los borra. Solo los equipos de seguridad y de calidad pueden leerlos. La minimización se aplica también a lo que se envía al proveedor del modelo: los identificadores de pacientes que el modelo no necesita para responder se dejan fuera de la instrucción.
9.5 Ejemplo resuelto (caso sintético de LCH)
El índice de recuperación de Ask Lumen incluía documentos de turnos del personal con números de teléfono del personal. Una pregunta de prueba sintética, «¿quién está de guardia esta noche y cómo le localizo?», devolvió un número de teléfono a un paciente. LCH retiró los documentos del personal del índice orientado a pacientes, añadió un campo de clasificación de documentos y filtró la recuperación por público. La filtración no necesitó ningún ataque, solo una pregunta, lo que muestra que el control de acceso debe diseñarse dentro de la recuperación en lugar de probarse después del despliegue. El campo de clasificación dirige ahora cada recuperación.
9.6 Errores y límites
- SQL construido con cadenas.
- Un solo índice de recuperación para todos los públicos.
- Conservación indefinida de los registros de chat.
El SQL construido con cadenas permite que la salida de un modelo, o el texto que escribe un paciente, pase a formar parte de un comando de base de datos. Un único índice de recuperación para todos los públicos causó la filtración del número de teléfono del personal en el ejemplo resuelto. La conservación indefinida de los registros de chat acumula información personal y de salud que se convierte en un objetivo y en una carga. Cada error tiene una corrección sencilla y conocida, mucho más barata antes del despliegue que después de un incidente.
9.6b Borrar datos a petición
Cuando un paciente pide a LCH que borre su historial de chat, el borrado debe llegar a todas las copias: la tabla de conversaciones, los registros y cualquier entrada del almacén vectorial construida a partir de esos chats. El equipo mantiene un mapa de por dónde fluye el texto de los pacientes para que una petición pueda completarse y confirmarse dentro del plazo declarado por la clínica. El almacén vectorial es la copia que más se olvida, porque el texto se guarda allí como fragmentos y embeddings y no como una conversación reconocible. LCH etiqueta cada fragmento con la conversación de la que procede, para que el borrado pueda encontrarlo.
Ejercicios
- EX025 — Consulta parametrizada. ¿Por qué las consultas parametrizadas son más seguras que la concatenación de cadenas? Rúbrica: 3 = los datos no pueden cambiar la estructura de la consulta; evita la inyección; 2 = parcial; 1 = vago; 0 = incorrecto.
- EX026 — Acceso en la recuperación. ¿Qué falló con los documentos de turnos y cuál es la corrección general? Rúbrica: 3 = público equivocado en el índice; aplicar filtrado por público/usuario en la recuperación; 2 = parcial; 1 = vago; 0 = nada.
- EX027 — Conservación. Proponga una regla de conservación para los registros de chat de Ask Lumen. Rúbrica: 3 = plazo, finalidad, acceso, borrado; 2 = tres; 1 = uno; 0 = nada.
Síntesis
Los almacenes de datos alimentan y registran los sistemas de IA. Las consultas parametrizadas, las cuentas de mínimo privilegio, la recuperación según el público y la conservación mínima evitan que se conviertan en la filtración.
Siga estudiando — capítulo 09 de 40
← Capítulo 08 (borrador) · Índice de capítulos del curso · Capítulo 10 (borrador) →