Creazione di un sistema RAG personalizzato con Amazon Nova - Amazon Nova

Creazione di un sistema RAG personalizzato con Amazon Nova

Nota

Amazon Nova Premier non è ancora disponibile tramite l’API RetrieveAndGenerate. Per utilizzare l’API RetrieveAndGenerate con Amazon Nova Premier, devi fornire un prompt personalizzato quando chiami l’API RetrieveAndGenerate. Questa operazione viene eseguita fornendo il promptTemplate nell’argomento generationConfiguration nella chiamata API RetrieveAndGenerate, come illustrato di seguito:

'generationConfiguration': { 'promptTemplate': { 'textPromptTemplate': promptTemplate } }

Per creare un modello di prompt personalizzato, consulta la guida ai prompt per RAG.

Puoi utilizzare i modelli Amazon Nova come LLM all’interno di un sistema RAG di testo personalizzato. Per creare il tuo sistema RAG con Amazon Nova, puoi configurare il sistema RAG per interrogare direttamente una knowledge base oppure puoi associare una knowledge base a un agente (per ulteriori informazioni, consulta Creazione di agenti IA con Amazon Nova)

Quando si utilizza Amazon Nova all’interno di qualsiasi sistema RAG, vi sono due approcci generali:

  • Utilizzo di uno strumento di recupero (consigliato): puoi definire il tuo strumento di recupero da utilizzare come strumento nel ToolParameter dell’API Converse o dell’API Invokemodel. Ad esempio, puoi definire l’API Retrieve di Bedrock o qualsiasi altro strumento di recupero come “strumento”.

  • Utilizzo di istruzioni personalizzate per i sistemi RAG: puoi definire istruzioni personalizzate per creare un sistema RAG personalizzato.

Utilizzo di uno strumento di recupero

Definisci uno strumento che consenta al modello di invocare uno strumento di recupero. La definizione dello strumento è uno schema JSON che si passa nel parametro della richiesta toolConfig (ToolConfiguration) all’operazione Converse.

{ "tools": [ { "toolSpec": { "name": "Retrieve information tool", "description": "This tool retrieves information from a custom database", "inputSchema": { "json": { "type": "object", "properties": { "query": { "type": "string", "description": "This is the description of the query parameter" } }, "required": [ "query" ] } } } } ] }

Dopo aver definito lo strumento, puoi passare la configurazione dello strumento come parametro nell’API Converse.

Come interpretare gli elementi di risposta

Riceverai una risposta dal modello sotto forma di JSON nel “ruolo” di assistente con il tipo di contenuto “toolUse” o sotto forma di tipo di contesto come “testo” se il modello sceglie di non utilizzare lo strumento di recupero. Se il modello sceglie di utilizzare lo strumento di recupero, la risposta identificherà lo strumento (tool_name). Le informazioni su come utilizzare lo strumento richiesto si trovano nel messaggio restituito dal modello nel campo output (ConverseOutput). In particolare, il campo toolUse (ToolUseBlock). Il campo toolUseId viene utilizzato per identificare la richiesta dello strumento nelle chiamate successive.

{ "output": { "message": { "role": "assistant", "content": [ { "toolUse": { "toolUseId": "tooluse_1234567", "name": "Retrieve information tool", "input": { "query": "Reformatted user query" #various arguments needed by the chosen tool } } } ] } }, "stopReason": "tool_use" }

Dal campo toolUse nella risposta del modello, puoi utilizzare il campo name per identificare il nome dello strumento. Poi chiama l’implementazione dello strumento e passa i parametri di input dal campo input.

Come inserire nuovamente i contenuti recuperati nell’API Converse

Per eseguire nuovamente i risultati recuperati su Amazon Nova, ora puoi creare un messaggio Tool Block che includa un blocco di contenuto toolResult (ToolResultBlock) all’interno del ruolo utente. Nel blocco di contenuto, includi la risposta dallo strumento e l’ID per la richiesta dello strumento che hai ricevuto nel passaggio precedente.

{ "role": "user", "content": [ { "toolResult": { "toolUseId": "tooluse_1234567", "content": [ { "json": { "Text chunk 1": "retrieved information chunk 1", "Text chunk 2": "retrieved information chunk 2" } } ], "status": "success | error" } } ] }

Il toolResult può avere “contenuti” che possono avere “testo”, “JSON” e “immagine” (a seconda del modello utilizzato). Se si verifica un errore nello strumento, come una richiesta di argomenti inesistenti o errati, puoi inviare informazioni sull’errore al modello presente nel campo toolResult. Per indicare un errore, specifica error nel campo status.