

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

# 了解 LLMs和 RAG
<a name="understanding"></a>

若要了解增強來源文件品質如何增強 RAG 回應的品質，您必須了解 LLM 的內部工作。LLMs 的真正功能在於能夠使用自我關注機制和轉換器架構。這些進階技術可讓模型有效地處理和關聯輸入序列的不同部分，無論其在文字中的位置或距離為何。此功能與傳統語言模型形成強烈的對比，通常難以理解長期相依性和內容。此外，LLMs是以前所未有的規模進行訓練。有些最大的模型是由數兆個參數組成，並且從各種來源擷取了 TB 的文字資料。此大規模擴展可讓 LLMs 深入了解語言，擷取先前對 AI 系統具有挑戰性的細微細微差別、同義詞和情境提示。結果是一類模型，可以產生一致且流暢的文字，並在問題回答、文字摘要甚至程式碼產生等任務中展現顯著的功能。

若要使用這些模型，我們可以使用 [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) 等服務，這些服務可讓您從 Amazon 和第三方供應商存取各種基礎模型，包括 Anthropic、Cohere 和 Meta。您可以使用 Amazon Bedrock 來實驗state-of-the-art模型、自訂和微調模型，或透過單一 API 將這些模型納入生成式 AI 解決方案。

雖然 LLMs擅長擷取模式和產生連貫文字，但他們通常無法存取up-to-date或專門的資訊。RAG 結合了 LLMs 的生成能力和擷取元件，該元件可以存取和整合來自外部來源的相關資訊，作為具體化 LLM 提示的一部分。外部來源的範例包括 Amazon Bedrock [的知識庫](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html)、[Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html) 等智慧型搜尋系統，或 [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) 等向量資料庫。

![RAG 型應用程式如何回應使用者查詢的工作流程。](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/writing-best-practices-rag/images/rag-workflow.png)


圖表說明下列工作流程：

1. 使用者向 RAG 應用程式提交查詢。

1. RAG 應用程式會查詢包含知識來源的向量資料庫，例如文件、資料或媒體。

1. RAG 應用程式會根據查詢與預存文件之間的語意相似性，從向量資料庫擷取相關資訊。

1. RAG 應用程式會使用擷取的內容增強原始提示，並將其傳送至 LLM 端點。

1. LLM 端點會產生回應並將其傳回至 RAG 應用程式。

1. RAG 應用程式會將產生的回應傳回給使用者。

RAG 的核心採用兩階段程序。在第一個階段中，擷取模型會根據輸入查詢識別和擷取相關文件或段落。此擷取模型可以是傳統的資訊擷取系統、密集擷取模型或兩者的組合。在第二個階段中，擷取的資訊和原始查詢會以完全具體化的提示範本的形式饋送至 LLM。LLMs很大程度上取決於擷取器元件交付的來源內容品質。它們會套用自我注意力機制，以數學方式編碼擷取的內容與任務的關係。LLM 接著會根據查詢和擷取的資訊產生回應。在 RAG 中，控制擷取來源文件的品質是改善 LLM 任務內部表示方式的直接方法。RAG 使用相關的外部資料有效地增強 LLM 的訓練資料。這種方法可讓 RAG 利用 LLMs 和擷取系統的優勢，產生更準確且明智的回應，其中包含目前和專業知識。

## 向量和內嵌
<a name="understanding-vectors-embeddings"></a>

向量和內嵌是機器學習和自然語言處理的基本概念。*向量*是數學物件，代表同時具有大小和方向的數量。在自然語言處理 (NLP) 的情況下，單字、句子或文件通常在高維度向量空間中以向量表示。另一方面，*嵌入*是一種在低維度向量空間中代表文字或文件等物件的方式，其中向量之間的關係會擷取語意或語法相似性。例如，字詞內嵌可讓具有類似意義的字詞具有類似的向量表示法。這有助於演算法更有效地了解和處理語言。

## 向量資料庫
<a name="understanding-vector-databases"></a>

在生成式 AI 中，*向量資料庫*是存放和管理文件、查詢或其他物件的向量表示法的資料庫。它旨在有效地存放和擷取向量。這支援快速且可擴展的操作，例如語意搜尋和相似性比對。向量資料庫使用特殊資料結構來編製向量索引，例如階層式導航小型世界 (HNSW) 圖形或 K 近鄰 (KNN) 演算法。這些資料結構允許快速最近鄰搜尋，讓您可以快速在資料庫中找到類似的向量。

## 語意搜尋
<a name="understanding-semantic-search"></a>

*語意搜尋*是一種技術，可透過了解查詢的意圖和內容來改善搜尋結果的相關性，而不只是相符的關鍵字。在技術術語中，語意搜尋涉及比較查詢的向量表示法和資料庫中的文件，以尋找最相關的相符項目。不同的擷取策略可用於語意搜尋，包括但不限於：
+ **HNSW** – 以圖形為基礎的資料結構，可整理向量，讓搜尋最接近的鄰近區域更有效率。
+ **KNN** – 根據距離指標尋找最接近查詢向量的 K 向量的演算法，例如餘弦相似性。
+ **餘弦相似性** – 兩個非零向量之間的相似性測量，可測量它們之間角度的餘弦。它通常用於語意搜尋，以比較高維度空間中的向量方向。
+ **位置敏感雜湊 (LSH)** – 一種將類似向量雜湊至具有高機率之相同或鄰近儲存貯體的技術。這允許近似最近鄰搜尋，這可以比在高維度空間中進行精確搜尋更快。