En el artículo Búsqueda semántica: consulta por similitud vectorial, presentamos cómo consultar entidades utilizando la similitud vectorial, una poderosa forma de encontrar los registros más relevantes basándose en el significado en lugar de en valores exactos.
4D 21 R2 incluye una nueva forma de ordenar los resultados de las consultas utilizando los campos 4D.Vector. No solo puede filtrar entidades por similitud, sino también ordenar los resultados de la consulta utilizando la función .query() para que las entidades más relevantes y semánticamente más cercanas aparezcan en primer lugar. Tanto si está creando una experiencia de búsqueda inteligente, un motor de recomendaciones o un asistente basado en IA, esta nueva función garantiza que los resultados se ordenen por relevancia, lo que ofrece resultados más precisos y fáciles de usar.
Ordenar los resultados por similitud
Como desarrollador 4D, ahora puede ordenar los resultados de una consulta en función de la similitud vectorial directamente en su expresión de consulta. Esta mejora se aplica tanto al código 4D como a las solicitudes REST, lo que facilita la recuperación de entidades por orden de proximidad semántica.
Cuando ejecuta una consulta en un campo vectorial y ese mismo campo aparece en la cláusula order by, 4D ordena automáticamente los resultados según su cálculo de similitud (o distancia).
var $result:=$clientAI.embeddings.create("A general manager living in France"; $model)
Var $inputEmbedding:=$result.vector
var $comparisonVector := {vector: $inputEmbedding; threshold: 0.4}
var $results := ds.MyTable.query("myVectorField >= :1 order by myVectorField"; $comparisonVector)
COMBINAR LA ORDENACIÓN SEMÁNTICA CON LA ordenaCIÓN CLÁSICA
Una de las ventajas principales del enfoque de 4D es que la ordenación semántica basado en vectores se puede combinar con los filtros ORDA tradicionales en la misma consulta.
var $comparisonVector := {vector: $myVector; metric: mk cosine; threshold: 0.4}
var $results := ds.MyTable.query("myVectorField <= :1 AND salary>100000 order by myVectorField, salary desc"; $comparisonVector)
En este ejemplo, la consulta recupera los empleados cuyas descripciones de puesto son semánticamente cercanas al texto introducido y cuyo salario supera los 100 000, y los ordena según la similitud vectorial y el salario.
Uso de la API REST
Esta función también está disponible a través de la API REST. Puede ordenar los resultados por similitud vectorial con un simple parámetro de consulta:
GET /rest/MyTable/?$filter="myVectorField>=:1 order by myVectorField"&$params=[{"vector":[1,2,3,...],"threshold":0.4}]
// OR
GET /rest/MyTable/?$filter="myVectorField>=:1"&$params=[{"vector":[1,2,3,...],"threshold":0.4}]&$orderby="Vector"
Conclusión
Esta mejora hace que las consultas basadas en IA sean aún más prácticas e intuitivas. Ahora puede:
-
Consultar sus datos utilizando la similitud vectorial.
-
Ordenar los resultados por similitud, colocando las entidades más relevantes en la parte superior.
-
Utilizar la funcionalidad de forma coherente tanto en contextos 4D como REST.
Esto significa que puede crear fácilmente funcionalidades como la búsqueda semántica, las listas de recomendaciones o las búsquedas contextuales, en las que los resultados más similares aparecen en primer lugar.
