El modelo de lenguaje grande (LLM) ha hecho realidad muchas ideas increíbles, como bots para cualquier cosa, expertos en conocimiento, asistentes de investigación y muchos otros. La mayoría de estas excelentes aplicaciones combinan LLM con un dominio específico de conocimiento, donde entran en juego las bases de datos vectoriales. Por ejemplo, supongamos que tienes una pregunta sobre un dominio, la mejor práctica es recuperar los posibles dominios de la base de datos y construir dinámicamente las indicaciones.
Seleccionar la base de datos vectorial adecuada para tu aplicación puede tener un impacto dramático en su eficiencia y efectividad. Actualmente, existen muchos productos de bases de datos vectoriales disponibles, y generalmente se dividen en dos categorías: bases de datos vectoriales especializadas y bases de datos vectoriales integradas. Si bien las bases de datos vectoriales especializadas como Pinecone se han vuelto populares debido a su facilidad de uso, a menudo quedan cortas en cuanto a escalabilidad o soporte para diversos tipos de datos. Por eso necesitamos una base de datos vectorial integrada.
# ¿Qué es una base de datos vectorial integrada?
Una base de datos vectorial integrada es un tipo de base de datos que combina capacidades de búsqueda vectorial con bases de datos estructuradas tradicionales. A diferencia de las bases de datos vectoriales especializadas diseñadas únicamente para índices vectoriales, las bases de datos vectoriales integradas almacenan tanto vectores como datos estructurados en la misma base de datos y combinan algoritmos de búsqueda vectorial con bases de datos estructuradas. Esta integración ofrece varias ventajas, como la capacidad de realizar una comunicación eficiente, filtros de metadatos flexibles, ejecutar consultas SQL y de unión de vectores, y aprovechar herramientas y integraciones maduras comúnmente asociadas con bases de datos de propósito general.
MyScale (opens new window) es una base de datos en la nube optimizada para aplicaciones y soluciones de inteligencia artificial, construida sobre la base de datos OLAP de código abierto ClickHouse. Ha logrado mejorar el rendimiento de búsqueda vectorial en una base de datos vectorial integrada. Tiene todos los beneficios que otras bases de datos vectoriales integradas pueden ofrecerte y ofrece algunas ventajas adicionales, como un buen rendimiento con el algoritmo de índice vectorial propietario MSTG.
En este artículo, destacaremos MyScale, una de las mejores bases de datos vectoriales integradas, y discutiremos cómo estas bases de datos pueden mejorar tus aplicaciones de LLM.
# La comunicación importa
La comunicación es realmente importante para el rendimiento de tu aplicación. Los servicios de base de datos como servicio (DBaaS, por sus siglas en inglés) y software como servicio (SaaS, por sus siglas en inglés) se están adoptando ampliamente debido a su menor costo y mejor escalabilidad, y la comunicación es importante cuando se trabaja con estos servicios.
Un índice vectorial especializado puede no ser capaz de contener todos los datos que tienes, lo que significa que es posible que debas almacenarlos en otro lugar. En esta configuración, tendrás que hacer 2 solicitudes de forma secuencial con 4 transmisiones de datos que ocurren en una sola consulta. Pero con una solución de base de datos integrada, solo necesitas 1 solicitud con 2 transmisiones.
Menos transmisiones significa menos latencia y la latencia afecta la experiencia del usuario. Si estás pensando seriamente en la latencia de comunicación, o si deseas realizar una consulta masiva a la base de datos, considera a MyScale como una de las opciones entre esas soluciones integradas.
# Filtra cualquier cosa sin restricciones
Las aplicaciones de LLM se ven potenciadas por herramientas. Y la base de datos vectorial es la más importante. Reducir los resultados con palabras clave suele ser una mejor opción cuando tienes un gran número de vectores para buscar, y esos vectores pueden representar artículos, páginas web o indicaciones. Así surge el concepto de búsqueda filtrada por metadatos.
La búsqueda filtrada es bastante común en las aplicaciones de LLM. Puedes usarla para eliminar algunos datos inútiles y mejorar la precisión. La mayoría de los servicios de índices vectoriales te proporcionan filtros de metadatos para implementar la eliminación de datos innecesarios. Algunas implementaciones tienen limitaciones en los datos que filtrarás, ya sea en tamaño o en las funciones de filtro en sí. Por ejemplo, la implementación de Pinecone tiene un límite de metadatos de 40 KB, lo que limita la funcionalidad de los filtros de metadatos. Esto puede ser una gran barrera si deseas hacer coincidir un patrón de expresión regular en un párrafo muy largo o filtrar algunos datos que están geográficamente alejados de la ubicación consultada.
Las soluciones de bases de datos, como MyScale, son capaces de realizar filtrado de metadatos en datos de casi cualquier tamaño y tipo. Puedes utilizar cualquier cosa como filtro de metadatos, por ejemplo, ubicaciones geográficas (como H3 y S2), coincidencia de expresiones regulares, umbral de expresiones matemáticas e incluso filtrado de metadatos con una subconsulta SQL.
Si tu indicación necesita calcular algunas distancias geográficas, aquí tienes un ejemplo de cómo puedes usarlo:
WHERE h3Distance(<data column in h3 index type>, <h3 index>) > 10
Supongamos que estás buscando en un grupo de artículos que coinciden con algunas palabras clave, puedes usar coincidencia de patrones para cadenas para limitar tu búsqueda vectorial:
WHERE column_1 LIKE '%value%'
También puedes usar expresiones regulares para reducir aún más tu búsqueda:
WHERE match(column_1, '(?i)(value\s)')
También puedes filtrar con expresiones matemáticas, por ejemplo, calcular una predicción para un aprendizaje de pocos ejemplos y usar un umbral para filtrar los resultados:
WHERE 1/(1+exp(column_1)) > 0.9
Y también puedes realizar filtrado de metadatos con una subconsulta SQL:
WHERE column_1 IN (SELECT ... FROM another_table WHERE ...)
Además, los datos en los que puedes realizar filtrado de metadatos se almacenan como columnas. No hay restricciones adicionales en sus tamaños o tipos de datos. También puedes hacer JOIN
con algunas columnas externas de otras tablas, lo que te permite diseñar tuberías de consulta complejas con un buen rendimiento.
# Múltiples índices vectoriales en una sola instancia
Algunas aplicaciones de LLM pueden tener múltiples columnas de vectores. Si tu aplicación necesita buscar en más de un vector, por ejemplo, buscar artículos antes de buscar entre párrafos o decidir las indicaciones antes de recuperar información relevante, es posible que necesites múltiples índices vectoriales para tu aplicación.
La mayoría de las bases de datos vectoriales especializadas solo admiten un índice vectorial por instancia, lo que significa que necesitas una nueva instancia para cada columna de vector que tengas. Esto puede ser problemático si tus aplicaciones tienen múltiples instancias de bases de datos vectoriales para trabajar. La inconsistencia en la latencia y la computación puede tener un impacto en el rendimiento, así como problemas de mantenimiento a largo plazo.
Sin embargo, las bases de datos vectoriales integradas, en particular MyScale, tratan los índices vectoriales como un tipo de índice de datos. Te permite crear un índice vectorial para cada tabla. Si tienes múltiples aplicaciones y todas necesitan una base de datos vectorial, puedes crear tablas e índices vectoriales para ellas y combinarlos en una sola instancia. Ahora solo necesitas una instancia en ejecución para una aplicación de LLM que utiliza múltiples índices vectoriales.
# Conclusión
A pesar de la curva de aprendizaje más pronunciada debido a las interfaces SQL, las bases de datos vectoriales integradas tienen ventajas innegables. Al ofrecer filtros de metadatos flexibles, soporte para múltiples índices y una mayor eficiencia en la comunicación, pueden llevar tus aplicaciones de LLM a nuevos niveles. En MyScale, creemos firmemente que las bases de datos vectoriales integradas son el futuro. MyScale, una solución de base de datos vectorial integrada de alto rendimiento, respaldada por un algoritmo de índice vectorial avanzado, proporciona tanto alta densidad de datos como eficiencia de costos (opens new window).