Metadata Tagger
Metadata Tagger pide a un modelo que lea cada documento o fragmento y rellene los datos que tú describes: la máquina de la que habla, el tema, los códigos que menciona, el producto, la fecha… Esos datos se guardan junto al texto en la base vectorial y permiten buscar solo entre los fragmentos que cumplen una condición, por ejemplo «solo los del modelo Q90».
Sin etiquetas, una pregunta como «¿qué significa el error E07 en la Q90?» puede traer el E07 de otra máquina, porque el texto se parece. Con una etiqueta maquina en cada fragmento, la búsqueda se limita a los de la Q90.
Cuándo usarlo
- Tus documentos hablan de varias máquinas, productos, marcas o clientes, y las preguntas suelen nombrar uno.
- Los datos que quieres filtrar no vienen en el archivo, sino dentro del texto.
- Quieres filtrar con SelfQueryRetriever, que convierte la pregunta en una búsqueda con filtros.
- Quieres que un agente o un flujo filtre la base vectorial por esos datos, por ejemplo con Filter by Metadata de Qdrant u otra base vectorial.
Configuración
| Campo | Qué hace |
|---|---|
| Data (obligatorio) | Los documentos o fragmentos que se etiquetan, normalmente la salida Chunks de un divisor de textos como Contextual Text Splitter. |
| Language Model (obligatorio) | El modelo que lee cada texto y rellena los datos. Un modelo rápido y económico es suficiente. |
| Metadata Schema | Los datos que se etiquetan. Se edita con el botón Editar Esquema de Argumentos, el mismo editor que usa SelfQueryRetriever. Cada dato lleva un nombre, un tipo y una descripción de lo que significa. |
Tipos de dato
| Tipo | Para qué |
|---|---|
string | Un texto: la máquina, el tema, el cliente. |
integer | Un número entero: un año, una cantidad. |
number | Un número con decimales: un precio, un peso. |
boolean | Sí o no: si el fragmento habla de una avería. |
array | Una lista de valores: todos los códigos que menciona un fragmento. |
Cualquier otro tipo del editor se guarda como texto. Si el texto no dice nada sobre un dato, el fragmento se queda sin ese dato.
Opciones avanzadas
| Campo | Qué hace |
|---|---|
| Instructions | Indicaciones extra para el modelo, por ejemplo cómo escribir los nombres de producto («escribe el modelo sin la marca: Q90, no Cafés del Sur Q90»). |
| Overwrite Existing Values | Activado (por defecto), el valor del modelo sustituye al que el documento ya tenía con el mismo nombre: un archivo leído del almacenamiento, por ejemplo, ya trae type = file, y un campo del esquema llamado type recibe el valor del modelo. Desactivado, conserva el valor propio del documento y solo rellena lo que falta. |
| Parallel Requests | Cuántos textos se etiquetan a la vez, de 1 a 20. Por defecto, 5. Más es más rápido, si tu proveedor de modelos lo permite. |
Resultado
- Tagged Data: los mismos documentos o fragmentos, con los datos nuevos. En la tabla de salida verás primero el texto, después las etiquetas y al final los datos que ya traía el documento (por ejemplo, el contexto y el fragmento original si vienen de Contextual Text Splitter). Conéctala a Ingest Data de una base vectorial.
Si el modelo no contesta con los datos pedidos ni al segundo intento, la ejecución se detiene con un error, en lugar de guardar fragmentos sin etiquetar.
Ejemplo
Un servicio técnico de cafeteras prepara los manuales de sus máquinas para su asistente.
-
Lee el manual en PDF con Storage Files y córtalo con Contextual Text Splitter.
-
Conecta Chunks a Data de Metadata Tagger y un modelo a Language Model.
-
En Metadata Schema describe tres datos:
Nombre Tipo Descripción maquinastringModelo de máquina del que habla el texto: Q90, Q60 o M64. temastringDe qué trata: averia, mantenimiento, instalacion o limpieza. codigosarrayTodos los códigos de error que aparecen en el texto, como E07. -
Conecta Tagged Data a Ingest Data de Qdrant con Operation en
Addy ejecuta el flujo.
Cada fragmento queda guardado con su máquina, su tema y sus códigos. En el flujo del asistente, usa el mismo esquema en SelfQueryRetriever para que la pregunta «error E07 de la Q90» busque solo entre los fragmentos de esa máquina.
El vídeo de Self Query Retriever muestra un esquema como este en un flujo de ingesta y cómo se usa después para filtrar por marca y mes.
Buenas prácticas
- Enumera los valores posibles en la descripción. «Modelo de máquina: Q90, Q60 o M64» da etiquetas iguales en todos los fragmentos; «la máquina» da variantes como «Q-90» o «cafetera Q90», que luego no coinciden en el filtro.
- Si un dato puede tener varios valores, decláralo
array. En nuestra prueba del 17 de octubre de 2026, un campo de código de error declarado como texto dejó un fragmento que listaba tres códigos con uno solo, y las búsquedas filtradas por los otros dos no lo encontraban. Ese conjunto de prueba (9 documentos, 40 preguntas) es sintético: muestra cómo se comporta la técnica, no una promesa. - Los datos de un solo valor por naturaleza son los que mejor filtran: tipo de documento, marca, modelo, mes.
- Usa el mismo esquema aquí y en SelfQueryRetriever: lo que se etiqueta al guardar es lo que se puede filtrar al buscar.
- Tiene coste: se hace una llamada al modelo por cada fragmento. En la prueba, 80 fragmentos se etiquetaron en unos 15 segundos con 5 a la vez. Se hace una sola vez, al guardar los documentos.
Componentes relacionados
- SelfQueryRetriever: convierte la pregunta en una búsqueda con filtros por estos datos.
- Contextual Text Splitter: corta los documentos y añade contexto a cada fragmento antes de etiquetarlo.
- Qdrant: una base vectorial con filtros por datos.
Para ver el flujo de preparación completo, consulta Preparar los documentos en la guía de RAG.