Las representaciones vectoriales abren la puerta a numerosos casos de uso de la IA en tus aplicaciones 4D: búsqueda semántica, recomendaciones, coincidencia de contenidos y clasificación de documentos.
Pero crear una incrustación implica algo más que generar un vector. A medida que tus datos cambian, sus representaciones vectoriales también deben actualizarse. Es necesario detectar los cambios, invalidar los vectores afectados, recalcularlos y gestionar los posibles errores o limitaciones de los servicios de IA.
A partir de 4D 21 R5, « 4D Embedding Studio » te ahorra tener que crear toda esta infraestructura. Una interfaz te permite configurar tus embeddings, mientras que el programador gestiona su ciclo de vida, desde la invalidación hasta el recálculo. Esto te permite centrarte en lo que realmente importa: utilizar los embeddings para incorporar funciones de IA a tus aplicaciones.
En este HDI, los recálculos se activan manualmente para que puedas observar cada paso y obtener resultados de forma inmediata. El programador, que automatiza este proceso en producción, se explica más adelante en este artículo.
Crea representaciones sin escribir código
Una incrustación es una representación vectorial del contenido. Transforma el texto u otra información en una secuencia de números que un modelo de IA puede comparar. Como resultado, el contenido con significados similares produce vectores similares, incluso cuando no utiliza exactamente las mismas palabras.
Con 4D Embedding Studio, puedes configurar la generación de representaciones de forma íntegra a través de la interfaz:
- Declara tu proveedor de IA y un alias para el modelo de incrustación en la configuración de estructura, en la página de IA.
- Añade un campo de tipo «Objeto» a la tabla correspondiente y asócialo a la clase 4D.Vector. Opcionalmente, también puedes añadir un campo booleano denominado «<nombre_del_vector>_dirty» (por ejemplo, student_vector_dirty) para realizar un seguimiento de los vectores que deben recalcularse. A continuación encontrarás más detalles sobre esta estrategia.
- Abre 4D Embedding Studio desde el menú «Diseño».
- Selecciona el campo vectorial, define la información que conformará su contenido y elige el modelo de incrustación que deseas utilizar.

Eso es todo. No es necesario escribir la lógica que genera los vectores. 4D sabe cómo construir la incrustación a partir de tu configuración.
Tus vectores ya están listos para utilizarlos en tu aplicación, por ejemplo, para realizar búsquedas semánticas.
Detecta automáticamente los vectores que necesitan actualizarse
En una aplicación en producción, los datos nunca son estáticos. Si una incrustación se basa en el título y el contenido de un documento, debe tenerse en cuenta cualquier cambio que se produzca en cualquiera de ellos.
Sin un mecanismo específico, tienes dos estrategias posibles, ninguna de las cuales es ideal:
- Mantener vectores obsoletos, con el riesgo de obtener resultados menos relevantes;
- Recalcular todos los vectores cada vez, lo que afecta innecesariamente al rendimiento y al coste de las llamadas a los servicios de IA.
4D Embedding Studio adopta un enfoque más específico. Cuando se modifica una entidad, 4D determina si el cambio afecta a la composición de su incrustación. Solo se invalidan los vectores afectados y se marcan para su recálculo.
No es necesario desarrollar ni mantener una lógica propia de detección de cambios.
Nota: la detección se aplica a los campos de la propia tabla. Si el contenido de la incrustación utiliza un atributo de una tabla relacionada, un atributo calculado, un alias o una propiedad de un objeto, su modificación no invalida automáticamente el vector. En ese caso, invalida los vectores mediante programación o fuerza su recálculo.
Marca los vectores obsoletos según tus necesidades
Cuando un cambio requiere que se actualice una incrustación, 4D Embedding Studio le permite elegir cómo se debe marcar el vector como obsoleto.
Sin campo de seguimiento
Si no se define ningún campo de seguimiento, un vector invalidado se sustituye automáticamente por Null. Por lo tanto, ya no se utiliza en las búsquedas hasta que se vuelva a calcular.
Esta opción funciona bien para aplicaciones que dan prioridad a una coherencia estricta: es mejor no devolver ningún resultado que basarse en una incrustación que ya no se corresponde con los datos actuales.
Con un campo «dirty»
También puedes añadir a la estructura un campo booleano denominado « <vector_name>_dirty ». Cuando se necesita una actualización, este campo se establece en «true» y se conserva el vector existente hasta que se vuelva a calcular.
A continuación, su aplicación puede optar por seguir utilizando este vector temporalmente o excluirlo filtrando por «<vector_name>_dirty = false».
Esta estrategia garantiza la continuidad del servicio al tiempo que le permite identificar exactamente qué vectores están pendientes de ser recalculados.
El cambio de modelo es un caso especial: los diferentes modelos producen vectores que no se pueden comparar entre sí. Por lo tanto, tras un cambio de modelo, todos los vectores deben recalcularse, y 4D Embedding Studio marca automáticamente todos los registros afectados como «sucios». Hasta que se recalculen, exclúyalos de sus búsquedas con el filtro «<vector_name>_dirty =false».
Si su lógica de negocio requiere un control total, también puede desactivar la invalidación automática y gestionar este ciclo de vida usted mismo.
Recalcular de forma fiable las representaciones en segundo plano
Una vez que los vectores se marcan como obsoletos, su recálculo lo gestiona el programador de 4D Embedding Studio. Solo tiene que elegir la frecuencia con la que debe ejecutarse y, a continuación, iniciarlo: bien activando la opción «Ejecutar el método “On Host Database Event” de los componentes» en la configuración de la estructura, en la página «Seguridad» (desactivada por defecto), o con una sola línea de código:
cs.EmbeddingStudio.Scheduler.me.start()
4D Embedding Studio se encarga entonces de coordinar el procesamiento por ti.
Los recálculos se ejecutan de forma asíncrona sin bloquear a los usuarios. Puede ajustar su frecuencia según las necesidades de su aplicación: ejecutarlos regularmente, realizar actualizaciones por lotes o activarlos bajo demanda, por ejemplo, tras una implementación o un cambio importante en sus datos.
Un error no interrumpe el procesamiento: los vectores que no se han podido calcular quedan pendientes y se vuelven a intentar automáticamente durante la siguiente ejecución.
Esto le permite encontrar el equilibrio adecuado entre resultados actualizados, carga de procesamiento y costes de la API de IA, mientras que 4D se encarga de los aspectos técnicos necesarios para recalcular sus representaciones.
Busca por significado con tus incrustaciones
Una vez calculados los vectores, la búsqueda semántica se realiza en dos pasos.
En primer lugar, se calcula una incrustación para el texto introducido por el usuario. Para que los vectores sean comparables, debe calcularse con el mismo modelo que los vectores almacenados. El uso de la definición configurada en 4D Embedding Studio garantiza que se utilice la correcta.
// Retrieve the embedding definition configured in 4D Embedding Studio
var $settings:=cs.EmbeddingStudio.Settings.new()
var $definition:=$settings.find("Students"; "student_vector")
// Compute the vector of the user's query with the same model
var $result:=cs.EmbeddingStudio.Playground.new().embed("apps that are easy to use"; $definition)
A continuación, ejecute una consulta ORDA sobre el campo vectorial. 4D compara de forma nativa el vector de consulta con los de sus entidades, conserva aquellos que superan el umbral de similitud y los ordena de más cercano a más lejano:
// Find the most similar students, best match first
var $students:=ds.Students.query("student_vector > :1 order by student_vector desc"; \
{vector: $result.vector; threshold: 0.5})
Si utiliza un campo «dirty», basta con añadir un criterio para excluir los vectores que están pendientes de ser recalculados:
var $students:=ds.Students.query("student_vector > :1 and student_vector_dirty = false order by student_vector desc"; \
{vector: $result.vector; threshold: 0.5})
Esta búsqueda puede encontrar a un estudiante cuya biografía mencione «interfaces intuitivas» y «pruebas de usabilidad», aunque ninguna de esas palabras aparezca en la consulta.
Para obtener más información sobre la búsqueda vectorial en 4D (métricas de similitud, umbrales y cómo combinarla con criterios tradicionales), consulta nuestros artículos anteriores:
- Búsqueda semántica: consultas por similitud vectorial
- 4D AI: ordenación de los resultados de la consulta por similitud vectorial
Añade 4D Embedding Studio a tu proyecto
Ahora que ya tienes todo lo necesario para empezar, ¿por qué no pruebas 4D Embedding Studio en tu propia aplicación? En primer lugar, añádelo a tu proyecto: abre «Diseño > Dependencias del proyecto», haz clic en el botón «+» y selecciona la pestaña «GitHub». Elige «4D Embedding Studio» de la lista de componentes estándar de 4D y, a continuación, añádelo a tu proyecto.
La regla de dependencia está configurada de forma predeterminada en «Seguir la versión de 4D», lo que mantiene el componente alineado con tu versión de 4D. Reinicia tu proyecto cuando se te solicite para cargar el componente.

Para obtener más información, consulta «Gestión de dependencias del proyecto » y «Toma el control de los componentes estándar de 4D».
Un ciclo de vida totalmente gestionado
Con 4D Embedding Studio, 4D se encarga de todos los aspectos técnicos necesarios para el ciclo de vida de sus integraciones:
- su generación se configura de forma visual,
- los cambios que requieren una actualización se detectan automáticamente,
- los vectores pueden invalidarse según la estrategia que elijas,
- su recálculo se coordina en segundo plano mediante el programador,
- se gestionan los errores y las limitaciones del servicio de IA,
-
las operaciones se pueden supervisar desde la ventana «Embedding Scheduler».
No es necesario crear ni mantener esta infraestructura: tu código puede centrarse en lo que aporta valor a tu aplicación, como la búsqueda semántica, las recomendaciones o la correspondencia de contenidos.
Consulta la documentación para configurar tu primera incrustación y aprender a integrarla en tus búsquedas semánticas.
Por el momento, no se pueden publicar comentarios en esta entrada.