Prepárate para GPT-4 con GPTCache y Milvus, ahorra mucho en IA multimodal
Introducción
A medida que el mundo se vuelve cada vez más digital, aumenta la demanda de soluciones de inteligencia artificial (IA) que puedan comprender y analizar enormes cantidades de datos. ChatGPT de OpenAI, impulsado por GPT-3.5, ya ha revolucionado el campo del procesamiento del lenguaje natural (NLP) y ha suscitado un interés significativo en los grandes modelos de lenguaje (LLMs). A medida que la adopción de los LLMs continúa atrayendo atención y creciendo en diversas industrias, también lo hace la necesidad de modelos de IA grandes más avanzados que puedan procesar datos multimodales. El mundo tecnológico ya está expectante ante GPT-4, que promete ser aún más potente y versátil al permitir entradas visuales. La colaboración de GPT-4 con modelos de generación de imágenes también tiene un inmenso potencial. Para prepararse para esta próxima revolución, Zilliz ha presentado GPTCache integrado con Milvus, una solución revolucionaria que puede ayudar a las empresas a ahorrar una fortuna en IA multimodal.
La IA multimodal se refiere a la integración de múltiples modos de percepción y comunicación, como el habla, la visión, el lenguaje y los gestos, para crear sistemas de IA más inteligentes y eficaces. Este enfoque permite que los modelos de IA comprendan e interpreten mejor las interacciones y los entornos humanos, y generen respuestas más precisas y matizadas. La IA multimodal tiene aplicaciones en diversos campos, como la atención sanitaria, la educación, el entretenimiento y el transporte. Algunos ejemplos de sistemas de IA multimodal incluyen asistentes virtuales como Siri y Alexa, vehículos autónomos y herramientas de diagnóstico médico que analizan imágenes y datos de pacientes de forma conjunta.
En este artículo, profundizaremos en los detalles de GPTCache y exploraremos cómo funciona junto con Milvus para ofrecer una experiencia de usuario más fluida y potente en escenarios multimodales.
Caché semántica para IA multimodal
En la mayoría de los casos, lograr los resultados deseados en aplicaciones de IA multimodal requiere utilizar modelos grandes. Sin embargo, procesar dichos modelos o llamadas puede llevar mucho tiempo y resultar costoso. Aquí es donde GPTCache resulta útil: permite que el sistema busque primero posibles respuestas en la caché antes de enviar una solicitud a un modelo grande. GPTCache acelera todo el proceso y ayuda a reducir los costos de ejecutar modelos grandes.
Explorando la caché semántica con GPTCache
La caché semántica almacena y recupera representaciones de conocimiento de conceptos. Está diseñada para almacenar y recuperar información o conocimiento semántico de una manera estructurada. Así, un sistema de IA puede comprender y responder mejor a consultas o solicitudes. La idea detrás de una caché semántica es proporcionar un acceso más rápido a información relevante ofreciendo respuestas precalculadas a preguntas o consultas frecuentes, lo que puede ayudar a mejorar el rendimiento y la eficiencia de las aplicaciones de IA.
GPTCache es un proyecto desarrollado para optimizar el tiempo de respuesta y reducir los gastos de las llamadas a API asociadas con modelos grandes. Diseñamos GPTcache para crear una caché semántica, que almacena respuestas del modelo y aprovecha el poder de Milvus. La tecnología está construida sobre Milvus e incorpora varios componentes vitales, como el adaptador de modelo grande, el gestor de contexto, el generador de embeddings, el gestor de caché, el evaluador de similitud y los pre/postprocesadores.
Arquitectura de GPTCache
El adaptador garantiza que GPTCache funcione sin problemas con cualquier modelo grande. El administrador de contexto permite una mayor flexibilidad, lo que permite al sistema manejar diversos datos en diferentes etapas. El generador de embeddings convierte los datos en embeddings para el almacenamiento vectorial y la búsqueda semántica. Todos los vectores y otros datos valiosos se almacenan en la caché. Milvus no solo admite el almacenamiento de datos a gran escala, sino que también ayuda a acelerar y mejorar el rendimiento de la búsqueda por similitud. Finalmente, el evaluador es responsable de evaluar si las respuestas potenciales recuperadas de la caché son lo suficientemente buenas para las necesidades del usuario. El siguiente fragmento de código muestra cómo inicializar una caché con diferentes módulos en GPTCache.
from gptcache import cache
from gptcache.manager import get_data_manager, CacheBase, VectorBase, ObjectBase
from gptcache.processor.pre import get_prompt
from gptcache.processor.post import temperature_softmax
from gptcache.embedding import Onnx
from gptcache.similarity_evaluation.distance import SearchDistanceEvaluation
onnx = Onnx()
cache_base = CacheBase('sqlite')
vector_base = VectorBase(
'milvus',
host='localhost',
port='19530',
dimension=onnx.dimension
)
object_base = ObjectBase('local', path='./objects')
data_manager = get_data_manager(cache_base, vector_base, object_base)
cache.init(
pre_embedding_func=get_prompt, # Pre-process
embedding_func=onnx.to_embeddings, # Embedding generator
data_manager=data_manager, # Cache manager
similarity_evaluation=SearchDistanceEvaluation() # Evaluator
post_process_messages_func=temperature_softmax # Post-process
)
Almacenamiento en caché de datos semánticos en una base de datos vectorial
Una de las piedras angulares de una caché semántica como GPTCache es la base de datos vectorial. Específicamente, el generador de embeddings de GPTCache convierte los datos en embeddings para el almacenamiento vectorial y la búsqueda semántica. Almacenar vectores en una base de datos vectorial, como Milvus, no solo admite el almacenamiento de datos a gran escala, sino que también ayuda a acelerar y mejorar el rendimiento de la búsqueda por similitud. Esto permite una recuperación más eficiente de respuestas potenciales desde la caché.
Un modelo multimodal preentrenado aprende un espacio vectorial para representar diferentes tipos de entradas. Como resultado, puede capturar información complementaria proporcionada por otras modalidades. Este paradigma permite al sistema interpretar datos con modalidades variables de manera unificada, lo que posibilita un procesamiento más preciso y eficiente mediante la búsqueda semántica. Las bases de datos vectoriales permiten la búsqueda semántica de entradas multimodales mediante algoritmos de similitud vectorial. A diferencia de las bases de datos tradicionales que almacenan datos en filas y columnas, las bases de datos vectoriales almacenan y recuperan datos no estructurados como vectores. Las bases de datos vectoriales gestionan datos de alta dimensión, predominantes en aplicaciones de IA multimodal que procesan diferentes tipos de datos como vectores.
Beneficios de usar Milvus
El ecosistema de Milvus proporciona herramientas útiles para la supervisión de bases de datos, la migración de datos y la estimación del tamaño de los datos. Para una implementación y mantenimiento más sencillos de Milvus, existe un servicio nativo en la nube Zilliz Cloud. La combinación de Milvus con GPTCache ofrece una solución potente para mejorar la funcionalidad y el rendimiento de las aplicaciones de IA multimodal. Ya sea que estés trabajando con grandes cantidades de datos, modelos complejos o diversos tipos de datos, este enfoque puede ayudar a agilizar el procesamiento de datos y mejorar la precisión y la velocidad de los resultados. Integrar Milvus con GPTCache en la IA multimodal puede producir varios beneficios potentes. Estos son algunos de los más destacados:
- Almacenamiento y recuperación eficientes de datos
Milvus está diseñado específicamente para almacenar y recuperar datos vectoriales a gran escala. Además, un vector es el "lenguaje general" que hablan los modelos de aprendizaje profundo. Milvus puede manejar vectores fácilmente, proporcionando un acceso rápido y eficiente a datos multimodales. Usar Milvus puede generar tiempos de respuesta más rápidos y una mejor experiencia de usuario.
- Mayor flexibilidad y escalabilidad
A medida que crece la cantidad de datos procesados por las aplicaciones de IA, también aumenta la necesidad de una solución escalable. Al incorporar Milvus, el sistema puede escalar sin problemas para satisfacer las crecientes demandas. Además, Milvus proporciona una amplia gama de funciones que pueden mejorar la flexibilidad y funcionalidad generales de la IA multimodal.
- Mayor precisión y rendimiento
Gracias al almacenamiento y recuperación unificados de datos proporcionados por Milvus, las aplicaciones de IA multimodal pueden procesar con mayor rapidez y precisión entradas de varios tipos de datos. Esto puede generar resultados más precisos y mejorar el rendimiento general del sistema.
- Facilidad de uso
Milvus ofrece diferentes opciones para la implementación local, incluido un inicio rápido con pip. También proporciona servicio en la nube a través de Zilliz Cloud, que permite a los usuarios iniciar y escalar sus instancias de Milvus rápidamente. Milvus también admite múltiples SDKs de lenguaje, incluidos Python, Java y Go (más en desarrollo), lo que facilita su integración en aplicaciones existentes. Además, Milvus proporciona una API Restful para interactuar fácilmente con el servidor.
- Popularidad y fiabilidad
Milvus ha ganado una inmensa popularidad debido a su alta escalabilidad y rendimiento. Con más de 1.000 usuarios empresariales y una comunidad de código abierto activa, Milvus se ha posicionado como una solución fiable para gestionar cantidades masivas de datos estructurados y no estructurados. Como proyecto graduado de LF AI & Data Foundation, Milvus también se beneficia del apoyo institucional, lo que consolida aún más su posición como una base de datos de referencia para organizaciones que buscan soluciones de gestión de datos eficientes y fiables.
Superar las limitaciones de la caché para aumentar la diversidad de resultados
Una IA multimodal que pueda producir resultados diversos es esencial para proporcionar una solución integral y eficaz que pueda satisfacer las necesidades de una amplia gama de usuarios. La diversidad de los resultados ayuda a mejorar la experiencia del usuario y mejora la funcionalidad general del sistema de IA. Además, la diversidad de resultados es crucial para aplicaciones que requieren una amplia gama de tipos de salida, como asistentes virtuales, chatbots y sistemas de reconocimiento de voz.
Aunque la caché semántica es una forma eficiente de recuperar datos, puede limitar la diversidad de las respuestas de los usuarios. Prioriza las respuestas almacenadas en caché frente a la generación de nuevas respuestas a partir de un modelo grande. Esto significa que el sistema puede seguir produciendo resultados iguales o similares, dependiendo en gran medida de la información previamente almacenada en caché. Como resultado, la salida puede volverse repetitiva y carecer de novedad, lo que puede ser problemático en contextos donde se necesitan respuestas diversas y creativas.
Para abordar este problema, la temperatura en el aprendizaje automático se ha convertido en una herramienta valiosa. La temperatura determina la aleatoriedad o diversidad del contenido de la respuesta, y un valor de temperatura más alto permite una mayor exploración de posibilidades más allá de la salida más probable. Esto puede generar resultados creativos e inesperados, adaptándose a una gama más amplia de preferencias y estilos. Por otro lado, un valor de temperatura más bajo genera respuestas más centradas y deterministas, produciendo resultados precisos y coherentes. Al superar las limitaciones de la caché mediante el ajuste de la temperatura, las aplicaciones de IA multimodal pueden producir soluciones más completas y eficaces que satisfagan las necesidades de una gama más amplia de usuarios.
Temperatura en GPTCache
Elegir un valor de temperatura adecuado es esencial en la IA multimodal para equilibrar la aleatoriedad y la coherencia, y alinearse con las necesidades y preferencias específicas del usuario o de la aplicación. La temperatura en GPTCache conserva principalmente el concepto general de temperatura en el aprendizaje automático. Se logra mediante 3 opciones en el flujo de trabajo:
- Seleccionar después de la evaluación
La activación Softmax en los logits del modelo es una técnica común que implica temperatura en el aprendizaje profundo. GPTCache utiliza de manera similar una función softmax para convertir las puntuaciones de similitud de las respuestas candidatas en una lista de probabilidades. Cuanto mayor sea la puntuación, más probable es que se seleccione como respuesta final. La temperatura controla la nitidez de la distribución de posibilidades. Esto significa que una respuesta con una puntuación más alta tiene más probabilidades de ser seleccionada. El posprocesador temperature_softmax en GPTCache sigue este algoritmo para seleccionar un elemento de una lista de candidatos dadas sus puntuaciones o niveles de confianza.
from gptcache.processor.post import temperature_softmax
messages = ["message 1", "message 2", "message 3"]
scores = [0.9, 0.5, 0.1]
answer = temperature_softmax(messages, scores, temperature=0.5)
- Llamar al modelo sin caché
Aplicamos la posibilidad de llamar directamente a modelos grandes sin buscar en la caché. Esta posibilidad se ve afectada por la temperatura. Una temperatura más alta significa que es más probable omitir la búsqueda en la caché, mientras que una temperatura más baja disminuye la posibilidad de omitir la búsqueda en la caché. Aquí hay un ejemplo, usando temperatuer_softmax para controlar la decisión de omitir o comprobar la caché mediante la temperatura.
from gptcache.processor.post import temperature_softmax
def skip_cache(temperature):
if 0 < temperature < 2:
cache_skip_options = [True, False]
prob_cache_skip = [0, 1]
cache_skip = temperature_softmax(
messages=cache_skip_options,
scores=prob_cache_skip,
temperature=temperature)
)
elif temperature >= 2:
cache_skip = True
else: # temperature <= 0
cache_skip = False
return cache_skip
- Editar el resultado de la caché
Al usar un modelo pequeño o algunas herramientas para editar la respuesta, esta opción requiere un editor con la capacidad de convertir el tipo de datos de salida.
Aplicaciones multimodales
Más personas buscan asistencia de GPT-4 en lugar de conformarse con ChatGPT y depender únicamente de GPT-3.5. Además, la tendencia actual está cambiando de LLM puro a aplicaciones multimodales. La IA multimodal interactúa principalmente con múltiples modalidades de datos, que abarcan texto, elementos visuales y audio. A medida que evolucionan las tecnologías de IA, GPTCache y Milvus representan un enfoque emocionante e innovador para construir sistemas multimodales inteligentes. Los siguientes ejemplos muestran cómo GPTCache y Milvus se han implementado en situaciones multimodales.
1. Texto a imagen: Generación de imágenes
La generación de imágenes mediante IA ha sido un tema candente en los últimos años. Se refiere a generar imágenes basadas en descripciones textuales o instrucciones utilizando un modelo multimodal texto-imagen preentrenado. Esta tecnología ha avanzado mucho en los últimos años. Hemos visto avances increíbles en modelos y aplicaciones de generación de imágenes que pueden producir imágenes convincentes que a menudo son difíciles de distinguir de fotografías tomadas por humanos.
Prompt | a white siamese cat
El proceso de generación de imágenes implica usar indicaciones textuales como entrada. Con GPTCache, la generación de imágenes se facilita gracias a su función de búsqueda semántica para indicaciones. El sistema utiliza Milvus para comparar embeddings de texto y detectar indicaciones similares almacenadas en la caché. Luego recupera las imágenes correspondientes de la caché. Si la caché no tiene resultados satisfactorios, GPTCache llamará al modelo de generación de imágenes. Las salidas de imagen y texto del modelo son guardadas por GPTCache, lo que enriquece su base de datos. El generador de embeddings convierte cada indicación de texto en un vector y luego lo almacena en Milvus para facilitar el almacenamiento y la recuperación.
El código de ejemplo a continuación llama al servicio de OpenAI adaptado con GPTCache para generar una imagen dado el texto "un gato siamés blanco." La solicitud regula la diversidad de las imágenes generadas en cada ocasión mediante el valor temperature y top_k. Al cambiar la temperatura de su valor predeterminado de 0.0 a un valor más alto de 0.8, es más probable que la solicitud obtenga una imagen diferente cada vez dado el mismo texto.
from gptcache.adapter import openai
cache.set_openai_key()
response = openai.Image.create(
prompt="a white siamese cat",
temperature=0.8, # optional, defaults to 0.0.
top_k=10 # optional, defaults to 5 if temperature>0.0 else 1.
)
GPTCache actualmente tiene adaptadores integrados para la mayoría de los modelos o servicios populares de generación de imágenes, que incluyen OpenAI Image Creation, Stability.AI API, Stable Diffusions at HuggingFace. El bootcamp proporciona un tutorial de Generación de imágenes usando OpenAI.
2. Imagen a texto: subtitulado de imágenes
El subtitulado de imágenes genera una descripción textual para una imagen, normalmente usando un modelo multimodal de imagen-texto preentrenado. Esta tecnología permite a las computadoras comprender el contenido de las imágenes y describirlo en lenguaje natural para que los humanos lo interpreten. El subtitulado de imágenes también puede proporcionar una solución mucho más robusta al incorporarlo en un chatbot. Permite una transición fluida entre los aspectos visuales y conversacionales de un producto, mejorando la experiencia general del usuario.
Un perro marrón grande acostado encima de una cama
En cuanto al subtitulado de imágenes, GPTCache comienza escaneando su caché en busca de imágenes que se parezcan a la imagen de entrada, según lo medido por los embeddings de imagen. Luego, para garantizar la calidad de los subtítulos devueltos, un evaluador realiza una evaluación adicional de la relevancia o similitud entre la imagen de entrada y las imágenes o subtítulos recuperados de la caché. Por ejemplo, modelos visuales preentrenados como ResNets o ViTs pueden evaluar la similitud de imágenes. Además, se puede aplicar un modelo texto-imagen como CLIP para medir la similitud entre imagen y texto. Si no hay coincidencia en la caché, el sistema utiliza un modelo multimodal para generar subtítulos para la imagen dada. Posteriormente, GPTCache almacena tanto la imagen como sus subtítulos correspondientes, con imágenes y subtítulos guardados como vectores en Milvus.
GPTCache ya ha adaptado servicios populares de subtitulado de imágenes como Replicate BLIP y miniGPT-4. Planea admitir más servicios de imagen a texto y modelos multimodales alojados localmente.
3. Audio a texto: transcripción de voz
Audio a texto, también conocido como transcripción de voz, convierte contenido de audio, como conversaciones grabadas, reuniones o conferencias, en texto escrito. Esta tecnología permite que las personas que pueden tener dificultades para oír o que prefieren leer en lugar de escuchar el contenido accedan a la información y la comprendan con mayor facilidad. Además de pasar transcripciones a un chatbot como ChatGPT, los usuarios pueden utilizar las transcripciones para explorar más.
Archivo de audio | One bourbon, one scotch, one bill
Un archivo de audio suele servir como entrada inicial para la transcripción de voz. Al habilitar GPTCache, el primer paso consiste en crear una incrustación de audio para cada entrada. Luego, el sistema utiliza Milvus para la búsqueda por similitud, recuperando posibles transcripciones de la caché. Finalmente, se llama a un modelo o servicio de Reconocimiento Automático de Voz (ASR) cuando no se encuentran respuestas correspondientes después de la evaluación. Todos los pares de audio y transcripciones generados por el modelo ASR se almacenan en la caché. Usar Milvus para almacenar datos de audio como vectores garantiza que sea posible emparejar audio similar desde la caché. También permite la escalabilidad a medida que aumenta la cantidad de datos de audio.
GPTCache y Milvus reducen significativamente la necesidad de múltiples llamadas ASR, mejorando la velocidad y la eficiencia. El bootcamp de GPTCache de Voz a texto proporciona un tutorial de ejemplo para habilitar GPTCache y aplicar Milvus para las Transcripciones de OpenAI.
Conclusión
El uso de modelos de IA multimodal está ganando popularidad, lo que permite un análisis y una comprensión más completos de datos complejos. Con su compatibilidad con datos no estructurados, Milvus es una solución ideal para crear y escalar aplicaciones multimodales. Además, añadir más funciones en GPTCache, como la gestión de sesiones, la conciencia del contexto y el soporte de servidor, mejora aún más las capacidades de la IA multimodal. Con estos avances, los modelos de IA multimodal tienen más usos y escenarios potenciales. Mantente atento al Bootcamp de GPTCache para obtener más información sobre aplicaciones de IA multimodal.
Sigue leyendo

We spent 8 years making vector databases faster. Then we stopped.
Rarely queried embeddings still need to stay searchable. See how Vector Lakebase enables on-demand vector search without always-on compute costs.

Introducing Zilliz MCP Server: Natural Language Access to Your Vector Database
Developers can easily manage and query vector databases with natural language via Zilliz MCP Server in AI-native environments.

Vector Databases vs. Object-Relational Databases
Use a vector database for AI-powered similarity search; use an object-relational database for complex data modeling with both relational integrity and object-oriented features.



