Descripción de la búsqueda semántica

Completado

Veamos los aspectos básicos de la búsqueda semántica:

  • Cómo difiere de la búsqueda léxica estándar.
  • ¿Qué es la inserción de vectores?
  • ¿Qué hacen las bases de datos vectoriales?

Búsqueda léxica estándar, o búsqueda de palabras clave, consulta documentos mediante caracteres coincidentes. Por ejemplo, la consulta "luz" coincide con el texto "luz brillante" porque el carácter light aparece en el documento.

La búsqueda léxica se puede aumentar con coincidencia aproximada; por ejemplo, la consulta "luces" podría coincidir con el texto "luz brillante" o lihgts mal escrito debido a que está desactivado un carácter (falta s, o se intercambia g y h). Aunque la coincidencia aproximada y otras técnicas como lematización son útiles, esta técnica debe coincidir con sinónimos o lenguaje semánticamente similar: expresiones diferentes, jerga, vocabulario técnico, etc. Para proporcionar los resultados de búsqueda más relevantes con la búsqueda léxica, los autores deben insertar palabras clave en metadatos o en el propio texto (lo que puede ser una experiencia de usuario complicada).

Escriba búsqueda semántica. La búsqueda semántica no usa similitud de caracteres. En su lugar, usa representaciones numéricas de los conceptos en palabras y frases. Estas representaciones numéricas se denominan vectores de inserción o simplemente inserciones.

Si dos inserciones son numéricamente similares, también son semánticamente similares. Esta similitud es más general que la superposición de palabra clave de prueba porque es menos sensible a la selección o expresión de palabras clave precisas.

Para realizar una búsqueda semántica, primero genere el vector de inserción de la consulta. A continuación, compare ese vector con una base de datos de vectores. Las inserciones más cercanas a la inserción de consultas son los documentos más semánticamente similares a la consulta.

La mayoría de los casos de uso de bases de datos relacionales no implican almacenar n-vectores dimensionales ni calcular la distancia numérica entre ellos. La búsqueda semántica eficaz requiere funcionalidad de base de datos vectorial.

Diagrama que muestra un documento y una consulta que pasa por la API de incrustaciones de OpenAI para convertirse en vectores de inserción. A continuación, estos vectores se comparan mediante la distancia del coseno.

Inserciones

Una inserción es una representación numérica de la semántica. Las inserciones se representan como n-vectores dimensionales: matrices de n números. Cada dimensión representa una calidad semántica determinada por el modelo de inserción.

Diagrama que muestra el texto de entrada

Si dos vectores de inserción apuntan en direcciones similares, representan conceptos similares, como "brillante" y "soleado". Si apuntan entre sí, representan conceptos opuestos, como "triste" y "feliz". La estructura del modelo de inserción y los datos de entrenamiento determinan lo que se considera similar y diferente.

Las incrustaciones se pueden aplicar al texto y a cualquier tipo de datos, como imágenes o audio. La parte crítica consiste en transformar los datos en n-vectores de inserción dimensionales basados en algún modelo o función. La similitud numérica de las inserciones refleja la similitud semántica de los datos correspondientes.

La similitud numérica de dos n-vectores dimensionales v1 y v2 se da por su producto de puntos, escritov1·v2. Para calcular el producto de punto, multiplique los valores de cada dimensión en pares y, a continuación, sume el resultado:

dot_product(v1, v2) = SUM(
 v1[0] * v2[0] +
 v1[1] * v2[1],
 ...,
 v1[n-1] * v2[n-1],
 v1[n] * v2[n]
)

Dado que las incrustaciones son vectores de unidad (vectores de longitud uno), el producto de puntos es igual a la similitud coseno de los vectores, un valor entre -1 (direcciones exactamente opuestas) y 1 (exactamente la misma dirección). Los vectores con una similitud coseno de cero son ortogonales: semánticamente no relacionados.

Puede visualizar n-espacios dimensionales mediante la proyección de espacios tridimensionales mediante el análisis de componentes principal (PCA). PCA es una técnica estándar para reducir las dimensiones vectoriales. El resultado es una proyección simplificada pero visualizable del espacio n-dimensional. La representación de las inserciones de documentos de esta manera mostrará que los documentos más similares se agrupan en clústeres, mientras que los documentos más diferentes están más lejos.

Dadas estas definiciones, realizar una búsqueda semántica de una consulta en una colección de inserciones de documentos es matemáticamente sencilla:

  1. Genere la inserción de consultas mediante un modelo de lenguaje.
  2. Tome el producto de punto de la inserción de consultas en la inserción precalculada de cada documento.
  3. Ordene los productos de puntos, números de -1 a 1.
  4. Los documentos más relevantes (semánticamente similares) tienen las puntuaciones más altas y los documentos menos relevantes (semánticamente diferentes) tienen las puntuaciones más bajas.

Aunque es matemáticamente simple, esta no es una consulta simple o eficaz en una base de datos relacional. Para almacenar y procesar este tipo de consulta de similitud vectorial, use una base de datos vectorial.

Bases de datos vectoriales

Una base de datos vectorial optimiza el almacenamiento y el cálculo de vectores de muchas dimensiones, como inserciones. En concreto, las bases de datos vectoriales proporcionan cálculos rápidos y precisos del producto de puntos para ejecutar una consulta de similitud vectorial.

Las búsquedas de similitud vectorial tienen varios casos de uso:

  • buscar imágenes similares a la inserción de la imagen de consulta
  • buscar documentos semánticamente similares al texto de la consulta
  • buscar productos con características y clasificaciones similares para un sistema de recomendaciones

La búsqueda semántica consulta la base de datos vectorial para ver la similitud de la inserción de consultas en cada inserción almacenada. Después, las aplicaciones pueden capturar los datos correspondientes a las inserciones.

Hay muchas bases de datos vectoriales nativas y extensiones de base de datos entre las que elegir. Los siguientes servicios de Azure pueden ayudarle a satisfacer sus necesidades de base de datos vectoriales: