Migliorare l'intelligenza e l'efficienza di ChatGPT: il potere di LangChain e Milvus
Questo post è stato originariamente pubblicato su TheSequence ed è ripubblicato qui con autorizzazione.
Sebbene ChatGPT abbia guadagnato una notevole popolarità, con molte persone che utilizzano la sua API per sviluppare i propri chatbot o esplorare Langchain, non è privo di sfide.
ChatGPT può spesso creare l'illusione dell'intelligenza. Gli utenti possono interagire con un chatbot che impiega un gergo complesso, solo per rendersi conto in seguito che il bot genera risposte senza senso o inventa link 404 inesistenti.
L'archiviazione del contesto è un altro ostacolo. ChatGPT conserva solo i record della sessione in corso, il che significa che un bot addestrato appena pochi giorni fa può comportarsi come se non avesse alcun ricordo della sessione. Questa "amnesia" evidenzia la necessità di un chatbot che possa conservare e recuperare dati.
Costi e prestazioni sono considerazioni significative quando si utilizza ChatGPT o persino modelli open-source più piccoli per l'inferenza. In molti casi, ciò può essere costoso, richiedendo diversi A100 e molto tempo. Gli sviluppi devono affrontare i colli di bottiglia delle prestazioni prima di portare i grandi modelli linguistici (LLM) nelle applicazioni in tempo reale.
Il miglioramento dell'intelligenza di ChatGPT è il punto in cui entra in gioco la combinazione di LangChain e Milvus. Con l'integrazione di LangChain e Milvus, gli LLM possono sfruttare il potere dei vector store per aumentare intelligenza ed efficienza. Come funziona tutto questo? Immergiamoci nella potenza di LangChain e Milvus nelle applicazioni LLM, quindi esploriamo come costruire e migliorare la tua applicazione di AI Generated Content (AIGC).
LangChain per applicazioni basate su LLM
LangChain è un framework per sviluppare applicazioni basate su modelli linguistici. Il framework LangChain è progettato attorno ai seguenti principi:
- Consapevole dei dati: collegare un modello linguistico ad altre fonti di dati
- Agentico: consentire a un modello linguistico di interagire con il suo ambiente
Il robusto framework di LangChain consiste in una gamma di moduli, come Models, Prompts, Memory, Indexes, Chains, Agents e Callbacks, che sono le astrazioni fondamentali che possono essere viste come i mattoni di qualsiasi applicazione basata su LLM. Per ogni modulo, LangChain fornisce interfacce standard ed estendibili. LanghChain fornisce anche integrazioni esterne e persino implementazioni end-to-end per l'uso immediato.
Il wrapper LLM è al centro della funzionalità di LangChain, offrendo una serie di provider LLM come OpenAI, Cohere, Hugging Face, ecc. Fornisce un'interfaccia standard a tutti gli LLM e include strumenti comuni per lavorare con essi.
Database vettoriale per LLM
LangChain offre una gamma impressionante di Large Language Models (LLM) per soddisfare esigenze diverse. Ma non è tutto. LangChain va oltre le basi integrando vari database vettoriali come Milvus, Faiss e altri per abilitare la funzionalità di ricerca semantica. Attraverso il suo VectorStore Wrapper, LangChain standardizza le interfacce necessarie per semplificare il caricamento e il recupero dei dati. Ad esempio, utilizzando la classe Milvus, LangChain consente l'archiviazione dei vettori di caratteristiche che rappresentano i documenti tramite il metodo from_text. Il metodo similarity_search recupera quindi i vettori dell'enunciato di query per trovare i documenti più vicini alla query nello spazio di embedding, facilitando così la ricerca semantica con semplicità.
Approfondendo ulteriormente l'argomento, ci rendiamo conto che i database vettoriali hanno un ruolo significativo nelle applicazioni LLM, come evidente dal chatgpt-retrieval-plugin. Ma la loro utilità non finisce qui. I database vettoriali hanno una miriade di altri casi d'uso, rendendoli un componente indispensabile delle applicazioni LLM:
- I database vettoriali facilitano l'archiviazione basata sul contesto, una funzionalità utile nelle piattaforme LLM come Auto-GPT e BabyAGI. Questa capacità migliora la comprensione contestuale e la conservazione dei ricordi.
- I database vettoriali forniscono caching semantico per piattaforme LLM come GPTCache, che ottimizza le prestazioni e consente risparmi sui costi.
- I database vettoriali abilitano funzionalità di conoscenza documentale, come OSSChat, che risolvono le allucinazioni.
- E molto altro.
Se vuoi saperne di più su Milvus e Auto-GPT, puoi leggere questo articolo su come Milvus alimenta Auto-GPT. Nella sezione seguente, scoprirai come LangChain e Milvus possono affrontare le allucinazioni.
Perché LangChain + Milvus può risolvere le allucinazioni
Nell'intelligenza artificiale, si dice che il sistema generi frequentemente "allucinazioni", il che significa inventare fatti non correlati alla realtà. Alcuni descrivono persino ChatGPT come "un tipo sicuro di sé che sa scrivere assurdità molto convincenti", e il problema delle allucinazioni mina la credibilità di ChatGPT.
I database vettoriali illustrati nel diagramma seguente affrontano il problema delle allucinazioni. Innanzitutto, archivia i documenti ufficiali come vettori di testo in Milvus e cerca documenti pertinenti in risposta alla domanda (la linea arancione nel diagramma). Chatgpt risponde alla domanda in base al contesto corretto, producendo la risposta attesa (la linea verde nel diagramma).
Diagramma che mostra Langchain, Milvus e ChatGPT
L'esempio sopra mostra che combinare Milvus e ChatGPT è molto semplice. Non c'è bisogno di etichettare i dati, addestrarli o svilupparli, né di perfezionarli: è necessario convertire i dati testuali in dati vettoriali e inserirli in Milvus. La combinazione Langchain-Milvus-ChatGPT crea un archivio di testo, e la risposta finale deriva dal riferimento al contenuto nella libreria di documenti.
Questo garantisce che il chatbot venga alimentato con le conoscenze corrette, riducendo efficacemente la probabilità di errori. Ad esempio, come amministratore di una community, quando devo rispondere a domande relative alla community, posso archiviare tutti i documenti della documentazione ufficiale di Milvus.
Quando un utente chiede: "Come usare Milvus per costruire un chatbot", il chatbot risponderà alla domanda basandosi sulla documentazione ufficiale, dicendo all'utente che fornisce esempi di creazione di applicazioni e di estrazione di documenti pertinenti. Questo tipo di risposta è affidabile. In breve, non dobbiamo riaddestrare o elaborare tutto; dobbiamo fornire a ChatGPT la conoscenza contestuale necessaria. Quando inviamo una richiesta, il robot può fornire un contesto relativo al contenuto ufficiale.
Ti senti entusiasta dopo aver scoperto la potenza di Milvus e Langchain per ChatGPT? Se sì, allora preparati a portare avanti lo sviluppo della tua applicazione. Uniamo le forze e creiamo un chatbot potenziato utilizzando le incredibili capacità combinate di LangChain e Milvus!
Crea la tua applicazione con LangChain e Milvus
0. Prerequisiti
Innanzitutto, installa LangChain usando il comando pip install langchain. Per quanto riguarda Milvus, hai due opzioni a tua disposizione. Puoi installare e avviare Milvus open-source sul tuo sistema locale oppure scegliere l'opzione cloud per provare Zilliz – un servizio cloud-native per Milvus che offre una versione di prova gratuita. Zilliz è un servizio facile, accessibile e robusto, quindi approfondiremo come usare Zilliz Cloud per l'applicazione, e LangChain ne semplifica l'uso.
1. Caricare i dati per la knowledge base
Innanzitutto, dobbiamo caricare i dati in un formato standard. Oltre a caricare il testo, dobbiamo suddividerlo in piccoli blocchi. Questo è necessario per assicurarci di passare al modello linguistico solo le porzioni di testo più piccole e più pertinenti.
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import TextLoader
loader = TextLoader('state_of_the_union.txt')
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
Ora, dato che abbiamo piccoli blocchi di testo, dobbiamo creare embedding per ogni porzione di testo e archiviarli in un vector store. La creazione degli embedding viene eseguita in modo da poterli usare per trovare solo le porzioni di testo più rilevanti da inviare al modello linguistico. Questo viene fatto con le seguenti righe. Qui usiamo gli embedding di OpenAI e Zilliz Cloud.
embeddings = OpenAIEmbeddings()
vector_db = Milvus.from_documents(
docs,
embeddings,
connection_args={
"uri": "YOUR_ZILLIZ_CLOUD_URI",
"user": "YOUR_ZILLIZ_CLOUD_USERNAME",
"password": "YOUR_ZILLIZ_CLOUD_PASSWORD",
"secure": True
}
)
2. Interrogare i dati
Quindi, ora che abbiamo caricato i dati, possiamo usarli in una chain di question-answering.
Dai un'occhiata allo snippet di codice qui sotto, che affronta la parte 3, "Risolvere le allucinazioni," di questo articolo. Può aiutarti a comprendere appieno il concetto.
Questo comporta la ricerca di documenti correlati alla nostra query data dalla knowledge base. Per farlo, usa il metodo similarity_search per generare il vettore di caratteristiche per la query e poi cerca nei vettori in Zilliz Cloud corrispondenze simili, insieme al contenuto dei documenti associati.
query = "What did the president say about Ketanji Brown Jackson"
docs = vector_db.similarity_search(query)
Poi esegui load_qa_chain per ottenere la risposta finale. Fornisce l'interfaccia più generica per rispondere alle domande. Carica una chain che può eseguire QA per i documenti di input e usa TUTTO il testo nei documenti.
Il codice qui sotto usa OpenAI come LLM. Durante l'esecuzione, la QAChain riceve input_documents e question come input. input_documents è il documento correlato alla query nel database. Quindi, l'LLM organizza la risposta in base al contenuto di questi documenti e alla domanda posta.
from langchain.chains.question_answering import load_qa_chain
from langchain.llms import OpenAI
llm = OpenAI(temperature=0)
chain = load_qa_chain(llm, chain_type="stuff")
chain.run(input_documents=docs, question=query)
Perché Milvus è migliore per l'applicazione AIGC
Quindi, se vuoi rendere più affidabili le tue applicazioni di contenuti generati dall'intelligenza artificiale (AIGC), è necessario avere un database vettoriale che rappresenti il testo. Ma perché scegliere il database vettoriale Milvus?
- Ricerca semantica: Milvus archivia i vettori di caratteristiche semantiche estratti, consentendo un recupero semantico intelligente e conveniente, difficile per i database tradizionali. I database vettoriali rendono il recupero semantico più intelligente e conveniente.
- Scalabilità: Il supporto per la scalabilità in cluster e cloud rende possibile archiviare e recuperare facilmente miliardi di entità. La scalabilità è essenziale per le applicazioni in cui velocità ed efficienza sono fondamentali.
- Ricerca ibrida: Milvus supporta la ricerca mista di dati vettoriali e scalari, che può soddisfare diversi scenari e requisiti di ricerca.
- API ricche: Milvus fornisce API multi-linguaggio, tra cui Python, Java, Go, Restful e altro; Milvus è facile da integrare e utilizzare in varie applicazioni.
- Integrare gli LLM: Le integrazioni con diversi LLM, tra cui OpenAI Plugin, Langchain e LLamaIndex, consentono agli utenti di personalizzare ulteriormente le proprie applicazioni.
- Configurazioni multiple: Abbiamo progettato Milvus per supportare molti casi d’uso, dal tuo laptop locale a prodotti cloud come Milvus-lite, container docker, distribuzioni distribuite e utilizzo nel cloud. Questo rende Milvus facilmente adattabile a diverse dimensioni applicative, supportando tutto, dai piccoli progetti al recupero di dati a livello enterprise.
Passaggio successivo per la tua applicazione
Nel campo dell’IA, continui nuovi progressi e tecnologie rivoluzionarie possono portare la tua applicazione al livello successivo. Qui esamineremo due modi per migliorare la tua applicazione: implementare GPTCache e ottimizzare modelli di embedding e prompt. Questo può migliorare prestazioni e qualità della ricerca, distinguere la tua applicazione e offrire una migliore esperienza utente.
Migliora le prestazioni della tua applicazione AIGC - GPTCache
Se vuoi ottimizzare le prestazioni e risparmiare sui costi per la tua applicazione AIGC, dai un’occhiata a GPTCache. Questo progetto innovativo è progettato per creare una cache semantica per archiviare le risposte degli LLM.
Quindi, in che modo è utile? Memorizzando nella cache le risposte agli LLM, e il database vettoriale può recuperare domande simili per ottenere la risposta memorizzata nella cache, la tua applicazione può rispondere rapidamente e accuratamente agli utenti. Con GPTCache, accedere alle risposte memorizzate nella cache diventa semplicissimo—niente più generazioni di risposte ridondanti, risparmiando in definitiva tempo e risorse computazionali. GPTCache va oltre migliorando l’esperienza utente complessiva. Fornire risposte più rapide e accurate soddisferà la tua risposta, e la tua applicazione avrà più successo.
Migliora la qualità della tua ricerca - ottimizza i tuoi modelli di embedding e prompt
Oltre a utilizzare GPTCache, il fine-tuning dei tuoi modelli di embedding e prompt può migliorare la qualità dei tuoi risultati di ricerca. I modelli di embedding sono un componente cruciale delle applicazioni di IA, poiché sono gli elementi costitutivi che traducono il testo in vettori numerici, che il deep learning può elaborare. Ottimizzando i tuoi modelli di embedding, puoi migliorare l’accuratezza e la pertinenza dei risultati della tua ricerca semantica. Ciò comporta la regolazione dei modelli per dare priorità a parole chiave e frasi specifiche e la modifica dei loro meccanismi di ponderazione e punteggio per riflettere meglio le esigenze e le preferenze del tuo pubblico di riferimento. Con un modello di embedding ben addestrato, la tua applicazione AIGC può interpretare e categorizzare accuratamente l’input degli utenti, portando a risultati di ricerca più accurati.
Oltre a ciò, i prompt utilizzati nelle applicazioni svolgono un ruolo essenziale nel migliorare la qualità dei risultati di ricerca. I prompt sono le frasi che la tua IA usa per richiedere input agli utenti, come "Come posso aiutarti oggi?" o "A cosa stai pensando?". Testando e modificando questi prompt, puoi migliorare la qualità e la pertinenza dei tuoi risultati di ricerca. Ad esempio, se la tua applicazione è orientata a un settore o a un gruppo demografico specifico, puoi adattare i tuoi prompt per riflettere il linguaggio e la terminologia utilizzati da quel gruppo. Questo aiuta a guidare gli utenti verso query di ricerca più pertinenti, portando a un'esperienza più soddisfacente grazie a una corrispondenza più accurata con le loro esigenze. Perfezionando i prompt per soddisfare i requisiti degli utenti, puoi aiutarli a ottenere ricerche più efficaci, portando così a una base di utenti più soddisfatta.
Alla fine
In sintesi, LangChain e Milvus sono la ricetta perfetta per gli sviluppatori che creano applicazioni basate su LLM da zero. LangChain offre un'interfaccia standard e intuitiva per gli LLM, mentre Milvus fornisce notevoli capacità di archiviazione e recupero. LangChain e Milvus possono migliorare l'intelligenza e l'efficienza di ChatGPT, aiutandoti a superare gli ostacoli delle allucinazioni. Ancora meglio, con GPTCache e le tecnologie di ottimizzazione dei prompt e dei modelli, possiamo migliorare le nostre applicazioni di IA in modi mai ritenuti possibili.
Mentre continuiamo a spingere i confini dell'IA, collaboriamo e creiamo un futuro più luminoso per AIGC, così da esplorare il potenziale illimitato dell'intelligenza artificiale.
Continua a leggere

Context Engineering Strategies for AI Agents: A Developer’s Guide
Learn practical context engineering strategies for AI agents. Explore frameworks, tools, and techniques to improve reliability, efficiency, and cost.

Zilliz Cloud Update: Smarter Autoscaling for Cost Savings, Stronger Compliance with Audit Logs, and More
What's new in Zilliz Cloud? Smarter autoscaling with scale-down, audit logs GA, enhanced SSO, and Milvus 2.6 in Private Preview.

Vector Databases vs. Hierarchical Databases
Use a vector database for AI-powered similarity search; use a hierarchical database for organizing data in parent-child relationships with efficient top-down access patterns.



