Bases de datos de vectores y índices de vectores en Python Arquitectura de aplicaciones LLM

Bases de datos y índices de vectores en Python Arquitectura de aplicaciones LLM

 

Debido a las aplicaciones de IA generativa creadas utilizando su hardware, Nvidia ha experimentado un crecimiento significativo. Otra innovación de software, la base de datos vectorial, también está aprovechando la ola de IA generativa.

Los desarrolladores están construyendo aplicaciones impulsadas por IA en Python en bases de datos vectoriales. Al codificar los datos como vectores, pueden aprovechar las propiedades matemáticas de los espacios vectoriales para lograr una búsqueda de similitud rápida en conjuntos de datos muy grandes.

¡Comencemos con lo básico!

 

Conceptos básicos de las bases de datos vectoriales

 

Una base de datos vectorial almacena datos como vectores numéricos en un espacio de coordenadas. Esto permite calcular similitudes entre vectores mediante operaciones como la similitud del coseno.

Los vectores más cercanos representan los puntos de datos más similares. A diferencia de las bases de datos escalares, las bases de datos vectoriales están optimizadas para búsquedas de similitud en lugar de consultas o transacciones complejas.

Recuperar vectores similares lleva milisegundos en lugar de minutos, incluso en miles de millones de puntos de datos.

Las bases de datos vectoriales construyen índices para consultar eficientemente vectores por proximidad. Esto es algo análogo a cómo los motores de búsqueda de texto indexan documentos para una búsqueda de texto completo rápida.

 

Beneficios de la búsqueda vectorial sobre las bases de datos tradicionales para los desarrolladores

 

Para los desarrolladores, las bases de datos vectoriales ofrecen:

  • Búsqueda de similitud rápida: encontrar vectores similares en milisegundos
  • Soporte para datos dinámicos: actualizar continuamente los vectores con nuevos datos
  • Escalabilidad: escalar la búsqueda vectorial en varias máquinas
  • Arquitecturas flexibles: los vectores se pueden almacenar localmente, en almacenes de objetos en la nube o en bases de datos administradas
  • Alta dimensionalidad: indexar miles de dimensiones por vector
  • APIs: si optas por una base de datos vectorial administrada, generalmente viene con APIs de consulta y integraciones con herramientas o plataformas existentes de ciencia de datos.

Los ejemplos de casos de uso populares admitidos por las búsquedas vectoriales (la característica clave que ofrece una base de datos vectorial) son:

  • Búsqueda visual: encontrar imágenes de productos similares
  • Recomendaciones: sugerir contenido
  • Chatbots: relacionar consultas con intenciones
  • Búsqueda: mostrar documentos relevantes a partir de vectores de texto

Los casos de uso donde las búsquedas vectoriales están empezando a ganar impulso son:

  • Detección de anomalías: identificar vectores atípicos
  • Descubrimiento de fármacos: relacionar moléculas mediante vectores de propiedades

 

¿Qué es una base de datos vectorial en Python?

 

Una base de datos vectorial que incluye bibliotecas de Python que admiten todo el ciclo de vida de una base de datos vectorial es una base de datos vectorial en Python. La base de datos en sí no necesita estar construida en Python.

 

¿Qué funciones deben ser compatibles con estas bibliotecas de bases de datos vectoriales en Python?

 

Las llamadas a una base de datos vectorial se pueden separar en dos categorías: relacionadas con los datos y relacionadas con la gestión. La buena noticia aquí es que siguen patrones similares a los de una base de datos tradicional.

Funciones relacionadas con los datos que las bibliotecas deben admitir

   

Funciones estándar relacionadas con la gestión que las bibliotecas deben admitir

   

Ahora pasemos a un concepto un poco más avanzado, donde hablaremos sobre la construcción de aplicaciones LLM sobre estas bases de datos

 

Arquitectura de aplicaciones LLM

 

Antes de adentrarnos en la arquitectura de aplicaciones LLM impulsadas por la búsqueda vectorial, entendamos qué implica desde una perspectiva de flujo de trabajo.

Un flujo de trabajo típico implica:

  1. Enriquecer o limpiar los datos. Este es un paso ligero de transformación de datos para mejorar la calidad de los datos y el formato del contenido consistente. También es donde puede ser necesario enriquecer los datos.
  2. Codificar los datos como vectores mediante modelos. Los modelos incluyen algunos transformadores (por ejemplo, transformadores de oraciones)
  3. Insertar vectores en una base de datos vectorial o un índice vectorial (algo que explicaremos en breve)
  4. Exponer la búsqueda a través de una API de Python
  5. Orquestar el flujo de trabajo del documento
  6. Probar y visualizar resultados en aplicaciones e interfaces de usuario (por ejemplo, interfaz de chat)

Ahora veamos cómo habilitamos diferentes partes de este flujo de trabajo utilizando diferentes componentes de arquitectura.

Para 1), es posible que necesite comenzar a obtener metadatos de otros sistemas fuente (incluidas bases de datos relacionales o sistemas de gestión de contenido).

Los modelos preentrenados casi siempre se prefieren para el paso 2) anterior. Los modelos de OpenAI son los modelos más populares ofrecidos a través de servicios hospedados. Es posible que aloje modelos locales por motivos de privacidad y seguridad.

Para 3), necesita una base de datos de vectores o un índice de vectores si necesita realizar búsquedas de similitud grandes, como en conjuntos de datos con más de mil millones de registros. Desde el punto de vista empresarial, generalmente tiene un poco más de contexto antes de realizar la “búsqueda”.

Para 4) anteriormente, la buena noticia es que la búsqueda expuesta sigue típicamente un patrón similar. Algo así como el siguiente código:

Desde Pinecone

índice = pinecone.Index("ejemplo-índice")

índice.actualizar([
    ("A", [0.1, 0.1, 0.1, 0.1], {"género": "comedia", "año": 2020}),
)


índice.consulta( 
vector=[0.1, 0.1, 0.1, 0.1], 
filtro={ 
"género": {"$eq": "documental"}, 
"año": 2019 
}, 
top_k=1,
)

 

Una línea interesante aquí es esta:

filtro={ 
"género": {"$eq": "documental"}, 
"año": 2019 
},

 

Realmente filtra los resultados a los vectores cercanos al ‘género’ y ‘año’. También puede filtrar vectores por conceptos o temas.

El desafío ahora, en un entorno empresarial, es que incluye otros filtros comerciales. Es importante abordar la falta de modelado para los datos que provienen de fuentes de datos (piense en la estructura de tablas y los metadatos). Sería importante mejorar la fidelidad del texto con menos expresiones incorrectas que contradigan los datos estructurados. Se requiere una estrategia de “canalización de datos” en esta situación, y comienza a importar la “coincidencia de contenido” empresarial.

Para 5) Además de los desafíos habituales de escalar la ingestión, un corpus cambiante tiene sus propios desafíos. Los nuevos documentos pueden requerir la re-codificación y re-indexación de todo el corpus para mantener los vectores relevantes.

Para 6) Esta es un área completamente nueva y se requiere un enfoque humano en el bucle además de probar los niveles de similitud para asegurar que haya calidad en todo el espectro de búsqueda.

La puntuación de búsqueda automatizada junto con diferentes tipos de puntuación de contexto no es una tarea fácil de lograr.

 

Python Vector Index: una alternativa de búsqueda de vectores más simple para su base de datos existente.

 

Una base de datos de vectores es un sistema complejo que permite la búsqueda contextual como en los ejemplos anteriores, además de todas las funcionalidades adicionales de la base de datos (crear, insertar, actualizar, eliminar, administrar, …).

Ejemplos de bases de datos de vectores incluyen Weaviate y Pinecone. Ambos exponen API de Python.

A veces, una configuración más simple es suficiente. Como alternativa más ligera, puede utilizar el almacenamiento que ya estaba utilizando y agregar un índice de vectores basado en él. Este índice de vectores se utiliza para recuperar solo sus consultas de búsqueda con contexto, por ejemplo, para su uso de IA generativa.

En una configuración de índice de vectores, tiene:

  • Su almacenamiento de datos habitual (por ejemplo, PostgreSQL o directorio de disco con archivos) proporciona las operaciones básicas que necesita: crear, insertar, actualizar, eliminar.
  • Su índice de vectores que permite una búsqueda rápida basada en el contexto en sus datos.

Las bibliotecas independientes de Python que implementan índices de vectores para usted incluyen FAISS, Pathway LLM, Annoy.

La buena noticia es que el flujo de trabajo de la aplicación LLM para bases de datos de vectores e índices de vectores es el mismo. La principal diferencia es que, además de la biblioteca de índice de vectores de Python, continúa utilizando su biblioteca de datos existente para operaciones de datos “normales” y para la gestión de datos. Por ejemplo, esto podría ser Psycopg si está utilizando PostgreSQL, o el módulo “fs” estándar de Python si está almacenando datos en archivos.

Los defensores de los índices de vectores se centran en las siguientes ventajas:

  • Privacidad de los datos: mantiene los datos originales seguros e intactos, minimizando el riesgo de exposición de datos.
  • Eficiencia de costos: reduce los costos asociados con almacenamiento adicional, potencia informática y licencias.
  • Escalabilidad: simplifica la escalabilidad al disminuir el número de componentes a gestionar.

 

¿Cuándo usar bases de datos de vectores en lugar de índices de vectores?

 

Las bases de datos de vectores son útiles cuando se cumple una o más de las siguientes condiciones:

  • Tienes una necesidad especializada para trabajar con datos vectoriales a gran escala 
  • Estás creando una aplicación de propósito específico independiente para vectores
  • No esperas otros tipos de uso para tus datos almacenados en otros tipos de aplicaciones.

Los índices de vectores son útiles cuando se cumple una o más de las siguientes condiciones:

  • No quieres confiar en una nueva tecnología para el almacenamiento de tus datos
  • Tu almacenamiento existente es fácilmente accesible desde Python.
  • Tu búsqueda de similitud es solo una capacidad entre otras necesidades más grandes de inteligencia empresarial y bases de datos 
  • Necesitas la capacidad de adjuntar vectores a registros escalares existentes
  • Necesitas una forma unificada de manejar tuberías para tu equipo de ingeniería de datos
  • Necesitas estructuras de índice y gráfico en los datos para ayudar con tus aplicaciones o tareas de LLM
  • Necesitas una salida o contexto aumentado proveniente de otras fuentes
  • Quieres crear reglas a partir de tu corpus que se puedan aplicar a tus datos transaccionales

 

El futuro de la búsqueda de vectores empresariales

 

La búsqueda de vectores desbloquea capacidades revolucionarias para los desarrolladores. A medida que los modelos y técnicas mejoren, es de esperar que las bases de datos de vectores o los índices de vectores se conviertan en una parte integral de la pila de aplicaciones.

Espero que esta descripción general proporcione un punto de partida sólido para explorar las bases de datos de vectores y los índices de vectores en Python. Si estás interesado en un índice de vector recientemente desarrollado, por favor revisa este proyecto de código abierto.     Anup Surendran es un Vicepresidente de Producto y Marketing de Producto especializado en llevar productos de IA al mercado. Ha trabajado con startups que han tenido dos salidas exitosas (a SAP y Kroll) y disfruta enseñando a otros cómo los productos de IA pueden mejorar la productividad dentro de una organización.  

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

La GPU NVIDIA H100 Tensor Core utilizada en la nueva serie de máquinas virtuales de Microsoft Azure ya está disponible de forma general

Los usuarios de Microsoft Azure ahora pueden recurrir a la última tecnología de computación acelerada de NVIDIA para ...

Ciencia de Datos

12 Modelos Mentales para la Ciencia de Datos

En el campo en constante evolución de la ciencia de datos, las habilidades técnicas para manejar y analizar datos son...

Noticias de Inteligencia Artificial

Los coches de Mercedes-Benz se vuelven aún más inteligentes con ChatGPT.

Mercedes-Benz, el renombrado fabricante de automóviles de lujo, está llevando los límites de la integración de inteli...

Inteligencia Artificial

Los emojis son cada vez más legalmente vinculantes. Pero todavía están abiertos a una amplia interpretación

Cada año, más casos en los tribunales de Estados Unidos consideran los emojis como legalmente vinculantes. Sin embarg...

Inteligencia Artificial

Este documento de IA evalúa la capacidad de los LLM para adaptarse a nuevas variantes de tareas existentes

El rendimiento notable de los modelos de lenguaje (ML) sugiere que la predicción de la siguiente palabra a gran escal...