Búsqueda semántica: consulta por similitud vectorial

Traducido automáticamente de Deepl

Con la creciente importancia de la búsqueda basada en vectores en aplicaciones de IA como la búsqueda semántica, los motores de recomendación y el procesamiento del lenguaje natural, 4D introduce soporte nativo para consultas vectoriales en la función query(). Esta mejora introduce las comparaciones de similitud vectorial directamente en el lenguaje de DataClass.query() y EntitySelection.query().

Consulta por similitud vectorial

Ahora puede buscar entidades cuyos campos vectoriales sean similares a un vector de referencia utilizando los operadores de comparación conocidos: >, >=, < y <=.

La sintaxis básica es:

// Call the OpenAI embeddings API to generate the vector for the input text
var $result:=$clientAI.embeddings.create("A general manager living in France"; $model)
Var $inputEmbedding:=$result.vector

var $results := ds.MyClass.query("myVectorField > :1"; {vector: $inputEmbedding})

Esto devuelve entidades en las que la similitud con $myVector es mayor que el umbral predeterminado (0,5), utilizando la métrica de similitud predeterminada: similitud coseno.

Puede afinar su búsqueda definiendo explícitamente ambas:

  • Qué métrica de similitud es más relevante para su caso de uso con el atributo metric.

  • La similitud que debe tener un resultado con su vector de referencia para que se considere relevante con el atributo threshold.

var $comparisonVector := {vector: $inputEmbedding; metric: mk cosine; threshold: 0.4}
var $results := ds.MyTable.query("myVectorField <= :1"; $comparisonVector)

COMBINAR LA BÚSQUEDA SEMÁNTICA CON LA CONSULTA CLÁSICA

Una ventaja clave del enfoque de 4D es que las consultas semánticas pueden combinarse con filtros ORDA tradicionales en la misma consulta.

Esto permite crear búsquedas potentes y precisas que combinan el descubrimiento basado en el significado con criterios estructurados.

var $comparisonVector := {vector: $myVector; metric: mk cosine; threshold: 0.4} 
var $results := ds.MyTable.query("myVectorField <= :1 AND salary>100000"; $comparisonVector)

En este ejemplo, la consulta recupera los empleados cuyas descripciones de puesto se aproximan semánticamente al texto de entrada y cuyo salario supera los 100.000.

CUÁNDO UTILIZARLA (Y CUÁNDO NO)

La búsqueda semántica (query) es ideal cuando desea que su aplicación comprenda el significado en lugar de las coincidencias exactas.

Es perfecta para:

  • Búsquedas difusas o contextuales (por ejemplo, «encontrar documentos similares a éste»).

  • Consultas en lenguaje natural (por ejemplo, «empleados que trabajan en marketing y diseño»)

  • Motores de recomendación y funciones de descubrimiento de conocimientos

Sin embargo, no está diseñado para tareas analíticas estructuradas.

Si tu consulta es algo así como «los 10 empleados mejor pagados», una consulta clásica es más rápida y adecuada.

Combinando ambos enfoques, se pueden crear experiencias de búsqueda inteligentes y precisas. La búsqueda semántica añade una potencia notable y combina perfectamente con las consultas tradicionales basadas en atributos ORDA.

Conclusión

Con la búsqueda semántica (query) ahora integrada en 4D, puede crear fácilmente funcionalidades de búsqueda y descubrimiento basadas en IA en sus aplicaciones.

Seleccione la métrica de similitud que mejor se adapte a su caso de uso, ajuste el umbral de relevancia y combine filtros semánticos y estructurados para obtener resultados óptimos.

Esta nueva capacidad aporta el poder de la comprensión basada en IA directamente a su modelo de datos 4D, abriendo la puerta a consultas más inteligentes y conscientes del contexto.

Actualmente, los campos vectoriales no están indexados, pero el soporte de indexación se introducirá en una próxima versión de 4D. Esta futura mejora mejorará significativamente el rendimiento y hará que la búsqueda semántica sea aún más rápida y eficiente para grandes conjuntos de datos.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se unió al equipo de 4D Program en noviembre de 2016. Como Product Owner, está a cargo de escribir las historias de usuario y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la característica entregada cumple con las necesidades del cliente. Después de obtener una licenciatura en Ciencias de la Computación en el CNAM, Fabrice se unió a una pequeña empresa de publicación de software como desarrollador Windev. A continuación, trabajó para diferentes empresas del sector industrial y comercial como desarrollador de Windev y de la web, así como asesor técnico de nuevas funcionalidades.