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

André Cipriani Bandarra
André Cipriani Bandarra

L'IA generativa si riferisce all'uso l'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 modelli e relazioni in un set di dati di contenuti creati dall'uomo.

Questa tecnologia ha dimostrato capacità incredibili, attraverso applicazioni come Gemini. Forse ti starai chiedendo come faccio a implementare di IA generativa nei miei prodotti web?

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

Potresti creare un'interfaccia in cui gli utenti scrivono le loro domande, che inviati a un modello linguistico di grandi dimensioni (LLM), come Gemini. e mostrare le risposte agli utenti.

Supponiamo che su questo sito esista una funzionalità di questo tipo. Un utente vuole sapere quali sono le API incluse in Interop 2024 e inseriscono la seguente query:

What are the features included in Interop 24?

Purtroppo, è probabile che l'output non sia corretto 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.
  • Probabilmente l'LLM è stato addestrato prima della creazione di Interop 2024 o delle sue caratteristiche deciso, quindi non è a conoscenza di queste informazioni.

Sebbene sia possibile per gli LLM trovare informazioni più aggiornate, sono intrinsecamente obsoleti. Mantenere aggiornati risultati può essere estremamente richiede molto tempo e denaro.

Utilizza prompt engineering

Ingegneria del prompt è un insieme di tecniche per ottenere il miglior output da un LLM.

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

Facendo sempre l'esempio dell'interoperabilità, il nostro primo passo è fornire l'intera contenuti dell'articolo come contesto. Quindi aggiungi la domanda come input per un modello LLM per 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 restituirà 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é si basa sul contesto fornito.

Fai lo scale up con RAG

Ad esempio, anziché rispondere a una domanda su un singolo articolo, vogliamo l'LLM per rispondere ad altre domande su web.dev, usando qualsiasi articolo come contesto aggiuntivo. Questo potrebbe essere possibile per i siti più piccoli, dato che Finestra di contesto di Gemini 1.5 con un milione di token, I prompt più grandi sono più lenti e più costosi da eseguire.

Le lunghezze di input e output degli LLM vengono misurate e addebitate in token, che sono un per rappresentare una sequenza comune di caratteri presenti in un input di testo. La di token è generalmente maggiore del numero di parole. Come l'input nel primo esempio aveva 775 parole, rappresentate da 1097 di 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à dovrebbe essere dati in due parti:

  1. Aggiungi i contenuti degli articoli principali come contesto quando fai richiesta all'LLM.
  2. Cerca nei contenuti articoli correlati a "Quali sono le funzionalità incluse in e interoperabilità 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 RAG, una pratica comune per migliorare la probabilità di risposte reali da parte degli strumenti di IA generativa.

Sebbene la tecnica RAG possa funzionare con la normale ricerca a testo intero, ci sono le carenze del nostro approccio.

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

Ricerca semantica è una tecnica per migliorare la precisione della ricerca concentrandosi su questi aspetti chiave:

  • Intenzione dell'utente che effettua la ricerca: cerca di capire il motivo per cui un utente sta effettuando la ricerca per qualcosa. Che cosa sta cercando di trovare o ottenere?
  • Significato contestuale: interpreta parole e frasi in relazione al loro il testo circostante, nonché altri fattori come la posizione o la ricerca dell'utente storia.
  • Relazione tra concetti: la ricerca semantica utilizza Knowledge Graph ( reti di entità correlate) e l'elaborazione del linguaggio naturale per comprendere il collegamento tra parole e idee.

Di conseguenza, quando crei strumenti con la ricerca semantica, l'output di 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ò eviterai anche 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 come utilizzare il prompt engineering per consentire a un LLM di fornire risposte e correlati ai contenuti che non ha mai visto aggiungendo contesto al prompt. Hai imparato a scalare questo approccio dai singoli articoli a un intero corpus di contenuti utilizzando RAG (Retrieval Augmented Generation) tecnica. Hai imparato in che modo la ricerca semantica può migliorare ulteriormente i risultati per gli utenti query di ricerca, una migliore implementazione di RAG nel tuo prodotto.

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