Prepare-se para o GPT-4 com GPTCache & Milvus, economize muito em IA multimodal
Introdução
À medida que o mundo se torna cada vez mais digital, cresce a demanda por soluções de inteligência artificial (IA) capazes de compreender e analisar grandes volumes de dados. O ChatGPT da OpenAI, impulsionado pelo GPT-3.5, já revolucionou o campo do processamento de linguagem natural (PLN) e despertou um interesse significativo em grandes modelos de linguagem (LLMs). À medida que a adoção de LLMs continua a atrair atenção e crescer em vários setores, também aumenta a necessidade de modelos grandes de IA mais avançados, capazes de processar dados multimodais. O mundo da tecnologia já está cheio de expectativa pelo GPT-4, que promete ser ainda mais poderoso e versátil ao permitir entradas visuais. A colaboração do GPT-4 com modelos de geração de imagens também tem um imenso potencial. Para se preparar para essa revolução iminente, a Zilliz apresentou o GPTCache integrado ao Milvus — uma solução revolucionária que pode ajudar as empresas a economizar uma fortuna em IA multimodal.
IA multimodal refere-se à integração de múltiplos modos de percepção e comunicação, como fala, visão, linguagem e gesto, para criar sistemas de IA mais inteligentes e eficazes. Essa abordagem permite que os modelos de IA compreendam e interpretem melhor as interações e os ambientes humanos, além de gerar respostas mais precisas e diferenciadas. A IA multimodal tem aplicações em vários campos, incluindo saúde, educação, entretenimento e transporte. Alguns exemplos de sistemas de IA multimodal incluem assistentes virtuais como Siri e Alexa, veículos autônomos e ferramentas de diagnóstico médico que analisam imagens e dados de pacientes em conjunto.
Neste artigo, vamos nos aprofundar nos detalhes do GPTCache e explorar como ele funciona em conjunto com o Milvus para proporcionar uma experiência de usuário mais fluida e poderosa em cenários multimodais.
Cache Semântico para IA Multimodal
Na maioria dos casos, alcançar os resultados desejados em aplicações de IA multimodal exige o uso de modelos grandes. No entanto, processar esses modelos ou chamadas pode ser demorado e caro. É aqui que o GPTCache se torna útil — ele permite que o sistema procure primeiro por possíveis respostas no cache antes de enviar uma solicitação a um modelo grande. O GPTCache acelera todo o processo e ajuda a reduzir os custos de execução de modelos grandes.
Explorando o Cache Semântico com o GPTCache
O cache semântico armazena e recupera representações de conhecimento de conceitos. Ele é projetado para armazenar e recuperar informações ou conhecimento semântico de forma estruturada. Assim, um sistema de IA pode compreender e responder melhor a consultas ou solicitações. A ideia por trás de um cache semântico é fornecer acesso mais rápido a informações relevantes, oferecendo respostas pré-computadas para perguntas ou consultas frequentes, o que pode ajudar a melhorar o desempenho e a eficiência das aplicações de IA.
O GPTCache é um projeto desenvolvido para otimizar o tempo de resposta e reduzir despesas com chamadas de API associadas a modelos grandes. Projetamos o GPTcache para criar um cache semântico, que armazena respostas de modelos e aproveita o poder do Milvus. A tecnologia é construída sobre o Milvus, incorporando vários componentes vitais, como o adaptador de modelo grande, o gerenciador de contexto, o gerador de embeddings, o gerenciador de cache, o avaliador de similaridade e os pré/pós-processadores.
Arquitetura do GPTCache
O adaptador garante que o GPTCache funcione perfeitamente com qualquer modelo grande. O gerenciador de contexto oferece mais flexibilidade, permitindo que o sistema lide com vários dados em diferentes estágios. O gerador de embeddings converte dados em embeddings para armazenamento vetorial e busca semântica. Todos os vetores e outros dados valiosos são armazenados no cache. O Milvus não apenas oferece suporte ao armazenamento de uma grande escala de dados, como também ajuda a acelerar e melhorar o desempenho da busca por similaridade. Por fim, o avaliador é responsável por avaliar se as possíveis respostas recuperadas do cache são boas o suficiente para as necessidades do usuário. O trecho de código a seguir mostra como inicializar um cache com diferentes módulos no 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
)
Armazenamento em cache de dados semânticos em um banco de dados vetorial
Um dos pilares de um cache semântico como o GPTCache é o banco de dados vetorial. Especificamente, o gerador de embeddings do GPTCache converte dados em embeddings para armazenamento vetorial e busca semântica. Armazenar vetores em um banco de dados vetorial, como o Milvus, não apenas oferece suporte ao armazenamento para uma grande escala de dados, como também ajuda a acelerar e melhorar o desempenho da busca por similaridade. Isso permite a recuperação mais eficiente de possíveis respostas do cache.
Um modelo multimodal pré-treinado aprende um espaço vetorial para representar diferentes tipos de entradas. Como resultado, ele pode capturar informações complementares fornecidas por outras modalidades. Esse paradigma permite que o sistema interprete dados com modalidades variadas de maneira unificada, possibilitando um processamento mais preciso e eficiente por meio da busca semântica. Bancos de dados vetoriais permitem a busca semântica para entradas multimodais por meio de algoritmos de similaridade vetorial. Ao contrário dos bancos de dados tradicionais, que armazenam dados em linhas e colunas, os bancos de dados vetoriais armazenam e recuperam dados não estruturados como vetores. Bancos de dados vetoriais gerenciam dados de alta dimensionalidade, comuns em aplicações de IA multimodal que processam diferentes tipos de dados como vetores.
Benefícios de usar o Milvus
O ecossistema Milvus fornece ferramentas úteis para monitoramento de banco de dados, migração de dados e estimativa do tamanho dos dados. Para uma implementação e manutenção mais simples do Milvus, há um serviço nativo de nuvem Zilliz Cloud. A combinação do Milvus com o GPTCache oferece uma solução poderosa para aprimorar a funcionalidade e o desempenho de aplicações de IA multimodal. Esteja você trabalhando com grandes quantidades de dados, modelos complexos ou diversos tipos de dados, essa abordagem pode ajudar a otimizar o processamento de dados e melhorar a precisão e a velocidade dos resultados. Integrar o Milvus ao GPTCache em IA multimodal pode gerar vários benefícios poderosos. Aqui estão alguns dos mais notáveis:
- Armazenamento e recuperação eficientes de dados
Milvus foi desenvolvido especificamente para armazenar e recuperar dados vetoriais em larga escala. Além disso, um vetor é a "linguagem geral" falada por modelos de deep learning. Milvus consegue lidar facilmente com vetores, fornecendo acesso rápido e eficiente a dados multimodais. Usar Milvus pode resultar em tempos de resposta mais rápidos e uma melhor experiência do usuário.
- Flexibilidade e escalabilidade aprimoradas
À medida que a quantidade de dados processados por aplicações de IA cresce, também cresce a necessidade de uma solução escalável. Ao incorporar Milvus, o sistema pode escalar perfeitamente para atender às demandas crescentes. Além disso, Milvus oferece uma ampla variedade de recursos que podem melhorar a flexibilidade e a funcionalidade gerais da IA multimodal.
- Precisão e desempenho aprimorados
Graças ao armazenamento e à recuperação unificados de dados fornecidos pelo Milvus, aplicações de IA multimodal podem processar entradas de vários tipos de dados de forma mais rápida e precisa. Isso pode levar a resultados mais precisos e a um melhor desempenho geral do sistema.
- Facilidade de uso
Milvus oferece diferentes opções para implantação local, incluindo um início rápido com pip. Ele também fornece serviço em nuvem por meio da Zilliz Cloud, que permite aos usuários iniciar e escalar suas instâncias do Milvus rapidamente. Milvus também oferece suporte a vários SDKs de linguagem, incluindo Python, Java e Go (mais em desenvolvimento), facilitando a integração em aplicações existentes. Além disso, Milvus fornece uma API Restful para interação fácil com o servidor.
- Popularidade e confiabilidade
Milvus ganhou imensa popularidade devido à sua alta escalabilidade e desempenho. Com mais de 1.000 usuários empresariais e uma comunidade open-source ativa, Milvus se posicionou como uma solução confiável para gerenciar enormes quantidades de dados estruturados e não estruturados. Como um projeto graduado da LF AI & Data Foundation, Milvus também se beneficia de suporte institucional, consolidando ainda mais sua posição como um banco de dados de referência para organizações que buscam soluções eficientes e confiáveis de gerenciamento de dados.
Superando restrições de cache para maior diversidade de saída
Uma IA multimodal que consiga produzir saídas diversas é essencial para fornecer uma solução abrangente e eficaz que possa atender às necessidades de uma ampla gama de usuários. A diversidade de saídas ajuda a aprimorar a experiência do usuário e melhora a funcionalidade geral do sistema de IA. Além disso, a diversidade de saída é crucial para aplicações que exigem uma ampla variedade de tipos de saída, como assistentes virtuais, chatbots e sistemas de reconhecimento de fala.
Embora o cache semântico seja uma forma eficiente de recuperar dados, ele pode limitar a diversidade das respostas dos usuários. Ele prioriza respostas em cache em vez de gerar novas a partir de um modelo grande. Isso significa que o sistema pode continuar produzindo as mesmas saídas ou saídas semelhantes, dependendo fortemente de informações previamente armazenadas em cache. Como resultado, a saída pode se tornar repetitiva e carecer de novidade, o que pode ser problemático em contextos nos quais respostas diversas e criativas são necessárias.
Para resolver esse problema, a temperatura em machine learning tornou-se uma ferramenta valiosa. A temperatura determina a aleatoriedade ou diversidade do conteúdo da resposta, com um valor de temperatura mais alto permitindo maior exploração de possibilidades além da saída mais provável. Isso pode levar a saídas criativas e inesperadas, acomodando uma gama mais ampla de preferências e estilos. Por outro lado, um valor de temperatura mais baixo gera respostas mais focadas e determinísticas, produzindo resultados precisos e coerentes. Ao superar as restrições de cache por meio do ajuste de temperatura, aplicações de IA multimodal podem produzir soluções mais abrangentes e eficazes que atendem às necessidades de uma gama mais ampla de usuários.
Temperatura no GPTCache
Escolher um valor de temperatura apropriado é essencial na IA multimodal para equilibrar aleatoriedade e coerência e alinhar-se às necessidades e preferências específicas do usuário ou da aplicação. A temperatura no GPTCache mantém principalmente o conceito geral de temperatura em aprendizado de máquina. Ela é obtida por meio de 3 opções no fluxo de trabalho:
- Selecionar após a avaliação
A ativação Softmax nos logits do modelo é uma técnica comum que envolve temperatura em deep learning. O GPTCache usa de forma semelhante uma função softmax para converter as pontuações de similaridade das respostas candidatas em uma lista de probabilidades. Quanto maior a pontuação, maior a possibilidade de ela ser selecionada como a resposta final. A temperatura controla a nitidez da distribuição de possibilidades. Isso significa que uma resposta com uma pontuação mais alta tem maior probabilidade de ser selecionada. O pós-processador temperature_softmax no GPTCache segue esse algoritmo para selecionar um item de uma lista de candidatos dadas suas pontuações ou níveis de confiança.
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)
- Chamar o modelo sem cache
Aplicamos a possibilidade de chamar modelos grandes diretamente sem pesquisar no cache. Essa possibilidade é afetada pela temperatura. Uma temperatura mais alta significa maior probabilidade de ignorar a pesquisa no cache, enquanto uma temperatura mais baixa diminui a possibilidade de ignorar a pesquisa no cache. Aqui está um exemplo, usando temperatuer_softmax para controlar a decisão de ignorar ou verificar o cache pela 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 resultado do cache
Usando um modelo pequeno ou algumas ferramentas para editar a resposta, esta opção requer um editor com a capacidade de converter o tipo de dados da saída.
Aplicações multimodais
Mais indivíduos buscam assistência do GPT-4 em vez de se contentarem com o ChatGPT e dependerem apenas do GPT-3.5. Além disso, a tendência atual está mudando de LLM puro para aplicações multimodais. A IA multimodal interage principalmente com múltiplas modalidades de dados, abrangendo texto, elementos visuais e áudio. À medida que as tecnologias de IA evoluem, o GPTCache e o Milvus representam uma abordagem empolgante e inovadora para construir sistemas multimodais inteligentes. Os exemplos a seguir mostram como o GPTCache e o Milvus foram implementados em situações multimodais.
1. Texto para imagem: geração de imagens
A geração de imagens por IA tem sido um tema em alta nos últimos anos. Ela se refere à geração de imagens com base em descrições textuais ou instruções usando um modelo multimodal texto-imagem pré-treinado. Essa tecnologia avançou muito nos últimos anos. Vimos avanços incríveis em modelos e aplicações de geração de imagens que conseguem produzir imagens convincentes, muitas vezes difíceis de distinguir de fotografias tiradas por humanos.
Prompt | um gato siamês branco
O processo de geração de imagens envolve o uso de prompts textuais como entrada. Com o GPTCache, a geração de imagens é facilitada por seu recurso de busca semântica para prompts. O sistema usa o Milvus para comparar embeddings de texto e detectar prompts semelhantes armazenados no cache. Em seguida, ele recupera as imagens correspondentes do cache. Se o cache não tiver resultados satisfatórios, o GPTCache chamará o modelo de geração de imagens. As saídas de imagem e texto do modelo são salvas pelo GPTCache, o que enriquece seu banco de dados. O gerador de embeddings converte cada prompt de texto em um vetor e, em seguida, o armazena no Milvus para facilitar o armazenamento e a recuperação.
O código de exemplo abaixo chama o serviço OpenAI adaptado com o GPTCache para gerar uma imagem dado o texto "a whilte siamese cat." A solicitação regula a diversidade das imagens geradas em cada ocasião por meio do valor temperature e top_k. Ao alterar a temperatura de seu valor padrão de 0.0 para um valor mais alto de 0.8, é mais provável que a solicitação obtenha uma imagem diferente a cada vez, dado o mesmo 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.
)
Atualmente, o GPTCache tem adaptadores integrados para a maioria dos modelos ou serviços populares de geração de imagens, incluindo OpenAI Image Creation, Stability.AI API, Stable Diffusions at HuggingFace. O bootcamp fornece um tutorial de Geração de Imagens usando a OpenAI.
2. Imagem para Texto: Legendagem de Imagens
A legendagem de imagens gera uma descrição textual para uma imagem, normalmente usando um modelo multimodal imagem-texto pré-treinado. Essa tecnologia permite que os computadores entendam o conteúdo das imagens e o descrevam em linguagem natural para que os humanos interpretem. A legendagem de imagens também pode fornecer uma solução muito mais robusta ao incorporá-la a um chatbot. Ela permite uma transição perfeita entre os aspectos visuais e conversacionais de um produto, aprimorando a experiência geral do usuário.
Um grande cachorro marrom deitado em cima de uma cama
Com relação à legendagem de imagens, o GPTCache começa examinando seu cache em busca de imagens que se assemelhem à imagem de entrada, conforme medido por embeddings de imagem. Em seguida, para garantir a qualidade das legendas retornadas, um avaliador realiza uma avaliação adicional da relevância ou similaridade entre a imagem de entrada e as imagens ou legendas recuperadas do cache. Por exemplo, modelos visuais pré-treinados, como ResNets ou ViTs, podem avaliar a similaridade de imagens. Além disso, um modelo texto-imagem como o CLIP pode ser aplicado para medir a similaridade entre imagem e texto. Se não houver correspondência no cache, o sistema utiliza um modelo multimodal para gerar legendas para a imagem fornecida. Posteriormente, o GPTCache armazena tanto a imagem quanto suas legendas correspondentes, com imagens e legendas sendo salvas como vetores no Milvus.
O GPTCache já adaptou serviços populares de legendagem de imagens, como Replicate BLIP e miniGPT-4. Ele planeja oferecer suporte a mais serviços de imagem para texto e modelos multimodais hospedados localmente.
3. Áudio para Texto: Transcrição de Fala
Áudio para texto, também conhecido como transcrição de fala, converte conteúdo de áudio, como conversas gravadas, reuniões ou palestras, em texto escrito. Essa tecnologia permite que pessoas que possam ter dificuldade para ouvir ou prefiram ler em vez de ouvir o conteúdo acessem e compreendam as informações com mais facilidade. Além de passar transcrições para um chatbot como o ChatGPT, os usuários podem usar as transcrições para explorar mais.
Arquivo de áudio | Um bourbon, um scotch, uma conta
Um arquivo de áudio normalmente serve como a entrada inicial para a transcrição de fala. Ao habilitar o GPTCache, a primeira etapa envolve criar um embedding de áudio para cada entrada. O sistema então utiliza o Milvus para busca por similaridade, recuperando possíveis transcrições do cache. Por fim, um modelo ou serviço de Reconhecimento Automático de Fala (ASR) é chamado quando nenhuma resposta correspondente é encontrada após a avaliação. Todos os pares de áudio e transcrições gerados pelo modelo ASR são armazenados no cache. Usar o Milvus para armazenar dados de áudio como vetores garante que seja possível encontrar áudios semelhantes no cache. Isso também permite escalabilidade à medida que a quantidade de dados de áudio aumenta.
GPTCache e Milvus reduzem significativamente a necessidade de múltiplas chamadas ASR, melhorando a velocidade e a eficiência. O bootcamp do GPTCache sobre Fala para Texto fornece um tutorial de exemplo para habilitar o GPTCache e aplicar o Milvus às Transcrições da OpenAI.
Conclusão
O uso de modelos de IA multimodais está ganhando popularidade, permitindo uma análise e compreensão mais abrangentes de dados complexos. Com seu suporte a dados não estruturados, o Milvus é uma solução ideal para criar e escalar aplicações multimodais. Além disso, adicionar mais recursos ao GPTCache, como gerenciamento de sessão, consciência de contexto e suporte a servidor, aprimora ainda mais as capacidades da IA multimodal. Com esses avanços, modelos de IA multimodais têm mais usos e cenários potenciais. Fique atento ao GPTCache Bootcamp para mais insights sobre aplicações de IA multimodal.
Continue lendo

VDBBench Adds Cost-Aware Benchmarking for Vector Databases
Compare Zilliz Cloud, Pinecone, and turbopuffer with VDBBench cost-aware vector database benchmarks across latency, freshness, multitenancy, and cold starts.

Introducing Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud
We're announcing the general availability of Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud.

Vector Databases vs. Time Series Databases
Use a vector database for similarity search and semantic relationships; use a time series database for tracking value changes over time.



