Insights guidati dall’IA Sfruttare LangChain e Pinecone con GPT-4
Insights AI-guided with LangChain and Pinecone using GPT-4
Empowering Next-Gen Product Managers— Vol. 1
Lavorare in modo efficace con dati qualitativi è una delle competenze più importanti che un product manager può avere; raccogliere dati, analizzarli e comunicarli in modo efficiente, creando insight azionabili e preziosi.
Puoi ottenere dati qualitativi da molte fonti: interviste agli utenti, feedback dei concorrenti o commenti delle persone che utilizzano il tuo prodotto. A seconda di ciò che stai cercando di ottenere, potresti analizzare questi dati immediatamente o salvarli per dopo. A volte, potresti aver bisogno solo di alcune interviste agli utenti per confermare un’ipotesi. Altre volte, potresti aver bisogno del feedback di mille utenti per individuare tendenze o testare idee. Quindi, il tuo approccio all’analisi di questi dati può variare a seconda della situazione.
Con Large Language Models come GPT-4 e strumenti di intelligenza artificiale come LangChain e Pinecone, possiamo gestire situazioni diverse e molti dati in modo più efficace. In questa guida condividerò la mia esperienza con questi strumenti. Il mio obiettivo è mostrare ai product manager e a chiunque lavori con dati qualitativi come utilizzare questi strumenti di intelligenza artificiale per ottenere insight più utili dai loro dati.
- *args, **kwargs e tutto ciò che sta in mezzo
- Transizione di carriera da Ingegnere Civile a Data Scientist
- 5 Strumenti di Intelligenza Artificiale per Blog (che Accelereranno il Tuo Successo)
Cosa troverai in questo articolo in stile guida?
- Inizierò presentandoti questi strumenti di intelligenza artificiale e alcune limitazioni attuali dei Large Language Models (LLM).
- Discuterò diversi modi in cui puoi sfruttare al massimo questi strumenti per casi d’uso reali.
- Utilizzando l’analisi dei feedback degli utenti come esempio, fornirò frammenti di codice ed esempi per mostrarti come funzionano questi strumenti nella pratica.
Si prega di notare: per utilizzare strumenti come GPT-4, LangChain e Pinecone, è necessario essere a proprio agio con i dati e avere alcune competenze di base di programmazione. È inoltre importante capire i propri clienti e essere in grado di trasformare i dati in azioni concrete. La conoscenza di intelligenza artificiale e apprendimento automatico è un vantaggio, ma non è necessaria.
Comprensione degli strumenti di intelligenza artificiale: perché potresti aver bisogno di LangChain e Pinecone
Presumo che tu sia già familiarizzato con GPT-4, è importante comprendere alcuni concetti mentre discutiamo degli strumenti che lavorano con LLM. Una delle principali sfide dei LLM attuali come GPT-4 è la loro “finestra di contesto”, ovvero quanto di informazione possono elaborare e ricordare contemporaneamente.
Attualmente, ci sono due versioni di GPT-4. Quella standard ha un contesto di 8k token, mentre la versione estesa ha una finestra di contesto di 32k. Per darti un’idea, un token di 32k corrisponde a circa 24.000 parole, che equivarrebbe approssimativamente a 48 pagine di testo. Ma tieni presente che la versione di 32k non è disponibile per tutti, anche se hai accesso a GPT-4.
Inoltre, OpenAI ha recentemente annunciato un nuovo modello di ChatGPT, chiamato gpt-3.5-turbo-16k, che offre 4 volte la lunghezza del contesto di gpt-3.5-turbo. Quando si lavora con l’analisi degli insight, suggerirei di utilizzare gpt-4, poiché ha una logica migliore rispetto a GPT-3.5. Ma puoi sperimentare per vedere cosa funziona nel tuo caso d’uso.
Perché lo sto menzionando?
Quando si tratta di analisi degli insight, si presenta una grande sfida se si dispone di molti dati o se si è interessati a più di una sola richiesta. Supponiamo di avere un’intervista con un utente. Si desidera approfondire e ottenere ulteriori insight utilizzando GPT-4. In questo caso, è sufficiente prendere la trascrizione dell’intervista e fornirla a ChatGPT, scegliendo GPT-4. Potrebbe essere necessario suddividere il testo una volta, ma questo è tutto. Non sono necessari altri strumenti sofisticati per questo. Quindi, avresti bisogno di questi strumenti nuovi e sofisticati quando si lavora con molti dati qualitativi. Capiamo quindi quali sono questi strumenti, quindi passeremo ad alcuni casi d’uso specifici ed esempi.
Allora, cos’è LangChain?
LangChain è un framework che si basa su LLM e offre varie funzionalità come chatbot, Generative Question-Answering (GQA) e sintesi. La sua versatilità risiede nella capacità di collegare insieme diversi componenti, tra cui modelli di prompt, LLM, agenti e sistemi di memoria.
I template di prompt sono prompt predefiniti per diverse situazioni, mentre LLM elaborano e generano risposte. Gli agenti aiutano a prendere decisioni basate sull’output del LLM e i sistemi di memoria memorizzano le informazioni per un uso successivo.
In questo articolo condividerò alcune capacità di esso nei miei esempi.

Cos’è Pinecone?
Pinecone.ai è uno strumento potente progettato per semplificare la gestione di rappresentazioni di dati ad alta dimensione note come vettori.
I vettori sono particolarmente utili quando si tratta di molti dati di testo, ad esempio quando si cerca di estrarre informazioni da essi. Considera una situazione in cui stai analizzando feedback e desideri scoprire vari dettagli su un prodotto. Questo tipo di raccolta di informazioni approfondite non sarebbe possibile solo con ricerche di parole chiave come “ottimo”, “migliorare” o “suggerisco”, poiché potresti perdere molti contesti.
Ora, non approfondirò gli aspetti tecnici della vettorizzazione del testo (che potrebbe essere basata su parole, frasi, ecc.). La cosa chiave che devi capire è che le parole vengono convertite in numeri tramite modelli di apprendimento automatico e questi numeri vengono quindi memorizzati in array.
Prendiamo un esempio:
La parola “frutti di mare” potrebbe essere tradotta in una serie di numeri come questa: [1.2, -0.2, 7.0, 19.9, 3.1, …, 10.2].
Quando cerco un’altra parola, quella parola viene anch’essa trasformata in una serie di numeri (o vettore). Se il nostro modello di apprendimento automatico sta facendo bene il suo lavoro, le parole che hanno un contesto simile a “frutti di mare” dovrebbero avere una serie di numeri vicina alla serie di “frutti di mare”. Ecco un esempio:
“gambero” potrebbe essere tradotto come: [1.1, -0.3, 7.1, 19.8, 3.0, …, 10.5], dove i numeri sono vicini ai numeri che “frutti di mare” ha.
Con Pinecone.ai, puoi memorizzare ed effettuare ricerche efficienti su questi vettori, consentendo comparazioni di similarità rapide e accurate.
Utilizzando le sue capacità, puoi organizzare e indicizzare vettori derivati da modelli LLM, aprendo la porta a approfondite intuizioni e alla scoperta di modelli significativi all’interno di set di dati estesi.
In parole più semplici, Pinecone.ai ti consente di memorizzare le rappresentazioni vettoriali dei tuoi dati qualitativi in modo conveniente. Puoi cercare facilmente tra questi vettori e applicare modelli LLM per estrarre intuizioni preziose da essi. Semplifica il processo di gestione dei dati e l’ottenimento di informazioni significative da essi.

Quando avresti effettivamente bisogno di strumenti come LangChain e Pinecone?
Risposta breve: quando stai lavorando con molti dati qualitativi.
Lasciatemi condividere alcuni casi d’uso dalla mia esperienza per darti un’idea:
- Immagina di avere migliaia di feedback scritti dai tuoi canali di prodotto. Vuoi identificare modelli nei dati e monitorare come il feedback è evoluto nel tempo.
- Supponi di avere recensioni in diverse lingue e desideri tradurle nella tua lingua preferita, per poi estrarre intuizioni.
- Punti a condurre un’analisi competitiva analizzando recensioni dei clienti, feedback e sentimenti riguardanti i prodotti dei tuoi concorrenti.
- La tua azienda effettua sondaggi o studi sugli utenti, generando un volume significativo di risposte qualitative. Estrarre intuizioni significative, scoprire tendenze e migliorare prodotti o servizi sono i tuoi obiettivi.
Questi sono solo alcuni esempi di situazioni in cui strumenti come LangChain e Pinecone possono essere preziosi per i responsabili dei prodotti che lavorano con dati qualitativi.
Progetto di esempio: Analisi dei feedback
Come responsabile del prodotto, il mio lavoro consiste nel migliorare le nostre funzionalità di note e trascrizione delle riunioni. Per fare ciò, ascoltiamo ciò che i nostri utenti dicono al riguardo.
Per la nostra funzione di note delle riunioni, gli utenti ci danno un punteggio tra 1 e 5 per la qualità, ci dicono quale modello hanno usato e ci inviano anche i loro commenti. Ecco il flusso:
In questo progetto, ho analizzato da vicino due cose: ciò che gli utenti hanno detto sulla nostra funzionalità e quali template hanno utilizzato. Alla fine ho affrontato una enorme quantità di dati – oltre 20.000 parole, che si sono trasformate in più di 38.000 “token” (o pezzi di dati) quando ho utilizzato uno strumento speciale per analizzarli. Sono così tanti dati che superano quanto alcuni modelli avanzati possano gestire contemporaneamente!
Per aiutarmi ad analizzare questi estesi dati, mi sono rivolto a due strumenti avanzati: LangChain e Pinecone, integrati con GPT-4. Con questi nel nostro arsenale, approfondiamo il progetto e vediamo cosa ci hanno permesso di fare questi strumenti ad alta tecnologia.
L’obiettivo principale di questo progetto era estrarre informazioni dai dati raccolti, che richiedeva:
- La capacità di creare query specifiche relative al nostro dataset.
- L’uso di LLM (Linguistic Language Models) per gestire grandi volumi di informazioni.
Innanzitutto, ti darò una panoramica di come ho svolto il progetto. Dopo di che, condividerò alcuni esempi del codice che ho utilizzato.
Iniziamo con una collezione di file di testo. Ogni file contiene feedback degli utenti accoppiati al nome del template utilizzato. Puoi elaborare questi dati per adattarli alle tue esigenze, nel mio progetto ho dovuto fare qualche post-elaborazione. Ricorda che i tuoi file e dati potrebbero essere diversi, quindi sentiti libero di modificare le informazioni per il tuo progetto.
Ad esempio, se vuoi capire il feedback degli utenti sulla struttura delle note di riunione:
query = "Elencare tutto il feedback riguardante le strutture delle frasi in una tabella in markdown e ottenere una singola informazione per ognuna, e fornire un riassunto generale per tutte."
Ecco un diagramma ad alto livello che mostra il flusso di processo nell’utilizzo di LLM e Pinecone. Fai una domanda a GPT-4, o quello che chiamiamo una “query”. Nel frattempo, Pinecone, la nostra libreria di tutti i feedback, fornisce il contesto alla tua query, quando invii la domanda stessa ad essa (“embed query”). Insieme, ci aiutano a dare senso ai nostri dati in modo efficiente:
Sotto c’è una versione più semplificata del diagramma:
Facciamolo! In questo script, impostiamo una pipeline per analizzare i dati dei feedback degli utenti utilizzando GPT-4 di OpenAI, Pinecone e LangChain. Fondamentalmente, importa le librerie necessarie, imposta il percorso dei dati di feedback e stabilisce la chiave API di OpenAI per elaborare questi dati.
import osimport openaiimport pineconeimport certifiimport nltkfrom tqdm.autonotebook import tqdmfrom langchain.document_loaders import DirectoryLoaderfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.vectorstores import Pineconefrom langchain.llms import OpenAIfrom langchain.chains.question_answering import load_qa_chaindirectory = 'percorso della tua directory con i file di testo, contenenti i feedback'OPENAI_API_KEY = "la tua chiave"
Quindi definiamo e chiamiamo una funzione load_docs() che carica i documenti di feedback degli utenti da una directory specificata utilizzando il DirectoryLoader di LangChain. Conta quindi e visualizza il numero totale di documenti caricati.
def load_docs(directory): loader = DirectoryLoader(directory) documents = loader.load() return documentsdocuments = load_docs(directory)len(documents)
Successivamente definiamo ed eseguiamo la funzione split_docs(), che divide i documenti caricati in pezzi più piccoli di una dimensione specifica e con sovrapposizione utilizzando il RecursiveCharacterTextSplitter di LangChain. Conta quindi e stampa il numero totale di blocchi risultanti.
def split_docs(documents, chunk_size=500, chunk_overlap=20): text_splitter = RecursiveCharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=chunk_overlap) docs = text_splitter.split_documents(documents) return docsdocs = split_docs(documents)print(len(docs))
Per lavorare con Pinecone, che è essenzialmente un database di vettori, dobbiamo ottenere le rappresentazioni dei nostri documenti, ecco perché dovremmo introdurre una funzione per questo. Ci sono molti modi per farlo, ma utilizziamo la funzione di embedding di OpenAI:
# Assumendo che la classe OpenAIEmbeddings sia importata in precedenzaembeddings = OpenAIEmbeddings()# Definiamo una funzione per generare un embedding per una determinata querydef generate_embedding(query): query_result = embeddings.embed_query(query) print(f"La lunghezza dell'embedding per la query è: {len(query_result)}") return query_result
Per memorizzare quei vettori in Pinecone, è necessario creare un account e creare anche un indice. Questo è abbastanza semplice da fare. Successivamente otterrai una chiave API, un nome di ambiente e un nome di indice da lì.
MY_API_KEY_p= "the_key"MY_ENV_p= "the_environment"pinecone.init( api_key=MY_API_KEY_p, environment=MY_ENV_p)nome_indice = "nome_indice_tuo"indice = Pinecone.from_documents(docs, embeddings, index_name=nome_indice)
Il passo successivo è essere in grado di trovare delle risposte. È come trovare i punti più vicini alla tua domanda in un campo di possibili risposte, fornendoci i risultati più rilevanti.
def get_similiar_docs(query, k=40, score=False): if score: similar_docs = index.similarity_search_with_score(query, k=k) else: similar_docs = index.similarity_search(query, k=k) return similar_docs
In questo codice, impostiamo un sistema di domande e risposte utilizzando il modello GPT-4 di OpenAI e LangChain. La funzione get_answer() prende una domanda in input, trova documenti simili e utilizza la catena di domande e risposte per generare una risposta.
from langchain.chat_models import ChatOpenAImodel_name = "gpt-4"llm = OpenAI(model_name=model_name, temperature =0)chain = load_qa_chain(llm, chain_type="stuff")def get_answer(query): similar_docs = get_similiar_docs(query) answer = chain.run(input_documents=similar_docs, question=query) return answer
Siamo arrivati alla domanda! O alle domande. Puoi fare quante domande desideri.
query = "Elencare tutti i feedback relativi alle strutture delle frasi in una tabella in markdown e ottenere un singolo insight per ognuno, e fornire un riepilogo generale per tutti."answer = get_answer(query)print(answer)
Implementazione della catena di domande e risposte di recupero:
Per implementare il sistema di domande e risposte di recupero, utilizziamo la classe RetrievalQA di LangChain. Utilizza un LLM di OpenAI per rispondere alle domande e si basa su un tipo di catena “stuff”. Il recuperatore è collegato a un indice creato in precedenza e viene memorizzato nella variabile ‘qa’. Per una migliore comprensione, puoi approfondire le tecniche di recupero.
from langchain.chains import RetrievalQAretriever = index.as_retriever()qa_stuff = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, verbose=True)response = qa_stuff.run(query)
Abbiamo ottenuto la risposta, presentiamo il contenuto memorizzato nella variabile di risposta in un formato visivamente attraente utilizzando il testo di Markdown. Rende il testo visualizzato più organizzato e più facile da leggere.
from IPython.display import display, Markdowndisplay(Markdown(response))

Vai avanti e sperimenta sia con i file di input che con le domande per ottenere il massimo da questo approccio e da questi strumenti.
Conclusione
In breve, GPT-4, LangChain e Pinecone rendono facile gestire grandi quantità di dati qualitativi. Ci aiutano a esaminare questi dati e trovare informazioni preziose, guidando decisioni migliori. Questo articolo ha dato un’anteprima del loro utilizzo, ma possono fare molto di più.
Poiché questi strumenti continuano a evolversi e diventano sempre più comuni, imparare a utilizzarli ora ti darà un vantaggio significativo in futuro. Quindi, continua a esplorare e imparare su questi strumenti perché stanno plasmando il presente e il futuro dell’analisi dei dati.
Rimanete sintonizzati per ulteriori modi per esplorare questi utili strumenti in futuro!
Tutte le immagini, se non diversamente indicato, sono dell’autore.
Riferimenti
Documentazione di LangChain
Documentazione di Pinecone
Corso breve su LangChain per lo sviluppo di applicazioni LLM