ChatGPT+ database vettoriale + prompt-as-code - Lo stack CVP
Sono entusiasta di condividere un'applicazione demo su cui abbiamo lavorato qui da Zilliz. La chiamiamo OSS Chat, un chatbot che puoi utilizzare per ottenere conoscenze tecniche sui tuoi progetti open-source preferiti. Questa versione inaugurale supporta solo Hugging Face, Pytorch e Milvus, ma prevediamo di estenderla a diversi dei tuoi progetti open-source preferiti. Abbiamo creato OSS Chat usando ChatGPT di OpenAI e un database vettoriale, Zilliz! La offriamo come servizio gratuito a chiunque la utilizzi. Se desideri che il tuo progetto open-source venga inserito nell'elenco, faccelo sapere.
Contesto sul perché abbiamo creato OSS Chat
ChatGPT ha dei vincoli dovuti alla sua base di conoscenza limitata, che a volte portano a risposte allucinate quando gli vengono poste domande su argomenti non familiari. Stiamo introducendo il nuovo stack AI, ChatGPT+database vettoriale+prompt-as-code, o CVP Stack, per superare questo vincolo.
ChatGPT è eccezionalmente bravo a rispondere a query in linguaggio naturale. Quando viene combinato con un prompt che collega la query dell'utente e il testo recuperato, ChatGPT genera una risposta pertinente e accurata. Questo approccio può evitare che ChatGPT fornisca "risposte allucinate."
Abbiamo creato OSS Chat come dimostrazione funzionante dello stack CVP. OSS Chat sfrutta vari repository GitHub di progetti open-source e le relative pagine di documentazione come fonte di verità. Convertiamo questi dati in embedding e archiviamo gli embedding in Zilliz e il contenuto correlato in un data store separato. Quando l'utente interagisce con OSS Chat ponendo domande su qualsiasi progetto open-source, attiviamo una ricerca di similarità in Zilliz per trovare una corrispondenza pertinente. I dati recuperati vengono passati a ChatGPT per generare una risposta precisa e accurata.
Architettura di OSS Chat
Allucinare la risposta
Voglio mostrarti alcuni esempi di domande e risposte usando ChatGPT e OSS Chat per dimostrare come puoi eliminare alcune risposte errate.
Q1 Hugging Face supporta OpenAI Whisper
Quando abbiamo posto questa domanda a ChatGPT, ha ammesso il suo limite e ci ha dato una risposta accurata (non aveva i dati), che non è stata utile.
Alla data del mio limite di conoscenza di settembre 2021, Hugging Face non ha annunciato il supporto per OpenAI Whisper. Tuttavia, è sempre possibile che possano aggiungere il supporto in futuro. OpenAI Whisper è un nuovo modello linguistico di OpenAI e potrebbe volerci del tempo prima che altre aziende e sviluppatori lo integrino nelle loro piattaforme e nei loro prodotti.
Con OSS Chat, poiché attingiamo dal sito di documentazione di Huggingface, siamo in grado di ottenere una risposta accurata. Sì, Hugging Face supporta OpenAI Whisper. La classe FlaxWhisperModel è disponibile nella libreria transformers, che è un wrapper attorno al modello OpenAI Whisper. Puoi usare questa classe per caricare il modello OpenAI Whisper pre-addestrato e utilizzarlo per varie attività di elaborazione del linguaggio naturale come classificazione del testo, risposta a domande e generazione di testo.
Q2 Cosa fa l'API torch.compile?
Abbiamo posto a ChatGPT una domanda su un'API PyTorch e abbiamo ricevuto una lunga risposta su cos'è (che non avevamo chiesto) e una risposta che affermava che PyTorch non ha un'API torch.compile.
Alla data del mio limite di conoscenza di settembre 2021, non esiste un'API torch.compile in PyTorch, che è una popolare libreria open-source di machine learning sviluppata da Facebook AI Research.
Tuttavia, PyTorch fornisce varie API relative alla compilazione e all'ottimizzazione di modelli di reti neurali, come torch.nn.Module, che è una classe base per tutti i moduli di reti neurali in PyTorch. torch.nn.Module fornisce vari metodi e hook per definire e ottimizzare modelli di reti neurali.
Inoltre, PyTorch fornisce un'interfaccia per integrarsi con compilatori Just-In-Time (JIT), come il compilatore TorchScript JIT, che può essere utilizzato per ottimizzare e compilare modelli PyTorch per un'esecuzione efficiente su varie piattaforme hardware. Il compilatore JIT può essere utilizzato per convertire i modelli PyTorch in una rappresentazione autonoma e serializzata che può essere caricata ed eseguita in altri ambienti o linguaggi. In sintesi, sebbene PyTorch non disponga di un'API torch.compile, fornisce varie API e strumenti per ottimizzare e compilare modelli di reti neurali.
Ecco cosa ci ha detto OSSChat:
Lo scopo dell'API torch.compile è accelerare il codice PyTorch compilondolo in anticipo. Può gestire codice Python arbitrario con modifiche minime al codice esistente e può gestire il flusso di controllo dipendente dai dati. È anche in grado di gestire chiamate a funzioni non PyTorch, che il tracing di TorchScript tratta come costanti e può portare a risultati errati.
Q3 Che cos'è TTL in Milvus e come lo imposto
Per questa domanda finale, abbiamo chiesto a ChatGPT, e ci ha fornito una risposta ragionevole (aveva persino frammenti di codice!), ma non era una risposta alla domanda. Invece, era una di quelle "allucinazioni" in cui deve aver compilato la risposta.
In Milvus, TTL (Time To Live) è una funzionalità che consente di impostare un tempo di scadenza per i dati. Quando imposti un TTL per una collection o una partition in Milvus, Milvus eliminerà automaticamente tutti i dati che hanno superato il TTL specificato. Per impostare il TTL per una collection o una partition in Milvus, puoi utilizzare rispettivamente l'API set_collection_ttl o set_partition_ttl. Ecco un esempio:
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())
In questo esempio, creiamo una collection e una partition in Milvus. Quindi impostiamo un TTL di 7 giorni sia per la collection sia per la partition usando rispettivamente le API set_collection_ttl e set_partition_ttl. Il TTL è specificato come timestamp Unix, ovvero il numero di secondi trascorsi dal 1 gennaio 1970. Calcoliamo il tempo di scadenza aggiungendo il TTL all'ora corrente usando il modulo datetime.
Tieni presente che devi abilitare la funzionalità TTL quando avvii Milvus. Questo può essere fatto impostando il parametro TTL_CHECK_INTERVAL nel file di configurazione di Milvus. Il valore predefinito è 60 secondi.
OSSchat, d'altra parte, ci ha dato la risposta corretta: una singola riga di codice per impostare i secondi desiderati nella proprietà del set della collection.
TTL sta per "Time to Live" in Milvus. È una funzionalità che consente di impostare un tempo di scadenza per i dati in una collection. Quando i dati in una collection scadono, verranno automaticamente ripuliti e non saranno coinvolti nelle ricerche o nelle query.
Per impostare il valore TTL per una collection in Milvus, puoi usare il metodo collection.set_properties() in Python. Ad esempio, per impostare il valore TTL a 1800 secondi (30 minuti), puoi usare il seguente codice:
collection.set_properties(properties={"collection.ttl.seconds": 1800})
Puoi anche impostare il valore TTL durante la creazione di una collection specificando la proprietà collection.ttl.seconds nelle proprietà della collection. Il valore deve essere specificato in secondi e deve essere 0 o maggiore. Un valore di 0 significa che TTL è disabilitato.
Inizia ora
Nei prossimi giorni aggiungeremo ulteriori funzionalità a OSS Chat e scriveremo blog di accompagnamento per farvi sapere come lo costruiamo. Nel frattempo, provate a giocare con OSS Chat e fateci sapere quali funzionalità vorreste vedere oppure, se avete un progetto open-source da aggiungere, fatecelo sapere anche quello!
Continua a leggere

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.

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).
Milvus/Zilliz + Surveillance: How Vector Databases Transform Multi-Camera Tracking
See how Milvus vector database enhances multi-camera tracking with similarity-based matching for better surveillance in retail, warehouses and transport hubs.



