

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 基礎模型自訂
<a name="jumpstart-foundation-models-customize"></a>

基礎模型是能夠解決各種任務的非常強大的模型。為了有效地解決大多數任務，這些模型需要某種形式的自訂。

第一次根據特定使用案例自訂基礎模型的建議方法是透過提示詞工程設計。為您的基礎模型提供精心設計、內容豐富的提示，有助於獲得所需的結果，而無需進行任何微調或改變模型權重。如需詳細資訊，請參閱[基礎模型的提示詞工程](jumpstart-foundation-models-customize-prompt-engineering.md)。

如果提示詞工程不足以將基礎模型自訂為特定任務，您可以在其他網域特定資料上微調基礎模型。如需詳細資訊，請參閱[用於微調的基礎模型和超參數](jumpstart-foundation-models-fine-tuning.md)。微調過程中會改變模型權重。

如果您想要使用知識庫中的資訊來自訂模型，而不需要任何重新訓練，請參閱[檢索增強生成](jumpstart-foundation-models-customize-rag.md)。

# 基礎模型的提示詞工程
<a name="jumpstart-foundation-models-customize-prompt-engineering"></a>

提示詞工程是設計和精簡語言模型的提示或輸入刺激，以產生特定類型的輸出的過程。提示詞工程包括選取適當的關鍵字、提供背景資訊，並以鼓勵模型產生所需回應的方式塑造輸入，而且是積極塑造基礎模型行為和輸出的重要技術。

有效的提示詞工程對於指導模型行為和達到所需的回應非常重要。透過提示詞工程設計，您可以控制模型的色調、風格和領域專業知識，而無需進一步涉及微調等自訂措施。我們建議您在考慮對其他資料微調模型之前，先花時間提示詞工程設計。目標是為模型提供足夠的上下文和指引，以便它可以在看不見或有限的資料案例中推廣和執行良好。

## 零樣本學習
<a name="jumpstart-foundation-models-customize-prompt-engineering-zero-shot"></a>

零樣本學習涉及訓練模型，以概括並對看不見的課程或任務進行預測。若要在零樣本學習環境中執行提示詞工程，我們建議您建構提示，明確提供目標工作和所需輸出格式的相關資訊。例如，如果您想要在模型在訓練期間看不到的一組類別上使用零樣本文字分類的基礎模型，則一個設計良好的提示可能是：`"Classify the following text as either sports, politics, or entertainment: [input text]."` 透過明確指定目標類別和預期的輸出格式，您可以引導模型即使在看不見的類別上也能做出準確的預測。

## 小樣本學習
<a name="jumpstart-foundation-models-customize-prompt-engineering-few-shot"></a>

小樣本學習涉及訓練具有有限資料量的模型，以用於新課程或任務。小樣本學習環境中的提示詞工程專注於設計提示，以有效使用有限的可用訓練資料。例如，如果您使用基礎模型進行影像分類工作，而且只有一些新影像類別的範例，您可以設計一個提示，其中包括可用的已標示範例，以及目標類別的預留位置。例如，提示可能是：`"[image 1], [image 2], and [image 3] are examples of [target class]. Classify the following image as [target class]"`。透過合併有限的標籤範例並明確指定目標類別，您可以引導模型一般化並進行準確的預測，即使在訓練資料最少的情況下也一樣。

## 支援的推論參數
<a name="jumpstart-foundation-models-customize-prompt-engineering-inference-params"></a>

變更推論參數也可能會影響對提示的回應。雖然您可以嘗試盡可能將最多的特異性和內容新增至提示，但您也可以使用支援的推論參數進行實驗。以下是一些常見支援推論參數範例：


| 推論參數 | Description | 
| --- | --- | 
| `max_new_tokens` | 基礎模型回應的輸出長度上限。有效值：整數，範圍：正整數。 | 
| `temperature` | 控制輸出中的隨機性。較高的溫度會導致輸出序列具有低機率的單字，而較低的溫度會導致輸出序列具有高機率的單字。如果 `temperature=0`，回應只會由最高機率的單字 (貪婪解碼) 組成。有效值：浮點數，範圍：正浮點數。 | 
| `top_p` | 在產生文字的每個步驟中，模型會從累積機率為 `top_p` 的最小可能單字集中取樣。有效值：浮動、範圍：0.0、1.0。 | 
| `return_full_text` | 如果為 `True`，則輸入文字是所產生輸出文字的一部分。有效值：布林值，預設值：False。 | 

如需基礎模型推論的詳細資訊，請參閱[使用 `JumpStartModel` 類別部署公開可用的基礎模型](jumpstart-foundation-models-use-python-sdk-model-class.md)。

如果提示詞工程不足以根據特定的業務需求、領域特定語言、目標任務或其他需求調整您的基礎模型，您可以考慮在其他資料上微調模型，或使用檢索增強生成 (RAG)，利用歸檔知識來源的增強內容來增強模型架構。如需詳細資訊，請參閱 [用於微調的基礎模型和超參數](jumpstart-foundation-models-fine-tuning.md) 或 [檢索增強生成](jumpstart-foundation-models-customize-rag.md) 。

# 用於微調的基礎模型和超參數
<a name="jumpstart-foundation-models-fine-tuning"></a>

基礎模型耗費大量計算，並且在一個大型的無標籤語料庫上進行過訓練。微調預先訓練過的基礎模型是一種經濟實惠的方式，可以利用其廣泛的功能，又能在您自己的小型語料庫上自訂模型。微調是一種涉及進一步訓練的自訂方法，並且會改變模型的權重。

有以下需求時，微調可能對您有用：
+ 根據特定業務需求自訂您的模型
+ 您的模型可以成功使用網域特定的語言，例如行業術語、技術術語或其他專業詞彙
+ 針對特定任務增強效能
+ 應用程式中的準確、相對和上下文感知回應
+ 更以事實為基礎，毒性更低，更符合特定要求的反應

根據您的使用案例和選擇的基礎模型，您可以採取兩種主要方法進行微調。

1. 如果您有興趣在特定網域資料上微調模型，請參閱[使用網域適應性微調大型語言模型 (LLM)](jumpstart-foundation-models-fine-tuning-domain-adaptation.md)。

1. 如果您對使用提示詞和回應範例的指令式微調感興趣，請參閱[使用提示指示微調大型語言模型 (LLM)](jumpstart-foundation-models-fine-tuning-instruction-based.md)。

## 可用於微調的基礎模型
<a name="jumpstart-foundation-models-fine-tuning-models"></a>

您可以微調下列任何 JumpStart 基礎模型：
+ Bloom 3B
+ Bloom 7B1
+ BloomZ 3B FP16
+ BloomZ 7B1 FP16
+ Code Llama 13B
+ Code Llama 13B Python
+ Code Llama 34B
+ Code Llama 34B Python
+ Code Llama 70B
+ Code Llama 70B Python
+ Code Llama 7B
+ Code Llama 7B Python
+ CyberAgentLM2-7B-Chat (CALM2-7B-Chat)
+ Falcon 40B BF16
+ Falcon 40B Instruct BF16
+ Falcon 7B BF16
+ Falcon 7B Instruct BF16
+ Flan-T5 基本
+ Flan-T5 大
+ Flan-T5 小
+ Flan-T5 XL
+ Flan-T5 XXL
+ Gemma 2B
+ Gemma 2B Instruct
+ Gemma 7B
+ Gemma 7B Instruct
+ GPT-2 XL
+ GPT-J 6B
+ GPT-Neo 1.3B
+ GPT-Neo 125M
+ GPT-NEO 2.7B
+ LightGPT Instruct 6B
+ Llama 2 13B
+ Llama 2 13B Chat
+ Llama 2 13B Neuron
+ Llama 2 70B
+ Llama 2 70B Chat
+ Llama 2 7B
+ Llama 2 7B Chat
+ Llama 2 7B Neuron
+ Mistral 7B
+ Mixtral 8x7B
+ Mixtral 8x7B Instruct
+ RedPajama INCITE Base 3B V1
+ RedPajama INCITE Base 7B V1
+ RedPajama INCITE Chat 3B V1
+ RedPajama INCITE Chat 7B V1
+ RedPajama INCITE Instruct 3B V1
+ RedPajama INCITE Instruct 7B V1
+ Stable Diffusion 2.1

## 通常支援的微調超參數
<a name="jumpstart-foundation-models-fine-tuning-hyperparameters"></a>

微調時，不同的基礎模型支援不同的超參數。以下是常見的支援超參數，可在訓練期間進一步自訂您的模型：


| 推論參數 | Description | 
| --- | --- | 
| `epoch` | 模型在訓練期間通過微調資料集的次數。必須是大於 1 的整數。 | 
| `learning_rate` |  處理完每批微調訓練範例後，模型權重更新的速率。必須是大於 0 的正浮點數。 | 
| `instruction_tuned` |  是否指示訓練模型。必須是 `'True'` 或 `'False'`。 | 
| `per_device_train_batch_size` |  用於訓練的每個 GPU 核心或 CPU 其批次大小。必須為正整數。 | 
| `per_device_eval_batch_size` |  用於評估的每個 GPU 核心或 CPU 其批次大小。必須為正整數。 | 
| `max_train_samples` |  為了偵錯或加速訓練，請將訓練範例的數量截斷至此值。值 -1 表示模型使用所有的訓練範例。必須為正整數或 -1。 | 
| `max_val_samples` |  為了偵錯或加速訓練，請將驗證範例的數量截斷至此值。值 -1 表示模型使用所有的驗證範例。必須為正整數或 -1。 | 
| `max_input_length` |  記號化後的總輸入序列長度上限。超過此長度的序列將被截斷。如果為 -1，則 `max_input_length` 會設定為 1024 和記號器所定義 `model_max_length` 的最小值。如果設定為正值，則 `max_input_length` 會設定為所提供值和記號器所定義 `model_max_length` 的最小值。必須為正整數或 -1。 | 
| `validation_split_ratio` |  如果沒有驗證管道，則訓練-驗證比率會從訓練資料中分割出來。必須介於 0 到 1 之間。 | 
| `train_data_split_seed` |  如果驗證資料不存在，這會固定將輸入訓練資料隨機分割至模型所使用的訓練和驗證資料。必須是整數。 | 
| `preprocessing_num_workers` |  用於預先處理的程序數目。如果為 `None`，則主要程序會用於預先處理。 | 
| `lora_r` |  低秩適應 (LoRA) r 值，做為權重更新的擴展因素。必須為正整數。 | 
| `lora_alpha` |  低秩適應 (LoRA) alpha 值，做為權重更新的擴展因素。通常為 `lora_r` 大小的 2 到 4 倍。必須為正整數。 | 
| `lora_dropout` |  低秩適應 (LoRA) 層的捨棄值必須是介於 0 到 1 之間的正浮點數。 | 
| `int8_quantization` |  如果為 `True`，則模型會以 8 位元精確度載入以進行訓練。 | 
| `enable_fsdp` |  如果為 `True`，則訓練會使用完全碎片資料平行處理。 | 

您在 Studio 中微調模型時，可以指定超參數值。如需詳細資訊，請參閱[在 Studio 中微調模型](jumpstart-foundation-models-use-studio-updated-fine-tune.md)。

您在使用 SageMaker Python SDK 微調模型時，也可以覆寫預設超參數值。如需詳細資訊，請參閱[使用 `JumpStartEstimator` 類別微調公開可用的基礎模型](jumpstart-foundation-models-use-python-sdk-estimator-class.md)。

# 使用網域適應性微調大型語言模型 (LLM)
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation"></a>

網域適應性微調可讓您利用預先訓練的基礎模型，並使用有限的網域特定資料為特定任務進行調整。如果提示詞工程無法提供足夠的自訂功能，您可以使用網域調整微調，讓您的模型使用領域特定語言，例如產業術語、技術用語或其他專業資料。此微調程序會改變模型的權重。

若要在網域特定的資料集上微調模型：

1. 準備您的訓練資料。如需說明，請參閱[準備和上傳訓練資料以進行域自適應微調](#jumpstart-foundation-models-fine-tuning-domain-adaptation-prepare-data)。

1. 建立您的微調訓練任務。如需說明，請參閱[為指令微調建立訓練任務](#jumpstart-foundation-models-fine-tuning-domain-adaptation-train)。

您可以在 [範例筆記本](#jumpstart-foundation-models-fine-tuning-domain-adaptation-examples) 中找到端對端範例。

網域適應性微調適用於下列基礎模型：

**注意**  
某些 JumpStart 基礎模型 (例如 Llama 2 7B) 需要先接受終端使用者授權協議，才能微調和執行推論。如需詳細資訊，請參閱[終端使用者授權協議](jumpstart-foundation-models-choose.md#jumpstart-foundation-models-choose-eula)。
+ Bloom 3B
+ Bloom 7B1
+ BloomZ 3B FP16
+ BloomZ 7B1 FP16
+ GPT-2 XL
+ GPT-J 6B
+ GPT-Neo 1.3B
+ GPT-Neo 125M
+ GPT-NEO 2.7B
+ Llama 2 13B
+ Llama 2 13B Chat
+ Llama 2 13B Neuron
+ Llama 2 70B
+ Llama 2 70B Chat
+ Llama 2 7B
+ Llama 2 7B Chat
+ Llama 2 7B Neuron

## 準備和上傳訓練資料以進行域自適應微調
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-prepare-data"></a>

域自適應微調的訓練資料可以 CSV、JSON 或 TXT 檔案格式提供。所有訓練資料都必須位於單一資料夾內的單一檔案中。

訓練資料取自 CSV 或 JSON 訓練資料檔案的**文字**欄。如果沒有任何欄的標籤為**文字**，則會從 CSV 或 JSON 訓練資料檔案的第一欄取得訓練資料。

以下是用於微調的 TXT 檔案內文範例：

```
This report includes estimates, projections, statements relating to our
business plans, objectives, and expected operating results that are “forward-
looking statements” within the meaning of the Private Securities Litigation
Reform Act of 1995, Section 27A of the Securities Act of 1933, and Section 21E
of ....
```

### 分割用於訓練和測試的資料
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-split-data"></a>

您可以選擇性地提供另一個包含驗證資料的資料夾。此資料夾也應該包含一個 CSV、JSON 或 TXT 檔案。如果沒有提供驗證資料集，則會保留某個數量的訓練資料供驗證之用。當您選擇超參數來微調模型時，可以調整用於驗證的訓練資料百分比。

### 將微調資料上傳至 Amazon S3
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-upload-data"></a>

將準備好的資料上傳至 Amazon Simple Storage Service (Amazon S3)，以便在微調 JumpStart 基礎模型時使用。您可以使用下列命令上傳資料：

```
from sagemaker.s3 import S3Uploader
import sagemaker
import random

output_bucket = sagemaker.Session().default_bucket()
local_data_file = "train.txt"
train_data_location = f"s3://{output_bucket}/training_folder"
S3Uploader.upload(local_data_file, train_data_location)
S3Uploader.upload("template.json", train_data_location)
print(f"Training data: {train_data_location}")
```

## 為指令微調建立訓練任務
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-train"></a>

將資料上傳至 Amazon S3 之後，您可以微調和部署 JumpStart 基礎模型。若要在 Studio 中微調模型，請參閱[在 Studio 中微調模型](jumpstart-foundation-models-use-studio-updated-fine-tune.md)。若要使用 SageMaker Python SDK 微調模型，請參閱[使用 `JumpStartEstimator` 類別微調公開可用的基礎模型](jumpstart-foundation-models-use-python-sdk-estimator-class.md)。

## 範例筆記本
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-examples"></a>

如需域自適應微調的詳細資訊，請參閱下列範例筆記本：
+ [SageMaker JumpStart 基礎模型 - 微調網域特定資料集上的文字產生 GPT-J 6B 模型](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/domain-adaption-finetuning-gpt-j-6b.html)
+ [在 JumpStart 微調 LLaMA 2 模型](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/llama-2-finetuning.html)

# 使用提示指示微調大型語言模型 (LLM)
<a name="jumpstart-foundation-models-fine-tuning-instruction-based"></a>

指令式微調使用標籤的範例來改善預先訓練的基礎模型在特定任務上的效能。帶有標籤的範例依指令被格式化為提示、回應和用詞。此微調程序會改變模型的權重。有關指令式微調的更多資訊，請參閱文獻[FLAN 簡介：更通用的指令微調語言模型](https://ai.googleblog.com/2021/10/introducing-flan-more-generalizable.html)和[擴展指令微調的語言模型。](https://arxiv.org/abs/2210.11416)

微調語言網路 (FLAN) 模型使用指令調整，讓模型更適合解決一般下游 NLP 任務。Amazon SageMaker JumpStart 在 FLAN 模型系列中提供了許多基礎模型。例如，FLAN-T5 模型會針對各種任務進行指令微調，以提升各種常見使用案例的零樣本表現。透過額外的資料和微調，指令式模型可以進一步適應訓練期間沒考慮到的更具體任務。

若要使用提示-回應對任務指示微調特定任務上的 LLM：

1. 在 JSON 檔案中準備您的指示。如需提示-回應對檔案所需格式和資料資料夾結構的詳細資訊，請參閱[準備和上傳訓練資料以進行指令微調](#jumpstart-foundation-models-fine-tuning-instruction-based-prepare-data)。

1. 建立您的微調訓練任務。如需說明，請參閱[為指令微調建立訓練任務](#jumpstart-foundation-models-fine-tuning-instruction-based-train)。

您可以在 [範例筆記本](#jumpstart-foundation-models-fine-tuning-instruction-based-examples) 中找到端對端範例。

只有一部分的 JumpStart 基礎模型與指令微調相容。指令式網域適應性微調適用於下列基礎模型：

**注意**  
某些 JumpStart 基礎模型 (例如 Llama 2 7B) 需要先接受終端使用者授權協議，才能微調和執行推論。如需詳細資訊，請參閱[終端使用者授權協議](jumpstart-foundation-models-choose.md#jumpstart-foundation-models-choose-eula)。
+ Flan-T5 基本
+ Flan-T5 大
+ Flan-T5 小
+ Flan-T5 XL
+ Flan-T5 XXL
+ Llama 2 13B
+ Llama 2 13B Chat
+ Llama 2 13B Neuron
+ Llama 2 70B
+ Llama 2 70B Chat
+ Llama 2 7B
+ Llama 2 7B Chat
+ Llama 2 7B Neuron
+ Mistral 7B
+ RedPajama INCITE Base 3B V1
+ RedPajama INCITE Base 7B V1
+ RedPajama INCITE Chat 3B V1
+ RedPajama INCITE Chat 7B V1
+ RedPajama INCITE Instruct 3B V1
+ RedPajama INCITE Instruct 7B V1

## 準備和上傳訓練資料以進行指令微調
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-prepare-data"></a>

指令微調的訓練資料必須以 JSON Lines 文字檔案格式提供，其中每一行都是字典。所有訓練資料都必須位於單一資料夾中。資料夾可以包含多個 .jsonl 檔案。

訓練資料夾也可以包含範本 JSON 檔案 (`template.json`)，該檔案描述資料的輸入和輸出格式。如果未提供任何範本檔案，則會使用下列範本檔案：

```
{
  "prompt": "Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.\n\n### Instruction:\n{instruction}\n\n### Input:\n{context}",
  "completion": "{response}"
}
```

根據 `template.json` 檔案，訓練資料的每個 .jsonl 項目都必須包含 `{instruction}`、`{context}`和 `{response}` 欄位。

如果您提供自訂範本 JSON 檔案，請使用 `"prompt"` 和 `"completion"` 金鑰來定義您自己的必要欄位。根據下列自訂範本 JSON 檔案，訓練資料的每個 .jsonl 項目都必須包含 `{question}`、`{context}` 和 `{answer}` 欄位：

```
{
  "prompt": "question: {question} context: {context}",
  "completion": "{answer}"
}
```

### 分割用於訓練和測試的資料
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-split-data"></a>

您可以選擇性地提供另一個包含驗證資料的資料夾。此資料夾也應該包含一或多個 .jsonl 檔案。如果沒有提供驗證資料集，則會保留某個數量的訓練資料供驗證之用。當您選擇超參數來微調模型時，可以調整用於驗證的訓練資料百分比。

### 將微調資料上傳至 Amazon S3
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-upload-data"></a>

將準備好的資料上傳至 Amazon Simple Storage Service (Amazon S3)，以便在微調 JumpStart 基礎模型時使用。您可以使用下列命令上傳資料：

```
from sagemaker.s3 import S3Uploader
import sagemaker
import random

output_bucket = sagemaker.Session().default_bucket()
local_data_file = "train.jsonl"
train_data_location = f"s3://{output_bucket}/dolly_dataset"
S3Uploader.upload(local_data_file, train_data_location)
S3Uploader.upload("template.json", train_data_location)
print(f"Training data: {train_data_location}")
```

## 為指令微調建立訓練任務
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-train"></a>

將資料上傳至 Amazon S3 之後，您可以微調和部署 JumpStart 基礎模型。若要在 Studio 中微調模型，請參閱[在 Studio 中微調模型](jumpstart-foundation-models-use-studio-updated-fine-tune.md)。若要使用 SageMaker Python SDK 微調模型，請參閱[使用 `JumpStartEstimator` 類別微調公開可用的基礎模型](jumpstart-foundation-models-use-python-sdk-estimator-class.md)。

## 範例筆記本
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-examples"></a>

如需指令微調的詳細資訊，請參閱下列範例筆記本：
+ [在 JumpStart 微調 LLaMA 2 模型](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/llama-2-finetuning.html)
+ [SageMaker JumpStart 簡介 - 使用 Mistral 模型產生文字](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/mistral-7b-instruction-domain-adaptation-finetuning.html)
+ [SageMaker JumpStart 簡介 - 使用 Falcon 模型產生文字](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/falcon-7b-instruction-domain-adaptation-finetuning.html)
+ [SageMaker JumpStart 基礎模型 - HuggingFace Text2Text 指令微調](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/instruction-fine-tuning-flan-t5.html)

# 檢索增強生成
<a name="jumpstart-foundation-models-customize-rag"></a>

基礎模型通常是離線訓練的，使得模型在訓練模型之後建立的任何資料都是不可知的。此外，基礎模型會在非常一般的網域語料庫上進行訓練，因此對於網域特定任務的效率較低。您可以使用檢索增強生成 (RAG) 從基礎模型外部擷取資料，並透過在上下文中新增相關擷取的資料來擴充提示。如需 RAG 模型架構的詳細資訊，請參閱[檢索增強生成的知識密集型 NLP 任務](https://arxiv.org/abs/2005.11401)。

使用 RAG，用於擴充提示的外部資料可以來自多個資料來源，例如文件儲存庫、資料庫或 API。第一步是將您的文件和任何使用者查詢轉換為相容的格式，以執行相關性搜尋。為了使格式相容，文件集合或知識庫以及使用者提交的查詢會使用嵌入語言模型轉換成數值表示。*嵌入*是在向量空間中將文字以數字表示的過程。RAG 模型架構比較了知識庫向量中的使用者查詢的嵌入。然後，原始使用者提示會附加來自知識庫中類似文件的相關上下文。然後將此增強提示發送到基礎模型。您可以非同步更新知識庫及相關嵌入。

 ![\[A model architecture diagram of Retrieval Augmented Generation (RAG).\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/jumpstart/jumpstart-fm-rag.jpg) 

檢索的文件應大到足以包含有用的內容，以協助增強提示，但小到足以符合提示的最大序列長度。您可以使用任務特定的 JumpStart 模型，例如來自 Hugging Face 的一般文字嵌入 (GTE) 模型，為您的提示和知識程式庫文件提供嵌入。比較提示和文件嵌入以尋找最相關的文件後，使用補充內容建構新的提示。然後，將增強的提示傳遞至您選擇的文字產生模型。

## 範例筆記本
<a name="jumpstart-foundation-models-customize-rag-examples"></a>

如需 RAG 基礎模型解決方案的詳細資訊，請參閱下列範例筆記本：
+ [檢索增強生成：使用 LangChain 和 Cohere 生成和 SageMaker JumpStart 嵌入模型回答問題](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/question_answering_Cohere+langchain_jumpstart.html)
+ [檢索增強生成：使用 LLama-2、Pinecone 和自訂資料集回答問題](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/question_answering_pinecone_llama-2_jumpstart.html)
+ [檢索增強生成：以開放原始碼的 LangChain 程式庫的自訂資料集為基礎回答問題](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/question_answering_langchain_jumpstart.html)
+ [檢索增強生成：以自訂資料集為基礎回答問題](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/question_answering_jumpstart_knn.html)
+ [檢索增強生成：使用 Llama-2 和文字嵌入模型回答問題](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/question_answering_text_embedding_llama-2_jumpstart.html)
+ [Amazon SageMaker JumpStart - 文字嵌入與句子類似性](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/text-embedding-sentence-similarity.html)

您可以複製 [Amazon SageMaker AI 範例儲存庫](https://github.com/aws/amazon-sagemaker-examples/tree/main/introduction_to_amazon_algorithms/jumpstart-foundation-models)，以在 Studio 內您選擇的 Jupyter 環境中執行可用的 JumpStart 基礎模型範例。如需可用於在 SageMaker AI 中建立和存取 Jupyter 之應用程式的詳細資訊，請參閱[Amazon SageMaker Studio 中支援的應用程式](studio-updated-apps.md)。