Nota: Para obtener antecedentes importantes sobre la búsqueda de vectores, consulte la Parte 1 de nuestra introducción a la búsqueda semántica: De palabras clave a vectores.
Al construir una aplicación de búsqueda vectorial, terminará administrando muchos vectores, también conocidos como incrustaciones. Y una de las operaciones más comunes en estas aplicaciones es encontrar otros vectores cercanos. Una base de datos vectorial no solo almacena integración, sino que también facilita las operaciones de búsqueda tales comunes sobre ellas.
La razón por la cual encontrar vectores cercanos es útil es que los elementos semánticamente similares terminan cerca uno del otro en el espacio de incrustación. En otras palabras, encontrar a los vecinos más cercanos es la operación utilizada para encontrar elementos similares. Con esquemas de incrustación disponibles para texto multilingüe, imágenes, sonidos, datos y muchos otros casos de uso, esta es una característica convincente.
Generando incrustaciones
Un punto de decisión clave en el desarrollo de una aplicación de búsqueda semántica que utiliza vectores es elegir qué servicio de incrustación usar. Cada elemento en el que desee buscar deberá procesarse para producir una incrustación, al igual que cada consulta. Dependiendo de su carga de trabajo, puede haber gastos generales significativos involucrados en la preparación de estos incrustaciones. Si el proveedor de incrustación está en la nube, entonces la disponibilidad de su sistema, incluso para consultas, dependerá de la disponibilidad del proveedor.
Esta es una decisión que debe tenerse en cuenta, ya que cambiar las integridades normalmente implicará repopular toda la base de datos, una propuesta costosa. Diferentes modelos producen incrustaciones en un espacio de incrustación diferente, por lo que los incrustaciones generalmente no son comparables cuando se generan con diferentes modelos. Sin embargo, algunas bases de datos de vectores permitirán que se almacenen múltiples incrustaciones para un elemento determinado.
Un standard servicio de incrustación alojado en la nube para texto es Ada V2 de Openai. Cuesta algunos centavos procesar un millón de tokens y se usa ampliamente en diferentes industrias. Google, Microsoft, Huggingface y otros también proporcionan opciones en línea.
Si sus datos son demasiado sensibles para enviar fuera de sus paredes, o si la disponibilidad del sistema es de suma preocupación, es posible producir incrustaciones locales. Algunas bibliotecas populares para hacer esto incluyen SentencaTransformers, Gensimy varios marcos de procesamiento del lenguaje pure (PNL).
Para contenido que no sea texto, hay una amplia variedad de modelos de incrustación posibles. Por ejemplo, SentenceTransfomers permite que las imágenes y el texto estén en el mismo espacio de incrustación, por lo que una aplicación podría encontrar imágenes similares a las palabras, y viceversa. Hay una gran cantidad de modelos diferentes disponibles, y esta es un área de desarrollo de rápido crecimiento.
Búsqueda de vecinos más cercanos
¿Qué se entiende precisamente por vectores «cercanos»? Para determinar si los vectores son semánticamente similares (o diferentes), deberá calcular distancias, con una función conocida como medida de distancia. (Puede ver esto también llamado métricoque tiene una definición más estricta; En la práctica, los términos a menudo se usan indistintamente). Por lo common, una base de datos vectorial tendrá índices optimizados basados en un conjunto de medidas disponibles. Aquí hay algunos de los comunes:
Una distancia directa de línea recta entre dos puntos se llama Métrica de distancia euclidianao a veces L2y es ampliamente appropriate. El cálculo en dos dimensiones, usando x e y para representar el cambio a lo largo de un eje, es sqrt (x^2 + y^2), pero tenga en cuenta que los vectores reales pueden tener miles de dimensiones o más, y todos esos términos necesita ser calculado.
Otro es el Métrica de distancia de Manhattana veces llamado L1. Esto es como Euclidiano si omite todas las multiplicaciones y la raíz cuadrada, en otras palabras, en la misma notación que antes, simplemente ABS (x) + ABS (y). Piense en ello como la distancia que necesitaría para caminar, siguiendo solo caminos de ángulo recto en una cuadrícula.
En algunos casos, el ángulo entre dos vectores se puede usar como medida. A producto de puntoo producto internoes la herramienta matemática utilizada en este caso, y algún {hardware} está especialmente optimizado para estos cálculos. Incorpora el ángulo entre los vectores y sus longitudes. En contraste, un medida coseno o similitud de coseno Cuenta solo de ángulos, produciendo un valor entre 1.0 (vectores que apuntan la misma dirección) a 0 (vectores ortogonales) a -1.0 (vectores 180 grados de distancia).
Hay bastantes métricas de distancia especializadas, pero estas se implementan con menos frecuencia «fuera de la caja». Muchas bases de datos vectoriales permiten que las métricas de distancia personalizadas se conecten al sistema.
¿Qué medida de distancia debes elegir? A menudo, la documentación para un modelo de incrustación dirá qué usar: debe seguir tal consejo. De lo contrario, Euclidean es un buen punto de partida, a menos que tenga razones específicas para pensar lo contrario. Puede valer la pena experimentar con diferentes medidas de distancia para ver cuál funciona mejor en su aplicación.
Sin algunos trucos inteligentes, para encontrar el punto más cercano en la incrustación del espacio, en el peor de los casos, la base de datos necesitaría calcular la medida de distancia entre un vector objetivo y cualquier otro vector en el sistema, luego ordene la lista resultante. Esto rápidamente se sale de management a medida que crece el tamaño de la base de datos. Como resultado, todas las bases de datos de nivel de producción incluyen Vecino más cercano (ANA) Algoritmos. Estos intercambian un poco de precisión para un rendimiento mucho mejor. La investigación sobre los algoritmos ANN sigue siendo un tema candente, y una fuerte implementación de uno puede ser un issue clave en la elección de una base de datos vectorial.
Selección de una base de datos vectorial
Ahora que hemos discutido algunos de los elementos clave que las bases de datos de vectores son compatibles con las incrustaciones y la similitud del vector informático, ¿cómo debe seleccionar una base de datos para su aplicación?
El rendimiento de la búsqueda, medido por el tiempo necesario para resolver consultas contra los índices de vectores, es una consideración principal aquí. Vale la pena comprender cómo una base de datos implementa la indexación y la coincidencia de vecinos más cercanos, ya que esto afectará el rendimiento y la escala de su aplicación. Pero también investiga el rendimiento de la actualización, la latencia entre agregar nuevos vectores y hacer que aparezcan en los resultados. Consultar e ingerir datos vectoriales al mismo tiempo también puede tener implicaciones de rendimiento, así que asegúrese de probar esto si espera hacer ambas cosas simultáneamente.
Tenga una buena thought de la escala de su proyecto y qué tan rápido espera que crezcan sus usuarios y datos vectoriales. ¿Cuántos incrustaciones vas a necesitar almacenar? La búsqueda de vectores a escala de miles de millones es ciertamente factible hoy. ¿Puede su base de datos vectorial escalar para manejar los requisitos de QPS de su aplicación? ¿El rendimiento se degrada a medida que aumenta la escala de los datos del vector? Si bien importa menos lo que se usa la base de datos para la creación de prototipos, querrá considerar lo que se necesitaría para que su aplicación de búsqueda vectorial esté en producción.
Las aplicaciones de búsqueda vectorial a menudo también necesitan filtrado de metadatos, por lo que es una buena thought comprender cómo se realiza ese filtrado y cuán eficiente es, al investigar las bases de datos de vectores. ¿La base de datos pre-filtro, postfilter o búsqueda y filtra en un solo paso para filtrar los resultados de búsqueda vectorial utilizando metadatos? Los diferentes enfoques tendrán diferentes implicaciones para la eficiencia de su búsqueda vectorial.
¡Una cosa a menudo se pasa por alto sobre las bases de datos vectoriales es que también deben ser buenas bases de datos! Aquellos que hacen un buen trabajo manejando contenido y metadatos en la escala requerida deben estar en la parte superior de su lista. Su análisis debe incluir inquietudes comunes a todas las bases de datos, como controles de acceso, facilidad de administración, confiabilidad y disponibilidad, y costos operativos.
Conclusión
Probablemente el caso de uso más común hoy en día para las bases de datos de vectores es complementar los modelos de idiomas grandes (LLM) como parte de un flujo de trabajo impulsado por IA. Estas son herramientas poderosas, para las cuales la industria solo está rascando la superficie de lo que es posible. Tenga cuidado: es possible que esta increíble tecnología lo encourage con nuevas concepts sobre nuevas aplicaciones y posibilidades para su pila de búsqueda y su negocio.
Aprenda cómo RockSet admite la búsqueda de vectores aquí.