Esegui l'upgrade della ricerca sul sito: risposte contestuali con l'IA generativa

L'IA generativa si riferisce all'uso dell'intelligenza artificiale per creare nuovi contenuti, come testo, immagini, musica, audio e video. L'IA generativa si basa su un modello di machine learning (ML) per apprendere i pattern e le relazioni in un set di dati di contenuti creati dall'uomo.

Questa tecnologia ha dimostrato capacità incredibili, tramite applicazioni come Gemini. Ti starai chiedendo come implementare gli strumenti di IA generativa nei tuoi prodotti web.

Un caso d'uso comune è fornire agli utenti un'interfaccia migliore per porre domande sui contenuti di un sito web. Con l'aiuto del machine learning, puoi migliorare notevolmente i risultati di ricerca degli utenti.

Potresti creare un'interfaccia in cui gli utenti scrivono la loro domanda, che viene poi inviata a un modello linguistico di grandi dimensioni (LLM), come Gemini, per poi mostrare le risposte agli utenti.

Supponiamo che questa funzionalità esista su questo sito. Un utente vuole sapere quali API sono incluse in Interop 2024 e inserisce la seguente query:

What are the features included in Interop 24?

Purtroppo, l'output sarà probabilmente errato per due motivi:

  • L'utente ha fornito all'LLM poco contesto per la domanda, pertanto l'LLM è più incline a restituire risposte sbagliate o allucinazioni.
  • È probabile che l'LLM sia stato addestrato prima della creazione di Interop 2024 o della decisione sulle sue funzionalità, pertanto non è a conoscenza di queste informazioni.

Sebbene sia possibile per gli LLM trovare informazioni più aggiornate, i set di dati di addestramento degli LLM sono intrinsecamente obsoleti. Mantenere aggiornati risultati può essere estremamente costoso e dispendioso in termini di tempo.

Utilizzare l'ingegneria del prompt

Il prompt engineering è un insieme di tecniche per ottenere il miglior output da un LLM.

Una tecnica è fornire contesto aggiuntivo nel prompt, aumentando le probabilità che l'LLM di produrre contenuti correlati al contesto.

Continuando con l'esempio dell'interoperabilità, il primo passaggio consiste nel fornire l'intero contenuto dell'articolo come contesto. Aggiungi poi la domanda come input per la risposta dell'LLM. Ad esempio:

Context:
Following on from the success of Interop 2022 and Interop 2023, we
are excited about the opportunity to collaborate once again with
all key browser vendors and other relevant stakeholders...
(trimmed to fit in this article)

Input:
What are the features included in Interop 2024?

Gemini dovrebbe restituire un output simile al seguente:

The features included in Interop 24 are Accessibility, CSS Nesting, Custom
Properties, Declarative Shadow DOM, font-size-adjust, HTTPS URLs for
WebSocket, IndexedDB, Layout, Pointer and Mouse Events, Popover, Relative
Color Syntax, requestVideoFrameCallback, Scrollbar Styling, @starting-style
and, transition-behavior, Text Directionality, text-wrap: balance,URL

Questa risposta è probabilmente molto migliore rispetto a un prompt senza contesto, poiché la risposta si basa sul contesto fornito.

Eseguire il scale up con RAG

Ad esempio, invece di rispondere a una domanda su un singolo articolo, vogliamo che l'LLM risponda a più domande su web.dev, utilizzando qualsiasi articolo come contesto aggiuntivo. Sebbene ciò possa essere possibile per i siti più piccoli, data la finestra contestuale di 1 milione di token di Gemini 1.5, l'esecuzione di prompt più grandi è più lenta e più costosa.

Le lunghezze di input e output degli LLM vengono misurate e addebitate in token, che sono un modo per rappresentare una sequenza comune di caratteri presenti in un input di testo. In genere, il numero di token sarà maggiore del numero di parole. Ad esempio, l'input nel primo esempio conteneva 775 parole, rappresentate da 1097 token. LLM diversi potrebbero calcolare i token in modo diverso e la maggior parte fornisce un'API o un endpoint per calcolare il numero di token per l'input di testo.

Una soluzione è fornire articoli pertinenti al prompt LLM. Questa attività deve essere suddivisa in due parti:

  1. Aggiungi i contenuti degli articoli principali come contesto quando fai richiesta all'LLM.
  2. Cerca negli articoli contenuti correlati a "Quali sono le funzionalità incluse in Interop 2024?".

Vogliamo che i risultati di Gemini restituiscano contenuti in base ai seguenti articoli:

L'input dovrebbe avere il seguente aspetto:

Context:
Article 1:
Over the past two years... (trimmed)

Article 2:
At the end of last year Interop 2023 wrapped up. This effort... (trimmed)

Article 3:
Following on from the success of Interop 2022... (trimmed)

Input:
What are the features included in Interop 2024?

Questo contesto produce l'output previsto.

* Accessibility * CSS Nesting * Custom Properties
* Declarative Shadow DOM * font-size-adjust
* HTTPS URLs for WebSocket * IndexedDB * Layout
* Pointer and Mouse Events * Popover * Relative Color Syntax
* requestVideoFrameCallback * Scrollbar Styling
* @starting-style and transition-behavior * Text Directionality
* text-wrap: balance * URL

Per chi ha familiarità con le tecniche di IA, questo approccio utilizza la RAG, una pratica comune per migliorare la probabilità di risposte reali dagli strumenti di IA generativa.

Sebbene la tecnica RAG possa funzionare con la normale ricerca a testo intero, l'approccio presenta delle carenze.

  • La ricerca a testo intero aiuta l'IA a trovare corrispondenze esatte delle parole chiave. Tuttavia, gli LLM non sono in grado di determinare il significato previsto alla base della query di un utente. Ciò può portare a risultati incompleti o errati.
  • Potrebbero verificarsi problemi quando le parole hanno più significati o quando le query usano sinonimi. Ad esempio, "banca" (istituto finanziario o riva del fiume) può portare a risultati irrilevanti.
  • La ricerca a testo intero potrebbe restituire risultati che contengono le parole chiave, ma che non sono in linea con lo scopo dell'utente.

La ricerca semantica è una tecnica per migliorare l'accuratezza della ricerca concentrandosi su questi aspetti chiave:

  • Intento del ricercatore: tenta di capire il motivo per cui un utente sta cercando qualcosa. Che cosa stanno cercando di trovare o realizzare?
  • Significato contestuale: interpreta parole e frasi in relazione al testo circostante, nonché altri fattori come la posizione dell'utente o la cronologia delle ricerche.
  • Relazione tra concetti: la ricerca semantica utilizza i knowledge graph (grandi reti di entità correlate) e l'elaborazione del linguaggio naturale per comprendere come sono collegate le parole e le idee.

Di conseguenza, quando crei strumenti con la ricerca semantica, l'output della ricerca si basa sull'obiettivo generale della query anziché sulle parole chiave. Ciò significa che uno strumento è in grado di determinare i documenti pertinenti, anche quando la parola chiave esatta non è presente. Può anche evitare risultati in cui la parola è presente, ma ha un significato diverso.

Al momento, puoi implementare due strumenti di ricerca che utilizzano la ricerca semantica: Vertex AI Search e Algolia AI Search.

Estrarre le risposte dai contenuti pubblicati

Hai imparato a utilizzare la progettazione di prompt per consentire a un modello LLM di fornire risposte relative a contenuti che non ha mai visto aggiungendo contesto al prompt. Inoltre, hai imparato come applicare questo approccio dai singoli articoli a un intero corpus di contenuti utilizzando la tecnica della Retrieval Augmented Generation (RAG). Hai appreso in che modo la ricerca semantica può migliorare ulteriormente i risultati per le query di ricerca degli utenti, implementando meglio il RAG nel tuo prodotto.

È un problema noto che gli strumenti di IA generativa possono "allucinare", il che li rende nella migliore delle ipotesi, a volte inaffidabili o, peggio ancora, attivamente dannosi per un'azienda. Con queste tecniche, sia gli utenti sia gli sviluppatori possono migliorare l'affidabilità e, forse, conquistare la fiducia nell'output di queste applicazioni.