Crea una ricerca di contenuti AI con l'agente di Documenti

La ricerca di informazioni è uno degli utilizzi più comuni dei modelli di intelligenza artificiale (IA) generativa. La creazione di un'interfaccia di ricerca conversazionale per i tuoi contenuti utilizzando l'IA consente agli utenti di porre domande specifiche e ricevere risposte dirette.

Questo tutorial mostra come creare un'interfaccia di ricerca conversazionale basata sull'IA per i tuoi contenuti. Si basa sull'agente di Documenti, un progetto open source che utilizza l'API Google Gemini per creare un'interfaccia di ricerca conversazionale, senza addestrare un nuovo modello IA o ottimizzare il modello con i modelli Gemini. Ciò significa che puoi sviluppare rapidamente questa funzionalità di ricerca e usarla per insiemi di contenuti di piccole e grandi dimensioni.

Per una panoramica video del progetto e di come estenderlo, inclusi approfondimenti dai creatori, dai un'occhiata a: Ricerca di contenuti basata sull'IA | Creazione con l'IA di Google. Altrimenti, puoi iniziare a estendere il progetto seguendo le istruzioni riportate di seguito.

Panoramica

Il progetto Agente di Documenti fornisce un'interfaccia di ricerca conversazionale per un set di contenuti specifico, con il supporto dell'API Google Gemini e dei modelli generativi. Gli utenti possono porre una domanda dettagliata in uno stile conversazionale e ottenere una risposta dettagliata in base a un set di contenuti specifico. Dietro le quinte, l'agente Documenti prende la domanda e cerca in un database vettoriale dei contenuti, quindi crea un prompt dettagliato per il modello generativo, inclusi snippet di testo pertinente. Il modello generativo genera una risposta alla domanda e l'agente di Documenti formatta la risposta e la presenta all'utente.

Diagramma funzionale dell'agente Documenti Figura 1. Diagramma funzionale dell'app del progetto Agente Documenti.

La chiave per consentire all'agente di Documenti di rispondere a domande sui tuoi contenuti è la creazione di un database vettoriale per i contenuti. Separa i contenuti in blocchi logici di testo e generi un vettore per ciascuno di essi. Questi vettori sono rappresentazioni numeriche delle informazioni in ogni blocco e sono generati tramite una funzione di incorporamento del testo IA proveniente dai modelli generativi di Google.

Quando un utente pone una domanda, l'agente Documenti utilizza la stessa funzione di incorporamento del testo per creare una rappresentazione numerica della domanda e utilizza quel valore per eseguire ricerche nel database vettoriale e trovare contenuti correlati. Prende i risultati migliori e aggiunge queste informazioni a un prompt per il modello generativo. Il modello di IA prende la domanda e le informazioni di contesto aggiuntive e genera una risposta.

Configurazione del progetto

Queste istruzioni illustrano come configurare il progetto Agente di Documenti per lo sviluppo e i test. I passaggi generali prevedono l'installazione di un software prerequisito, l'impostazione di alcune variabili di ambiente, la clonazione del progetto dal repository di codice ed l'esecuzione dell'installazione della configurazione. Il progetto di codice utilizza Python Poetry per gestire i pacchetti e l'ambiente di runtime Python.

Installa i prerequisiti

Il progetto Agente di Documenti utilizza Python 3 e Python Poetry per gestire i pacchetti ed eseguire l'applicazione. Le seguenti istruzioni di installazione si riferiscono a una macchina host Linux.

Per installare il software richiesto:

  1. Installa Python 3 e il pacchetto dell'ambiente virtuale venv per Python.
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. Installa Python Poetry per gestire le dipendenze e la pacchettizzazione per il progetto.
    curl -sSL https://install.python-poetry.org | python3 -
    

Puoi utilizzare Python Poetry per aggiungere altre librerie Python se estendi il progetto.

Imposta le variabili di ambiente

Imposta alcune variabili di ambiente necessarie per consentire l'esecuzione del progetto di codice dell'agente Documenti, tra cui una chiave API di Google Gemini e l'impostazione Poesia di Python. Ti consigliamo di aggiungere queste variabili al file $HOME/.bashrc se usi Linux, per configurarle come impostazioni predefinite per le sessioni del terminale.

Per impostare le variabili di ambiente:

  1. Ottieni una chiave API di Google Gemini e copia la stringa della chiave.
  2. Imposta la chiave API come variabile di ambiente. Sugli host Linux, utilizza il comando seguente.
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. Risolvi un problema noto per la poesia Python impostando il parametro PYTHON_KEYRING_BACKEND. Sugli host Linux, utilizza il comando seguente.
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

Clona e configura il progetto

Scarica il codice del progetto e utilizza il comando di installazione Poetry per scaricare le dipendenze richieste e configurare il progetto. È necessario un software di controllo del codice sorgente git per recuperare il codice sorgente del progetto. esterno Per scaricare e configurare il codice di progetto:

  1. Clona il repository git utilizzando il comando seguente.
    git clone https://github.com/google/generative-ai-docs
    
  2. Facoltativamente, configura il repository Git locale in modo da utilizzare il pagamento sparse, in modo da avere solo i file per il progetto Agente di Documenti.
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. Passa alla directory root del progetto docs-agent.
    cd examples/gemini/python/docs-agent/
    
  4. Esegui il comando di installazione Poetry per scaricare le dipendenze e configurare il progetto:
    poetry install
    

Prepara i contenuti

Il progetto Agente di Documenti è progettato per funzionare con contenuti testuali e include strumenti specifici per funzionare con siti web che utilizzano Markdown come formato di origine. Se lavori con i contenuti del sito web, devi preservare (o replicare) la struttura delle directory del sito web pubblicato per consentire all'attività di elaborazione dei contenuti di mappare e creare link ai contenuti.

A seconda del formato e dei dettagli dei contenuti, potresti dover pulire i contenuti per rimuovere informazioni non pubbliche, note interne o altre informazioni che non vuoi che siano disponibili per la ricerca. Dovresti mantenere la formattazione di base, come i titoli e le intestazioni, che aiutano a creare suddivisioni o blocchi logici del testo nella fase di elaborazione dei contenuti.

Per preparare i contenuti per l'elaborazione:

  1. Crea una directory per i contenuti in cui l'agente IA deve cercare.
    mkdir docs-agent/content/
    
  2. Copia i tuoi contenuti nella directory docs-agent/content/. Se i contenuti sono un sito web, preserva (o replica) la struttura della directory del sito web pubblicato.
  3. Pulisci o modifica i contenuti a seconda delle necessità per rimuovere informazioni non pubbliche o altre informazioni che non vuoi includere nelle ricerche.

Utilizzare i documenti Flutter per i test

Se hai bisogno di un insieme di contenuti per testare l'agente Documenti, puoi utilizzare la documentazione per gli sviluppatori Flutter per i test.

Per ricevere la documentazione per gli sviluppatori di Flutter:

  1. Passa alla directory dei contenuti per trovare quelli in cui l'agente IA deve cercare.
    cd docs-agent/content/
    
  2. Clona i documenti Flutter nella directory docs-agent/content/.
    git clone --recurse-submodules https://github.com/flutter/website.git
    

Elabora i contenuti

Per consentire all'agente di ricerca di cercare in modo efficace contenuti correlati alle domande degli utenti, devi creare un database di vettori che rappresentano i tuoi contenuti. I vettori vengono generati utilizzando una funzione del modello generativo di IA chiamata incorporamento del testo. Gli incorporamenti di testo sono rappresentazioni numeriche dei contenuti testuali. Approssimativamente, il significato semantico del testo è un insieme di numeri. Disporre di rappresentazioni numeriche delle informazioni consente al sistema di rispondere alla domanda di un utente, approssimarne il significato utilizzando la stessa funzione di incorporamento del testo e quindi trovare informazioni correlate sotto forma di calcolo matematico, utilizzando un algoritmo k-NN.

Dividi i contenuti testuali

La quantità di testo che un vettore di incorporamento del testo può rappresentare in modo efficace è limitata. Questo progetto limita il testo rappresentato in un vettore a un massimo di 3000 caratteri, pertanto devi suddividere i contenuti in blocchi entro questo limite di caratteri. Questa sezione descrive come utilizzare uno script fornito con il progetto Agente di Documenti per suddividere i file Markdown in blocchi di testo più piccoli. Per suggerimenti su come utilizzare altri formati di contenuti, consulta Gestire altri formati.

Per suddividere i contenuti in formato Markdown:

  1. Configura i parametri di input per lo script di elaborazione modificando il file docs-agent/config.yaml. Questo esempio ha come target un sottoinsieme dei documenti Flutter:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. Salva le modifiche apportate a questo file di configurazione.
  3. Vai alla directory del progetto docs-agent:
    cd docs-agent/
    
  4. Suddividi i contenuti di origine di Markdown eseguendo il comando agent chunk:
    agent chunk
    

Lo script elabora i contenuti di input e crea file di testo di output nella directory docs-agent/data, suddividendo il testo in base a titoli, intestazioni e paragrafi correlati. L'elaborazione potrebbe richiedere del tempo, a seconda delle dimensioni dei contenuti.

Creare vettori di incorporamento del testo

Dopo aver suddiviso i contenuti in blocchi significativi di dimensioni adeguate, puoi popolare il database vettoriale con i tuoi contenuti utilizzando una funzione di incorporamento del testo. Il progetto Agente di Documenti utilizza il database vettoriale Chroma per archiviare i vettori di incorporamento del testo. Queste istruzioni illustrano come utilizzare lo script Agenti di Documenti per compilare un database vettoriale con i contenuti suddivisi.

Per generare incorporamenti di testo e popolare il database vettoriale:

  1. Vai alla directory del progetto docs-agent:
    cd docs-agent/
    
  2. Completa il database vettoriale con i tuoi contenuti utilizzando il comando agent populate:
    agent populate
    

Questo script utilizza l'API Google Gemini per generare vettori di incorporamento del testo e quindi salva l'output nel database vettoriale. L'elaborazione può richiedere del tempo, a seconda delle dimensioni dei contenuti.

Gestire altri formati

Il progetto Agente di Documenti è progettato per funzionare con i contenuti del sito web in formato Markdown. Gli autori del progetto hanno creato alcuni script di conversione per generare altri tipi di contenuti in formato Markdown, tra cui Documenti Google, Portable Document Format (PDF) e Gmail. Per ulteriori informazioni sull'utilizzo di questi convertitori, consulta la directory docs-agent/apps_script del repository di codice.

Conversione di altri formati di contenuti

Puoi utilizzare altri formati di contenuti per il progetto, ma tali metodi aggiuntivi devono essere creati da te o da altri membri della community. Controlla i repository di codice Problemi e le richieste di pull per trovare soluzioni simili.

Il codice chiave da creare per supportare altri formati di contenuti è uno script splitter come lo script files_to_plain_text.py. Cerca di creare uno script o un programma che generi un output simile a questo script. Ricorda che l'output di testo finale deve presentare una formattazione minima e informazioni non pertinenti. Se utilizzi formati di contenuti come HTML o JSON, assicurati di eliminare il più possibile la formattazione non informativa (tag, script, CSS), in modo che non distorcono i valori degli incorporamenti di testo che generi.

Dopo aver creato uno script di suddivisione per il formato dei contenuti, dovresti essere in grado di eseguire lo script populate_vector_database.py per completare il tuo database vettoriale. Per ulteriori informazioni sull'elaborazione dei file da utilizzare con l'agente di Documenti, consulta il documento Leggimi di pre-elaborazione dell'agente di Documenti.

Testare l'app

Una volta completata la compilazione del database vettoriale, il progetto è pronto per il test. Il progetto fornisce una funzione di pacchettizzazione che ti consente di eseguire il progetto localmente.

Per eseguire e testare l'interfaccia web del progetto:

  1. Vai alla directory del progetto docs-agent:
    cd docs-agent/
    
  2. Esegui lo script di avvio dell'applicazione web:
    agent chatbot
    
  3. Utilizzando il browser web, accedi all'indirizzo web dell'URL mostrato nell'output dello script di avvio e testa l'applicazione.
    * Running on http://your-hostname-here:5000
    

Opzioni di implementazione

L'API Gemini fornisce strumenti di programmazione che possono sostituire i componenti dell'implementazione dell'agente di Documenti, in particolare la variante del modello Gemini, ovvero Recupero semantico e Risposta a domande attribuite (AQA). Puoi utilizzare la funzionalità Recupero semantico dell'API Gemini per sostituire il database vettoriale separato. La funzionalità Recupero semantico consente di generare incorporamenti per i contenuti e di archiviarli. Il modello AQA Gemini è ottimizzato per rispondere a domande con materiale di origine fornito in un prompt. Utilizza il recupero semantico insieme al modello AQA per rispondere alle domande sui tuoi contenuti, il tutto all'interno dell'API Gemini.

L'agente Docs include opzioni di configurazione per l'utilizzo della funzionalità dell'API Semantic Retrieval, del modello AQA Gemini o di entrambe. Per ulteriori informazioni, consulta il file Leggimi dell'agente di Documenti.

Altre risorse

Per ulteriori informazioni sul progetto Agente Documenti, consulta il repository di codice. Se hai bisogno di assistenza per creare l'applicazione o cerchi collaboratori per sviluppatori, visita il server discord della community di Google Developers.

Applicazioni di produzione

Se prevedi di eseguire il deployment dell'agente Documenti per un ampio pubblico, tieni presente che l'utilizzo dell'API Google Gemini potrebbe essere soggetto a limitazioni di frequenza e altre limitazioni di utilizzo. Se stai considerando la creazione di un'applicazione di produzione con l'API Gemini come l'agente di Documenti, dai un'occhiata ai servizi Vertex AI di Google Cloud per aumentare la scalabilità e l'affidabilità della tua app.