ChatGPT+ Banco de dados vetorial + prompt como código - A Stack CVP
Estou animado para compartilhar uma aplicação de demonstração na qual temos trabalhado aqui na Zilliz. Nós a chamamos de OSS Chat, um chatbot que você pode usar para obter conhecimento técnico sobre seus projetos de código aberto favoritos. Esta versão inaugural oferece suporte apenas a Hugging Face, Pytorch e Milvus, mas planejamos expandi-la para vários dos seus projetos de código aberto favoritos. Construímos o OSS Chat usando o ChatGPT da OpenAI e um banco de dados vetorial, Zilliz! Estamos oferecendo-o como um serviço gratuito para qualquer pessoa que o utilize. Se você gostaria que seu projeto de código aberto fosse listado, avise-nos.
Contexto sobre por que criamos o OSS Chat
O ChatGPT tem limitações devido à sua base de conhecimento limitada, às vezes resultando em respostas alucinadas quando perguntado sobre tópicos desconhecidos. Estamos introduzindo a nova pilha de IA, ChatGPT+banco de dados vetorial+prompt-como-código, ou a CVP Stack, para superar essa limitação.
O ChatGPT é excepcionalmente bom em responder a consultas em linguagem natural. Quando combinado com um prompt que vincula a consulta do usuário e o texto recuperado, o ChatGPT gera uma resposta relevante e precisa. Essa abordagem pode impedir que o ChatGPT forneça "respostas alucinadas."
Construímos o OSS Chat como uma demonstração funcional da pilha CVP. O OSS Chat aproveita vários repositórios GitHub de projetos de código aberto e suas páginas de documentação associadas como fonte da verdade. Convertemos esses dados em embeddings e armazenamos os embeddings no Zilliz e o conteúdo relacionado em um armazenamento de dados separado. Quando o usuário interage com o OSS Chat fazendo perguntas sobre qualquer projeto de código aberto, acionamos uma busca por similaridade no Zilliz para encontrar uma correspondência relevante. Os dados recuperados são fornecidos ao ChatGPT para gerar uma resposta precisa e exata.
Arquitetura do OSS Chat
Alucinando a resposta
Quero mostrar alguns exemplos de perguntas e respostas usando o ChatGPT e o OSS Chat para demonstrar como você pode remover algumas respostas incorretas.
Q1 O Hugging Face oferece suporte ao OpenAI Whisper
Quando fizemos esta pergunta ao ChatGPT, ele admitiu sua limitação e nos deu uma resposta precisa (não tinha os dados), o que não foi útil.
Até meu limite de conhecimento de setembro de 2021, a Hugging Face não anunciou suporte ao OpenAI Whisper. No entanto, é sempre possível que eles adicionem suporte no futuro. O OpenAI Whisper é um novo modelo de linguagem da OpenAI, e pode levar algum tempo para que outras empresas e desenvolvedores o integrem às suas plataformas e produtos.
Com o OSS Chat, como estamos extraindo do site de documentação da Huggingface, conseguimos obter uma resposta precisa. Sim, o Hugging Face oferece suporte ao OpenAI Whisper. A classe FlaxWhisperModel está disponível na biblioteca transformers, que é um wrapper em torno do modelo OpenAI Whisper. Você pode usar essa classe para carregar o modelo OpenAI Whisper pré-treinado e usá-lo para várias tarefas de processamento de linguagem natural, como classificação de texto, resposta a perguntas e geração de texto.
Q2 O que a API torch.compile faz?
Fizemos ao ChatGPT uma pergunta sobre uma API do PyTorch e obtivemos uma resposta longa sobre o que ela é (o que não perguntamos) e uma resposta afirmando que o PyTorch não tem uma API torch.compile.
Até meu limite de conhecimento de setembro de 2021, não há API torch.compile no PyTorch, que é uma popular biblioteca de aprendizado de máquina de código aberto desenvolvida pelo Facebook AI Research.
No entanto, o PyTorch fornece várias APIs relacionadas à compilação e otimização de modelos de redes neurais, como torch.nn.Module, que é uma classe base para todos os módulos de redes neurais no PyTorch. torch.nn.Module fornece vários métodos e hooks para definir e otimizar modelos de redes neurais.
Além disso, o PyTorch fornece uma interface para integração com compiladores Just-In-Time (JIT), como o compilador TorchScript JIT, que pode ser usado para otimizar e compilar modelos PyTorch para execução eficiente em várias plataformas de hardware. O compilador JIT pode ser usado para converter modelos PyTorch em uma representação autônoma e serializada que pode ser carregada e executada em outros ambientes ou linguagens. Em resumo, embora o PyTorch não tenha uma API torch.compile, ele fornece várias APIs e ferramentas para otimizar e compilar modelos de redes neurais.
Aqui está o que o OSSChat nos disse:
O objetivo da API torch.compile é acelerar o código PyTorch compilando-o antecipadamente. Ela pode lidar com código Python arbitrário com alterações mínimas no código existente e pode lidar com fluxo de controle dependente de dados. Ela também é capaz de lidar com chamadas de funções que não são do PyTorch, que o rastreamento do TorchScript trata como constantes e podem resultar em resultados incorretos.
Q3 O que é TTL no Milvus e como eu o configuro
Para esta pergunta final, perguntamos ao ChatGPT, e ele nos forneceu uma resposta razoável (até tinha trechos de código!), mas não era uma resposta à pergunta. Em vez disso, foi uma daquelas "alucinações" em que ele deve ter compilado a resposta.
No Milvus, TTL (Time To Live) é um recurso que permite definir um tempo de expiração para seus dados. Quando você define um TTL para uma coleção ou partição no Milvus, o Milvus excluirá automaticamente quaisquer dados que tenham excedido o TTL especificado. Para definir TTL para uma coleção ou partição no Milvus, você pode usar a API set_collection_ttl ou set_partition_ttl, respectivamente. Aqui está um exemplo:
pythonCopy code
import datetime
from milvus import Milvus, DataType
milvus = Milvus()
# create a collection
collection_param = {
'collection_name': 'my_collection',
'dimension': 128,
'index_file_size': 1024,
'metric_type': DataType.FLOAT_VECTOR,
}
milvus.create_collection(collection_param)
# set TTL for the collection
now = datetime.datetime.now()
delta = datetime.timedelta(days=7) # TTL of 7 days
expiry_time = now + delta
milvus.set_collection_ttl('my_collection', expiry_time.timestamp())
# create a partition
partition_param = {
'collection_name': 'my_collection',
'partition_name': 'my_partition',
}
milvus.create_partition(partition_param)
# set TTL for the partition
milvus.set_partition_ttl('my_collection', 'my_partition', expiry_time.timestamp())
Neste exemplo, criamos uma coleção e uma partição no Milvus. Em seguida, definimos um TTL de 7 dias para a coleção e a partição usando as APIs set_collection_ttl e set_partition_ttl, respectivamente. O TTL é especificado como um timestamp Unix, que é o número de segundos desde 1º de janeiro de 1970. Calculamos o tempo de expiração adicionando o TTL ao horário atual usando o módulo datetime.
Observe que você precisa habilitar o recurso TTL ao iniciar o Milvus. Isso pode ser feito definindo o parâmetro TTL_CHECK_INTERVAL no arquivo de configuração do Milvus. O valor padrão é 60 segundos.
OSSchat, por outro lado, nos deu a resposta correta: uma única linha de código para definir os segundos desejados na propriedade definida da coleção.
TTL significa "Time to Live" no Milvus. É um recurso que permite definir um tempo de expiração para dados em uma coleção. Quando os dados em uma coleção expiram, eles serão automaticamente limpos e não serão envolvidos em buscas ou consultas.
Para definir o valor de TTL para uma coleção no Milvus, você pode usar o método collection.set_properties() em Python. Por exemplo, para definir o valor de TTL para 1800 segundos (30 minutos), você pode usar o seguinte código:
collection.set_properties(properties={"collection.ttl.seconds": 1800})
Você também pode definir o valor de TTL ao criar uma coleção especificando a propriedade collection.ttl.seconds nas propriedades da coleção. O valor deve ser especificado em segundos e deve ser 0 ou maior. Um valor de 0 significa que o TTL está desativado.
Comece agora
Nos próximos dias, adicionaremos mais funcionalidades ao OSS Chat e escreveremos blogs complementares para que você saiba como o construímos. Enquanto isso, experimente brincar com o OSS Chat e conte-nos quais recursos você gostaria de ver, ou, se tiver um projeto de código aberto para adicionar, conte-nos isso também!
Continue lendo

Vector Lakebase: End the AI Data Silo
Learn how Vector Lakebase unifies vector search, data lakes, and AI data operations so teams can serve RAG and agents without copy-and-sync pipelines.

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.

The AWS Outage Was a Wake-Up Call for Vector Database Cross-Region Disaster Recovery
Zilliz Cloud Had the Answer Before the Crisis. Zilliz Cloud is the world's first vector database with native cross-region disaster recovery.



