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

L'IA generativa fa riferimento all'uso dell'intelligenza artificiale per creare nuovi contenuti come testi, 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 dato prova di capacità incredibili, tramite applicazioni come Gemini. Forse ti starai chiedendo come faccio a implementare gli strumenti di IA generativa nei miei prodotti web.

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

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

Supponiamo che una funzionalità di questo tipo 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?

Sfortunatamente, probabilmente l'output non sarà corretto per un paio di motivi:

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

Anche se gli LLM possono trovare informazioni più aggiornate, i set di dati di addestramento LLM sono intrinsecamente obsoleti. Mantenere risultati aggiornati può essere molto dispendioso in termini di tempo e denaro.

Usare l'ingegneria del prompt

Il Prompt engineering è un insieme di tecniche che consentono di ottenere il miglior output da un LLM.

Una tecnica è fornire contesto aggiuntivo nel prompt, in modo che l'LLM abbia più probabilità di restituire contenuti correlati al contesto.

Proseguendo con l'esempio relativo all'interoperabilità, il primo passaggio consiste nel fornire il contesto completo dell'articolo. Poi aggiungi la domanda come input a cui l'LLM deve rispondere. 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 è 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.

Fai lo scale up con RAG

Ad esempio, anziché 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 di contesto di 1.5 di Gemini 1.5, i prompt più grandi sono più lenti e più costosi da eseguire.

Le lunghezze di input e di output degli LLM vengono misurate e addebitate in token, un modo per rappresentare una sequenza comune di caratteri trovati in un input di testo. Il numero di token sarà generalmente superiore al numero di parole. Ad esempio, l'input nel primo esempio aveva 775 parole, rappresentate da 1097 token. I diversi LLM 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 gli articoli pertinenti per i prompt LLM. Questa attività deve essere suddivisa in due parti:

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

Vogliamo che i risultati 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 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 dei limiti.

  • 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. Questo può portare a risultati incompleti o errati.
  • Potrebbero verificarsi problemi quando le parole hanno più significati o le query utilizzano sinonimi. Ad esempio, "banca" (istituto finanziario o "banca fluviale") può portare a risultati irrilevanti.
  • La ricerca a testo intero potrebbe restituire risultati che contengono le parole chiave ma 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:

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

Di conseguenza, quando crei strumenti con la ricerca semantica, l'output della ricerca si basa sullo scopo generale della query, anziché sulle parole chiave. Ciò significa che uno strumento può determinare i documenti pertinenti, anche quando non è presente la parola chiave esatta. Può anche evitare i 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 risposte dai contenuti pubblicati

Hai imparato a usare l'ingegneria del prompt per abilitare un LLM a fornire risposte relative a contenuti che non ha mai visto aggiungendo contesto al prompt. Inoltre, hai imparato a scalare questo approccio passando dai singoli articoli a un intero corpus di contenuti utilizzando la tecnica della generazione aumentata di recupero (RAG, Retrieval-Augmented Generation). Hai scoperto come la ricerca semantica può migliorare ulteriormente i risultati delle query di ricerca degli utenti, implementando meglio i RAG nel tuo prodotto.

È un problema noto che gli strumenti di IA generativa possono "allucinare ", il che li rende nel migliore dei modi, a volte inaffidabili o, nel peggiore dei casi, attivamente dannosi per un'azienda. Con queste tecniche, sia gli utenti che gli sviluppatori possono migliorare l'affidabilità e forse creare fiducia nell'output di queste applicazioni.