

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Recupera il contenuto dei documenti dalla knowledge base
<a name="kb-test-get-document-content"></a>

L'`GetDocumentContent`API consente di recuperare il contenuto dei documenti che sono stati inseriti in una Knowledge Base di Amazon Bedrock. Questa API restituisce un URL prefirmato che fornisce un accesso temporaneo e sicuro per scaricare o visualizzare il contenuto originale o estratto di un documento.

Ciò è utile quando desideri:
+ Accedere al documento di origine a cui si fa riferimento in una risposta `Retrieve` API
+ Scarica il file originale (PDF, Word, HTML, ecc.) da una knowledge base
+ Recupera il contenuto extracted/parsed testuale di un documento in formato JSON
+ Crea applicazioni che consentano agli utenti di visualizzare o scaricare i documenti sorgente dietro le risposte API `Retrieve`

## Come funziona
<a name="kb-get-doc-content-how-it-works"></a>

1. Si chiama `GetDocumentContent` con l'ID della knowledge base, l'ID della fonte di dati e l'ID del documento.

1. Il servizio convalida le autorizzazioni di accesso (inclusi eventuali controlli di ACL-based accesso configurati nella knowledge base).

1. L'API restituisce un URL prefirmato e il tipo MIME del documento.

1. L'URL prefirmato viene utilizzato per scaricare il contenuto del documento. L'URL scade dopo ** 5 minuti. **

## autorizzazioni IAM
<a name="kb-get-doc-content-iam"></a>

`GetDocumentContent`La chiamata richiede `bedrock:Retrieve` sia azioni `bedrock:GetDocumentContent` IAM sulla risorsa della knowledge base. Questo perché l'API convalida internamente l'accesso a livello di recupero prima di restituire il contenuto del documento. Assicurati che la tua policy IAM includa entrambe le azioni:

```
{
    "Effect": "Allow",
    "Action": [
        "bedrock:Retrieve",
        "bedrock:GetDocumentContent"
    ],
    "Resource": "arn:aws:bedrock:{{region}}:{{account-id}}:knowledge-base/{{kb-id}}"
}
```

## Esempi di utilizzo
<a name="kb-get-doc-content-examples"></a>

### Stesso account con ACL abilitato
<a name="kb-get-doc-content-same-account-acl"></a>

Quando la tua knowledge base ha il controllo degli ACL-based accessi abilitato, inserisci `userContext` l'identità dell'utente per garantire i controlli delle autorizzazioni a livello di documento:

```
import boto3
import requests

client = boto3.client('bedrock-agent-runtime')

# Step 1: Retrieve relevant documents
retrieve_response = client.retrieve(
    knowledgeBaseId='{{KBID1234567}}',
    retrievalQuery={'text': 'What is the refund policy?'}
)

# Step 2: Get the full document content for the top result
result = retrieve_response['retrievalResults'][0]

doc_response = client.get_document_content(
    knowledgeBaseId='{{KBID1234567}}',
    dataSourceId=result['metadata']['_data_source_id'],
    documentId=result['documentId'],
    outputFormat='RAW',
    userContext={
        'userId': '{{user-email}}',
        'groups': [
            {'id': '{{group-engineering}}'},
            {'id': '{{group-project-alpha}}'}
        ]
    }
)

# Step 3: Download the document
download = requests.get(doc_response['presignedUrl'])
with open('document.pdf', 'wb') as f:
    f.write(download.content)
```

### Stesso account senza ACL abilitato
<a name="kb-get-doc-content-same-account-no-acl"></a>

Quando gli ACL non sono configurati, ometti: `userContext`

```
import boto3
import requests

client = boto3.client('bedrock-agent-runtime')

# Step 1: Retrieve relevant documents
retrieve_response = client.retrieve(
    knowledgeBaseId='{{KBID1234567}}',
    retrievalQuery={'text': 'What is the refund policy?'}
)

# Step 2: Get the full document content
result = retrieve_response['retrievalResults'][0]

doc_response = client.get_document_content(
    knowledgeBaseId='{{KBID1234567}}',
    dataSourceId=result['metadata']['_data_source_id'],
    documentId=result['documentId'],
    outputFormat='RAW'
)

# Step 3: Download the document
download = requests.get(doc_response['presignedUrl'])
with open('document.pdf', 'wb') as f:
    f.write(download.content)
```

### Cross-account senza ACL abilitato
<a name="kb-get-doc-content-cross-account"></a>

Per l'accesso con più account, il proprietario della knowledge base deve allegare ** alla propria knowledge base una politica relativa alle ** risorse che conceda l'autorizzazione all'account del chiamante. Quindi il chiamante utilizza l'ARN della knowledge base completa.

**Fase 1: Il proprietario del KB allega una policy sulle risorse alla knowledge base **

L'account proprietario della knowledge base (ad esempio`999999999999`) deve allegare una politica sulle risorse che conceda all'account chiamante (ad esempio) l'accesso: `111111111111`

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "111111111111"
            },
            "Action": [
                "bedrock:Retrieve",
                "bedrock:GetDocumentContent"
            ],
            "Resource": "arn:aws:bedrock:us-east-1:999999999999:knowledge-base/{{KBID1234567}}"
        }
    ]
}
```

Questa operazione viene eseguita tramite l'`PutKnowledgeBaseResourcePolicy`API o tramite la console Amazon Bedrock.

**Passaggio 2: l'account chiamante dispone delle autorizzazioni IAM per richiamare l'API **

L'IAM role/user (nell'account`111111111111`) del chiamante necessita di una policy IAM che consenta le azioni sul KB ARN multiaccount:

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve",
                "bedrock:GetDocumentContent"
            ],
            "Resource": "arn:aws:bedrock:us-east-1:999999999999:knowledge-base/{{KBID1234567}}"
        }
    ]
}
```

**Passaggio 3: richiama l'API utilizzando l'ARN KB completo **

```
import boto3
import requests

client = boto3.client('bedrock-agent-runtime')

CROSS_ACCOUNT_KB_ARN = 'arn:aws:bedrock:us-east-1:999999999999:knowledge-base/{{KBID1234567}}'

# Step 1: Retrieve relevant documents using the KB ARN
retrieve_response = client.retrieve(
    knowledgeBaseId=CROSS_ACCOUNT_KB_ARN,
    retrievalQuery={'text': 'What is the refund policy?'}
)

# Step 2: Get the full document content using the same ARN
result = retrieve_response['retrievalResults'][0]

doc_response = client.get_document_content(
    knowledgeBaseId=CROSS_ACCOUNT_KB_ARN,
    dataSourceId=result['metadata']['_data_source_id'],
    documentId=result['documentId'],
    outputFormat='RAW'
)

# Step 3: Download the document
download = requests.get(doc_response['presignedUrl'])
with open('document.pdf', 'wb') as f:
    f.write(download.content)
```

Devono essere presenti sia la policy sulle risorse (lato proprietario della KB) che la policy IAM (lato chiamante). L'accesso è negato se manca una delle due.

## Recupera le risposte per le basi di conoscenza multimodali native
<a name="kb-get-doc-content-native-multimodal"></a>

Quando la knowledge base utilizza un modello di incorporamento multimodale nativo, la [Retrieve](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) risposta restituisce metadati che è possibile utilizzare per individuare l'immagine corrispondente o il segmento specifico di un file audio o video. Per ulteriori informazioni sull'elaborazione multimodale nativa, vedere. [Elaborazione multimodale nativa](kb-managed-native-multimodal.md)

**Nota**  
Si consiglia di recuperare il contenuto multimodale chiamando `GetDocumentContent` con il valore `documentId` restituito nella `Retrieve` risposta, come mostrato negli esempi precedenti. Il `content` campo nella `Retrieve` risposta fornisce un ulteriore modo per accedere alle informazioni sull'immagine, sull'audio o sul video.

### Campi di metadati multimodali
<a name="kb-get-doc-content-native-multimodal-metadata"></a>

I risultati di una knowledge base multimodale nativa includono i seguenti campi di metadati:
+ `_file_type`— La modalità del contenuto sorgente da cui è stato generato il blocco. Il valore è`AUDIO`,`VIDEO`, o. `IMAGE` Puoi filtrare questo campo per restituire risultati solo da una modalità specifica. Per ulteriori informazioni sul filtro, consulta [Filtro manuale dei metadati](kb-managed-test-config.md#kb-managed-test-config-filters).
+ `_media_start_time_ms`e`_media_end_time_ms`: per i blocchi audio e video, le ore di inizio e di fine, in millisecondi, del segmento del file rappresentato dal blocco.

### Risultati dell'immagine
<a name="kb-get-doc-content-native-multimodal-images"></a>

Per i risultati delle immagini, la [Retrieve](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) risposta restituisce l'immagine nel `byteContent` campo come URI di dati con codifica base64, con un valore di: `type` `IMAGE`

```
"retrievalResults": [
    {
        "content": {
            "byteContent": "data:image/png;base64,{{<base64-encoded-bytes>}}",
            "type": "IMAGE"
        }
    }
]
```

### Risultati audio e video
<a name="kb-get-doc-content-native-multimodal-av"></a>

Per i risultati audio e video, la [Retrieve](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) risposta restituisce un URI Amazon S3 che puoi utilizzare per recuperare il file. `type`È `AUDIO` or e `VIDEO` l'URI si trova nell'oggetto `audio` or `video` corrispondente.

L'esempio seguente mostra un risultato audio:

```
"retrievalResults": [
    {
        "content": {
            "audio": {
                "s3Uri": "s3://{{amzn-s3-demo-bucket}}/{{path/to/audio.mp3}}"
            },
            "type": "AUDIO"
        }
    }
]
```

L'esempio seguente mostra un risultato video:

```
"retrievalResults": [
    {
        "content": {
            "type": "VIDEO",
            "video": {
                "s3Uri": "s3://{{amzn-s3-demo-bucket}}/{{path/to/video.mp4}}"
            }
        }
    }
]
```