¿Por qué la búsqueda semántica necesita selectividad?

Hasta ahora, considerábamos una incrustación vectorial como una entidad completa e independiente, centrada exclusivamente en el significado que codifica. Aunque esto permite la búsqueda semántica, a menudo con un alto grado de similitudse limita a la similitud entre la consulta y el conjunto de datos.

No se podía confiar en que la oferta de búsqueda de similitudes vectoriales satisficiera predicados exactos. El prefiltrado pretende colmar exactamente esta laguna, buscando vectores similares sólo entre los que satisfacen algunos criterios de filtrado.

Es el equivalente en incrustación de limitar tu búsqueda, ya sea de trabajo o de una propiedad, a una ubicación. Por ejemplo, si quiere una vivienda en primera línea de playa en un estado concreto. También quiere limitar su búsqueda a las que tienen tres dormitorios o más. Recorrer los listados sin un método para filtrar por estos criterios es casi inviable dada la gran cantidad de listados.

Con el prefiltrado, puede limitar su búsqueda a una ubicación específica restringiendo el espacio de búsqueda a las propiedades elegibles mediante consultas geoespaciales y numéricas. Sobre este subconjunto limitado se realizará una búsqueda de similitud vectorial de propiedades "frente a la playa", "junto a la playa", "frente al mar".

El filtrado previo permitirá a los usuarios especificar consultas de filtrado como parte del atributo kNN en la consulta, cuyos resultados sólo se considerarán aptos para ser devueltos por la consulta kNN. En pocas palabras, el usuario puede utilizar la conocida sintaxis de consulta FTS para restringir los documentos sobre los que se realizará una búsqueda kNN.

¿Cuándo aplicar el prefiltrado?

Como su nombre indica, las incrustaciones son metadatos filtrados antes de la búsqueda de similitudes. Es diferente del postfiltrado, en el que la búsqueda kNN va seguida de un filtrado de metadatos. El prefiltrado ofrece muchas más posibilidades de obtener k resultados positivos, siempre que al menos esos documentos superen la fase de filtrado.

Cómo funciona

Antes de adentrarnos en las tripas del prefiltrado con kNN, vamos a entender cómo un vector y un índice de texto completo se ubican conjuntamente en el índice del servicio de Búsqueda. Cada índice de búsqueda tiene una o más particiones, cada una de las cuales tiene uno o más segmentos. Cada uno de estos segmentos es un fichero, y el fichero se divide en secciones separadas, una por cada tipo de índice. La visualización de un segmento como una unidad autónoma con contenido tanto textual como vectorial de un lote de documentos indexado será útil para comprender cómo funciona el prefiltrado a nivel de segmento.

Semantic Similarity with Focused SelectivityUna consideración clave a la hora de construirlo fue que debía ser agnóstico de predicción en el momento de la búsqueda. Esencialmente, esto significa que el filtrado en el índice vectorial debería funcionar de la misma manera, independientemente del predicado de texto completo. Un predicado de texto sobre un campo de texto no debería ser diferente de un predicado numérico sobre otro.

Para ello, se utilizan números de documento, identificadores exclusivos de un documento, para delimitar qué documentos son aptos para la consulta kNN. Toda consulta FTS, ya sea textual, numérica o geoespacial, se reduce a identificar los resultados por su número de documento. Utilizar números de documento significa que no tenemos que cambiar nuestra estrategia de indexación de vectores, y limitarla a un cambio en el tiempo de búsqueda.

Fase 1: Filtrado de metadatos

Dado que un segmento es esencialmente un lote inmutable de documentos, con su contenido textual y vectorial indexado, la consulta de metadatos de texto completo devuelve todos los documentos elegibles. a nivel de segmento. A continuación, sus números de documento se pasan al índice de vectores para recuperar los vectores elegibles más cercanos.

Semantic Similarity with Focused Selectivity

Fase 2: búsqueda kNN

Semantic Similarity with Focused SelectivityEl algoritmo actual que elige el nprobe clusters más cercanos al vector de consulta en un índice IVF es esencialmente volando a ciegas ya que no tiene en cuenta los conglomerados próximos con pocos o ningún documento elegible. En el momento de la búsqueda, la selección de conglomerados a sondear ahora tiene que contabilizar la distribución de las respuestas positivas filtradas por metadatos a través del índice.

Un grupo más cerca al vector de consulta podría tener muchas menos coincidencias elegibles que uno mucho más alejado.

Tener en cuenta la distribución de los aciertos de filtro y mantener al mismo tiempo una alta recuperación significa que no podemos escanear los conglomerados basándonos únicamente en la densidad de aciertos de filtro. Lo que sí significa es que intentamos minimizar los cálculos de distancia para los vectores no elegibles, incluso cuando escaneamos tantos conglomerados como sea necesario para devolver el k vecinos más cercanos.

Antes, nprobe se definió como el límite absoluto al número de clusters escaneados. Ahora, se trata más bien de un número mínimo de clusters a escanear suponiendo que menos clusters tengan suficientes vectores elegibles. En los casos de distribución dispersa de aciertos de filtro, en los que cada conglomerado tiene relativamente pocos vectores elegibles, nuestra búsqueda de k vecinos más cercanos puede llevarnos a escanear mucho más que nprobe clusters. Tanto el kNN filtrado como el no filtrado escanean los clusters en orden creciente de distancia al vector de consulta, con la diferencia de que escanean un subconjunto de vectores a través de un número potencialmente mayor de clusters.

Una vez que el índice vectorial devuelve los vectores más similares a nivel de segmento, éstos se agregan a nivel de índice global de forma similar a como se hace para kNN sin filtrado.

Cómo utilizarlo

Cojamos un cubo, hitos. Este es un documento de muestra:

Crea un índice, prueba, que indexa el incrustación, id y ciudad campos.

Mi primera consulta es una incrustación del Museo de Ingenieros Reales de Gillingham:

Los más cercanos son el Museo de la Brigada de Bomberos de Londres, el Museo Verulamium de St Albans y el Museo de la RAF de Londres.

Ahora queremos buscar museos similares en Glasgow, es decir, el campo ciudad debe tener un valor Glasgow.

Este es el aspecto de la consulta filtrada, con la opción filtro cláusula añadida:

Como era de esperar, los resultados se limitan ahora a los de Glasgow: los más cercanos son la Galería de Arte y Museo Kelvingrove y el Museo Riverside.

Como se ve en este ejemplo, una consulta kNN filtrada ofrece la ventaja de seleccionar los documentos para una búsqueda por similitud utilizando las buenas y viejas consultas FTS.

Seguir aprendiendo


Free Cloud NoSQL DBaaS

 

Autor

Publicado por Aditi Ahuja, Ingeniera de Software

Dejar una respuesta