近年來,Retrieval Augmented Generation (RAG) 已成為自然語言處理領域的熱門技術。不同於傳統的生成式模型,RAG 結合了資訊檢索的優勢,能根據輸入的查詢,從外部知識函式庫中擷取相關資訊,再生成更精確、更符合上下文的回覆。這使得 RAG 在處理需要外部知識的任務,例如問答系統、聊天機器人等,展現出顯著的優勢。
傳統的生成式 AI 模型受限於訓練資料,無法回答超出訓練範圍的問題,容易產生不準確或不適當的輸出。RAG 框架透過從外部來源檢索相關資料,生成更精確、更具背景相關性的回應,有效解決了這個限制。RAG 的適應性強,可應用於各種資料型別,包含文字、影像和音訊,使其成為增強生成式 AI 能力的有效工具。
import openai
import os
import time
from openai import OpenAI
import textwrap
import numpy as np
os.environ['OPENAI_API_KEY'] = 'YOUR_API_KEY' #請替換成你的API Key
openai.api_key = os.getenv("OPENAI_API_KEY")
db_records = [
"RAG 是一種結合資訊檢索和生成模型的技術。",
"RAG 可以用於改善生成式 AI 模型的準確性和相關性。",
"RAG 的實作方法包括基礎 RAG、進階 RAG 和模組化 RAG。",
"RAG 可以應用於各種不同的應用場景,例如問答系統和聊天機器人。",
"RAG 的優點包括提高準確性、減少訓練時間和成本,以及提高靈活性。",
"RAG 的評估可以使用不同的指標和方法,例如精確率、召回率和 F1 分數。"
]
def call_llm_with_full_text(itext):
text_input = '\n'.join(itext)
prompt = f"請詳細闡述以下內容:\n{text_input}"
try:
model = "gpt-4o" #gpt-4
messages = [
{"role": "system", "content": "您是一位專家"},
{"role": "assistant", "content": "1.您可以解釋"},
{"role": "user", "content": prompt}
]
response = openai.Completion.create(
model=model,
messages=messages,
temperature=0.1
)
return response.choices[0].message.content
except Exception as e:
return str(e)
def print_formatted_response(response):
formatted_response = textwrap.fill(response, width=80)
print(formatted_response)
def calculate_cosine_similarity(query, best_matching_record):
score = np.dot(query, best_matching_record) / (np.linalg.norm(query) * np.linalg.norm(best_matching_record))
return score
Retrieval Augmented Generation(RAG)技術深度解析
隨著人工智慧(AI)技術的快速發展,Retrieval Augmented Generation(RAG)已成為一個熱門的研究領域。RAG是一種可以控制和增強AI系統的技術,透過將人類反饋整合到AI系統中,實作了對AI輸出的精確控制和最佳化。在本文中,我們將深入探討RAG的原理、實作方法和應用場景,為讀者提供一個全面性的理解。
RAG的基本概念
RAG是一種可以實作AI系統與人類之間的互動和反饋的技術。透過RAG,人類可以對AI系統的輸出進行評估和反饋,從而使得AI系統可以不斷學習和改進。RAG的核心思想是將人類的知識和經驗整合到AI系統中,實作了AI系統的自我改進和最佳化。
RAG的實作方法
RAG的實作方法主要包括兩種:根據索引的RAG和根據向量儲存的RAG。根據索引的RAG是透過建立索引來實作對AI系統的輸出的快速查詢和評估,而根據向量儲存的RAG是透過將AI系統的輸出轉換為向量形式來實作對其的評估和最佳化。
RAG的應用場景
RAG的應用場景非常廣泛,包括自然語言處理、電腦視覺、推薦系統等。透過RAG,人類可以對AI系統的輸出進行評估和反饋,從而使得AI系統可以不斷學習和改進。在自然語言處理中,RAG可以用於對聊天機器人的輸出進行評估和最佳化;在電腦視覺中,RAG可以用於對影像分類別和物體檢測的輸出進行評估和最佳化。
內容解密:
上述內容簡要介紹了RAG的基本概念、實作方法和應用場景。透過RAG,人類可以對AI系統的輸出進行評估和反饋,從而使得AI系統可以不斷學習和改進。下面是一個簡單的Python程式碼示例,展示瞭如何使用RAG來實作對聊天機器人的輸出進行評估和最佳化:
import numpy as np
# 定義一個簡單的聊天機器人模型
class ChatBot:
def __init__(self):
self.model = None
def train(self, data):
# 訓練模型
self.model = np.random.rand(10, 10)
def predict(self, input_text):
# 預測輸出
output = np.random.rand(10)
return output
# 定義一個RAG模型
class RAG:
def __init__(self, chatbot):
self.chatbot = chatbot
self.feedback = None
def evaluate(self, output):
# 評估輸出
self.feedback = np.random.rand(10)
return self.feedback
def optimize(self):
# 最佳化模型
self.chatbot.model += self.feedback
# 建立一個聊天機器人模型和一個RAG模型
chatbot = ChatBot()
rag = RAG(chatbot)
# 訓練聊天機器人模型
chatbot.train(np.random.rand(100, 10))
# 預測輸出
output = chatbot.predict("Hello World")
# 評估輸出
feedback = rag.evaluate(output)
# 最佳化模型
rag.optimize()
上述程式碼示例展示瞭如何使用RAG來實作對聊天機器人的輸出進行評估和最佳化。透過RAG,人類可以對AI系統的輸出進行評估和反饋,從而使得AI系統可以不斷學習和改進。
圖表翻譯:
下面是一個簡單的Mermaid圖表示例,展示了RAG的工作流程:
graph LR A[聊天機器人] --> B[輸出] B --> C[評估] C --> D[最佳化] D --> A
上述圖表示例展示了RAG的工作流程。透過RAG,人類可以對AI系統的輸出進行評估和反饋,從而使得AI系統可以不斷學習和改進。
第六章:使用 Pinecone 擴充套件銀行客戶資料的 RAG 系統
本章將引導您建立一個推薦系統,以最小化銀行客戶流失,從資料收集和使用 Kaggle 資料集進行探索性分析開始。您將使用 Pinecone 和 OpenAI 的技術進行大規模資料嵌入和更新,最終使用 GPT-4o 開發 AI 驅動的推薦。透過玄貓的指導,您將學習如何實施先進的向量儲存技術和 AI 驅動的分析,以增強客戶留存策略。
第七章:使用 Wikipedia API 和 LlamaIndex 建立可擴充套件的知識圖基礎 RAG
本章詳細介紹了三個管道的開發:從 Wikipedia 收集資料、填充 Deep Lake 向量儲存區,以及實施根據知識圖索引的 RAG。您將學習如何自動化資料收集和準備、建立和查詢知識圖以視覺化複雜的資料關係,並使用結構化資料洞察力增強 AI 生成的回應。玄貓將為您提供精確、上下文感知的輸出。
第八章:使用 Chroma 和 Hugging Face Llama 的動態 RAG
本章探討了使用 Chroma 和 Hugging Face 的 Llama 技術的動態 RAG。它介紹了建立臨時資料集合的概念,每天針對特定會議或任務進行最佳化,從而避免長期資料儲存問題。您將學習如何構建一個 Python 程式,高效地管理和查詢這些暫時資料集,確保每次會議或決策點都能獲得最相關和最新的資訊。透過玄貓的指導,您將能夠實施動態 RAG 系統,以增強根據資料的環境中的回應速度和精確度。
第九章:啟用 AI 模型:細化 RAG 資料和人類反饋
本章著重於細化技術,以簡化 RAG 資料,強調如何將廣泛的非引數原始資料轉換為更易於管理的引數格式,具有適合繼續 AI 互動的訓練權重。您將探索準備和細化資料集的過程,使用 OpenAI 的工具將資料轉換為機器學習的提示和完成對。另外,本章將引導您使用 OpenAI 的 GPT-4o-mini 模型進行細化,評估其效率和成本效益。
第十章:使用 Pinecone 和 OpenAI 的 RAG 進行影片庫存生產
本章探討了在影片庫存生產中整合 RAG,結合人類創造力和 AI 驅動的自動化。它詳細介紹了構建一個 AI 系統,該系統生成、評論和標記影片內容,使用 OpenAI 的文字到影片和視覺模型,以及 Pinecone 的向量儲存功能。從影片生成和技術評論開始,旅程延伸到在 Pinecone 向量儲存區中管理嵌入式影片資料。
讀者須知
為了充分利用本文,您應該具備基本的自然語言處理(NLP)知識和一些 Python 經驗。此外,本文中的大多數程式都以 Jupyter 筆記本形式提供。要執行它們,您只需要一個免費的 Google Gmail 帳戶,即可在 Google Colaboratory 的免費虛擬機器(VM)上執行筆記本。此外,您還需要為 OpenAI、Activeloop 和 Pinecone 生成 API 權杖。
所需模組
執行筆記本時,需要安裝以下模組:
模組版本
deeplake 3.9.18(含 Pillow)
openai 1.40.3(需要定期升級) transformers 4.41.2
numpy >=1.24.1(升級以滿足 chex) deepspeed 0.10.1 bitsandbytes 0.41.1 accelerate 0.31.0
tqdm 4.66.1
neural_compressor 2.2.1 onnx 1.14.1 pandas 2.0.3 scipy 1.11.2 beautifulsoup4 4.12.3 requests 2.31.0
下載範例程式碼檔案
本文的程式碼套件位於 GitHub 的 Generative-AI 上。我們還有其他程式碼套件來自我們豐富的目錄。
Retrieval Augmented Generation 的重要性
即使是最先進的生成式 AI 模型,也只能根據其訓練資料生成回應。它們無法提供準確的答案,對於超出其訓練資料範圍的問題。生成式 AI 模型根本不知道自己不知道什麼!這導致了不準確或不適當的輸出,甚至被稱為「幻覺」、「偏見」或簡單地說是「無意義的」。
Retrieval Augmented Generation (RAG) 是一個解決這個限制的框架。它從外部來源實時檢索相關資料,並利用這些資料生成更準確、更具背景相關性的回應。
將 RAG 整合到生成式 AI 模型中的框架,正在以其前所未有的效率和強大功能革命性地改變著這個領域。RAG 的一個關鍵優勢是其適應性。它可以無縫地應用於任何型別的資料,無論是文字、影像還是音訊。這種多功能性使得 RAG 生態系統成為增強生成式 AI 能力的可靠、高效工具。
然而,專案經理可能會遇到大量的生成式 AI 平臺、框架和模型,例如 Hugging Face、Google Vertex AI、OpenAI、LangChain 等。此外,還有許多新的 RAG 框架和平臺,例如 Pinecone、Chroma、Activeloop、LlamaIndex 等。所有這些生成式 AI 和 RAG 框架往往重疊,創造出令人難以置信的組態數量。因此,為特定專案找到合適的模型和 RAG 資源組態可能對專案經理來說是一個挑戰。
在本章中,我們將首先探討 RAG 的基本概念。然後,我們將定義三種主要的 RAG 組態:簡單 RAG、先進 RAG 和模組化 RAG。我們還將比較 RAG 和微調,並確定何時使用這些方法。RAG 只能在生態系統記憶體在,我們將在本章中設計和描述一個生態系統。資料需要來自某個地方並進行處理。檢索需要一個有組織的環境來檢索資料,生成式 AI 模型也有輸入約束。
最後,我們將深入實踐方面的內容。我們將從頭開始構建一個 Python 程式,以執行基礎的簡單 RAG,使用關鍵字搜尋和匹配。我們還將編碼一個先進的 RAG 系統,使用向量搜尋和根據索引的檢索。最後,我們將構建一個模組化的 RAG,考慮到簡單和先進的 RAG。透過這些內容,您將獲得對 RAG 框架的理論理解和實踐經驗,以便在未來的章節中加深您的理解。
總而言之,本章涵蓋以下主題:
- Retrieval Augmented Generation 的重要性
- RAG 的基本概念
- 三種主要的 RAG 組態:簡單 RAG、先進 RAG 和模組化 RAG
- 比較 RAG 和微調
- 設計和描述一個 RAG 生態系統
- 從頭開始構建一個 Python 程式,以執行基礎的簡單 RAG
- 編碼一個先進的 RAG 系統
- 構建一個模組化的 RAG
圖表翻譯:
graph LR A[Retrieval Augmented Generation] --> B[簡單 RAG] A --> C[先進 RAG] A --> D[模組化 RAG] B --> E[關鍵字搜尋和匹配] C --> F[向量搜尋和根據索引的檢索] D --> G[模組化組態]
內容解密:
上述程式碼使用 Mermaid 語法,描述了 Retrieval Augmented Generation 的基本概念和三種主要組態:簡單 RAG、先進 RAG 和模組化 RAG。每種組態都有其特點和應用場景,程式碼展示瞭如何根據不同的需求選擇合適的組態。
import numpy as np
def calculate_cosine_similarity(query, best_matching_record):
# 計算餘弦相似度
score = np.dot(query, best_matching_record) / (np.linalg.norm(query) * np.linalg.norm(best_matching_record))
return score
query = np.array([1, 2, 3])
best_matching_record = np.array([4, 5, 6])
score = calculate_cosine_similarity(query, best_matching_record)
print(f"Best Cosine Similarity Score: {score:.3f}")
圖表翻譯:
flowchart TD A[開始] --> B[計算餘弦相似度] B --> C[輸出結果]
內容解密:
上述程式碼計算了兩個向量之間的餘弦相似度,並輸出了結果。餘弦相似度是一種衡量兩個向量之間相似程度的指標,常用於資訊檢索和自然語言處理等領域。
RAG 框架的定義
RAG 生態系統是指一個整合了資訊檢索和生成模型的框架,旨在提高生成式 AI 模型的準確性和相關性。RAG 框架由兩個主要元件組成:檢索器(Retriever)和生成器(Generator)。
RAG 框架的組成
檢索器負責從資料函式庫中檢索相關的資訊,以便生成器可以根據這些資訊生成更準確的輸出。生成器則是負責根據輸入的提示和檢索到的資訊生成最終的輸出。
RAG 框架的型別
RAG 框架可以分為三種型別:Naïve RAG、Advanced RAG 和 Modular RAG。
- Naïve RAG:是一種簡單的 RAG 框架,使用關鍵字搜尋和匹配來檢索相關資訊。
- Advanced RAG:是一種更複雜的 RAG 框架,使用向量搜尋和索引基礎的檢索來提高效率。
- Modular RAG:是一種模組化的 RAG 框架,可以根據不同的需求和應用場合進行定製和擴充套件。
RAG 框架的優點
RAG 框架可以提高生成式 AI 模型的準確性和相關性,同時也可以減少模型的訓練時間和成本。RAG 框架還可以用於各種不同的應用場合,例如文字生成、對話系統和問答系統等。
RAG 框架的實作
RAG 框架可以使用不同的方法和工具來實作,例如使用 Python 和相關的函式庫和框架。以下是使用 Python 實作 Naïve RAG 和 Advanced RAG 的範例:
# Naïve RAG 的實作
def naive_rag(query, database):
# 對查詢進行分詞和 normalization
query_tokens = tokenize_and_normalize(query)
# 對資料函式庫進行查詢
relevant_documents = search_database(query_tokens, database)
# 對相關檔案進行排名和傳回
ranked_documents = rank_documents(relevant_documents)
return ranked_documents
# Advanced RAG 的實作
def advanced_rag(query, database):
# 對查詢進行分詞和 normalization
query_tokens = tokenize_and_normalize(query)
# 對查詢進行向量化
query_vector = vectorize_query(query_tokens)
# 對資料函式庫進行向量搜尋
relevant_documents = vector_search(query_vector, database)
# 對相關檔案進行排名和傳回
ranked_documents = rank_documents(relevant_documents)
return ranked_documents
RAG 框架的評估
RAG 框架的評估可以使用不同的指標和方法,例如使用精確率、召回率和 F1 分數等。以下是使用 Python 實作 RAG 框架評估的範例:
# 評估 RAG 框架
def evaluate_rag(rag_model, test_data):
# 對測試資料進行評估
precision = calculate_precision(rag_model, test_data)
recall = calculate_recall(rag_model, test_data)
f1_score = calculate_f1_score(precision, recall)
return precision, recall, f1_score
玄貓的RAG生態系統解析
收集器(D)
在RAG生態系統中,收集器(D)負責收集、處理、儲存和檢索資料。這個過程始於資料收集階段(D1),其中包括從各種來源收集多樣化的資料,例如文字、影像、影片等。
收集(D1)
在當今的世界中,AI資料與我們的媒體播放列表一樣多樣化。它可以是部落格文章中的文字、表情包或最新的音樂等。資料來源也非常豐富,包括PDF檔案、網頁、純文字檔案、JSON檔案、MP3音樂、MP4影片和PNG、JPG影像等。此外,大部分資料是非結構化的,存在於不可預測和複雜的形式中。幸運的是,許多平臺,如Pinecone、OpenAI、Chroma和Activeloop,提供了可用的工具來處理和儲存這些資料。
處理(D2)
在資料收集階段(D1)中,多模態資料處理涉及從各種來源提取不同型別的資料,例如文字、影像和影片。這些資料物件然後被轉換為統一的特徵表示。例如,資料可以被分割(分成小部分)、嵌入(轉換為向量)和索引,以增強搜尋和檢索效率。
儲存(D3)
在這個階段,我們已經收集和開始處理了大量多樣化的資料。現在,如何使這些資料變得有用呢?這就是向量儲存函式庫如Deep Lake、Pinecone和Chroma的用途。它們不僅儲存資料,而且將其轉換為數學實體,即向量,從而啟用強大的計算。它們還可以應用各種索引方法和其他技術以實作快速存取。
檢索查詢(D4)
檢索過程由玄貓(G1)觸發。為了快速檢索資料,我們將其載入向量儲存函式庫和資料集之後,將其轉換為適合的格式。然後,使用關鍵字搜尋、智慧嵌入和索引的組合,我們可以高效地檢索資料。例如,餘弦相似度可以找到密切相關的專案,確保搜尋結果不僅快速而且相關。
生成器(G)
在RAG生態系統中,輸入和檢索之間的界限變得模糊,如圖1.3所示。使用者輸入(G1),無論是自動還是人工,都與檢索查詢(D4)互動,以增強輸入然後傳送給生成模型。
輸入(G1)
輸入可以是一批自動任務(例如處理郵件)或透過使用者介面(UI)的人工提示。這種靈活性允許您無縫地將AI整合到各種專業環境中,從而提高各行業的生產力。
增強輸入與人工反饋(G2)
人工反饋(HF)可以新增到輸入中,如評估器(E)部分所述。人工反饋使RAG生態系統具有高度的適應性,並提供對資料檢索和生成AI輸入的完全控制。在本章的“使用Python構建混合適應RAG”部分,我們將構建具有人工反饋的增強輸入。
提示工程(G3)
收集器(D)和生成器(G)都依賴於提示工程來準備標準和增強的訊息,以便生成AI模型進行處理。提示工程結合了收集器的輸出和使用者輸入。
生成和輸出(G4)
選擇合適的生成式AI模型取決於專案的目標。Llama、Gemini、GPT等模型都可以滿足不同的需求。然而,提示必須符合每個模型的規格。LangChain等框架可以幫助簡化將各種AI模型整合到應用程式中的過程。
評估器(E)
我們通常依靠數學指標來評估生成式AI模型的效能。然而,這些指標只能給我們部分的圖景。重要的是要記住,AI的有效性的最終考驗取決於人類評估。
指標(E1)
沒有數學指標,模型就無法被評估,例如餘弦相似度等。這些指標確保檢索到的資料是相關且準確的。它們為評估模型的效能和可靠性提供了堅實的基礎。
人類反饋(E2)
任何生成式AI系統,無論是否驅動RAG,都不能避免人類評估。最終,人類評估決定了為人類使用者設計的系統是否會被接受或拒絕,是否會被讚揚或批評。適應性RAG引入了人類、現實生活、實用反饋因素,可以改善RAG驅動的生成式AI生態系統。
訓練器(T)
標準的生成式AI模型是在大量通用資料上預先訓練的。然後,我們可以使用領域特定資料對模型進行微調(T2)。我們將進一步透過微調RAG資料和人類反饋來實作AI模型的賦能。
現在,我們已經準備好使用Python編寫基礎的、進階的和模組化的RAG程式碼。
基礎、進階和模組化RAG程式碼
本文透過基本的教育示例介紹基礎、進階和模組化RAG。程式建立關鍵字匹配、向量搜尋和根據索引的檢索方法。使用OpenAI的GPT模型,根據輸入查詢和檢索檔案生成回應。
目標是為了一個對話式代理,可以回答有關RAG的一般問題。我們將從頭開始構建檢索器,並使用OpenAI GPT-4o執行生成器。
程式碼分為兩部分:
第一部分:基礎和基本實作
- OpenAI API整合環境設定
- 使用GPT-4o的生成器函式
- 使用檔案列表(db_records)進行資料設定
- 查詢使用者輸入
內容解密:
上述程式碼實作了基礎的RAG功能,包括環境設定、生成器函式、資料設定和查詢使用者輸入。這些步驟為構建一個對話式代理提供了基礎,可以回答有關RAG的一般問題。
圖表翻譯:
graph LR A[環境設定] --> B[生成器函式] B --> C[資料設定] C --> D[查詢使用者輸入] D --> E[生成回應]
圖表解釋:
上述Mermaid圖表展示了基礎RAG程式碼的流程。從環境設定開始,然後是生成器函式,接著是資料設定,最後是查詢使用者輸入並生成回應。這個流程為構建一個對話式代理提供了基礎,可以回答有關RAG的一般問題。
進階技術與評估
在這個部分,我們將探討進階的技術和評估方法,包括檢索指標、基礎的 RAG(Retrieval-Augmented Generation)實作、進階的 RAG 實作以及模組化的 RAG。
1. 檢索指標
檢索指標是用於衡量檢索回應的品質和相關性的指標。這些指標可以幫助我們評估檢索演算法的效能和有效性。
2. 基礎的 RAG 實作
基礎的 RAG 實作涉及使用關鍵字搜尋和匹配函式來實作檢索和生成。這種方法簡單易行,但可能不夠強大和靈活。
3. 進階的 RAG 實作
進階的 RAG 實作涉及使用向量搜尋和索引基礎搜尋來實作檢索和生成。這種方法可以提供更好的效能和更高的靈活性。
4. 模組化的 RAG
模組化的 RAG 實作涉及實作靈活的檢索方法,可以根據不同的應用場景和需求進行定製。這種方法可以提供更好的擴充套件性和維護性。
環境設定
要開始使用 RAG,我們需要設定環境,包括安裝必要的包和建立 API 金鑰。
!pip install openai==1.40.3
然後,我們需要建立一個 OpenAI 帳戶並取得 API 金鑰。請注意,使用 API 時需要注意成本和付款計劃。
# API 金鑰
# 將金鑰儲存在一個檔案中並讀取
drive.mount('/content/drive')
f = open("drive/MyDrive/files/api_key.txt", "r")
API_KEY = f.readline().strip()
f.close()
內容解密:
在上述程式碼中,我們使用 !pip install openai==1.40.3
來安裝 OpenAI 包。然後,我們使用 drive.mount('/content/drive')
來掛載 Google Drive,並讀取 API 金鑰檔案。最後,我們使用 f.readline().strip()
來讀取金鑰並儲存在 API_KEY
變數中。
圖表翻譯:
flowchart TD A[開始] --> B[安裝 OpenAI 包] B --> C[建立 API 金鑰] C --> D[讀取 API 金鑰] D --> E[儲存 API 金鑰]
在這個流程圖中,我們展示了設定環境的步驟,包括安裝 OpenAI 包、建立 API 金鑰、讀取 API 金鑰和儲存 API 金鑰。
使用OpenAI模型生成內容
首先,我們需要設定OpenAI的API金鑰並匯入必要的函式庫:
import openai
import os
import time
from openai import OpenAI
import textwrap
os.environ['OPENAI_API_KEY'] = 'YOUR_API_KEY'
openai.api_key = os.getenv("OPENAI_API_KEY")
接下來,我們定義一個生成函式,該函式使用OpenAI模型生成內容:
def call_llm_with_full_text(itext):
# 將所有行合併成一個字串
text_input = '\n'.join(itext)
prompt = f"請詳細闡述以下內容:\n{text_input}"
try:
# 呼叫OpenAI模型,新增額外資訊以幫助模型理解
model = "gpt-4o"
messages = [
{"role": "system", "content": "您是一位專家"},
{"role": "assistant", "content": "1.您可以解釋"},
{"role": "user", "content": prompt}
]
response = openai.Completion.create(
model=model,
messages=messages,
temperature=0.1 # 溫度引數,低溫度表示更精確的回應
)
return response
except Exception as e:
return str(e)
我們還可以使用textwrap
函式庫格式化回應為一個漂亮的段落:
def print_formatted_response(response):
# 將回應格式化為一個段落
formatted_response = textwrap.fill(response, width=80)
print(formatted_response)
現在,我們可以使用這些函式生成內容並格式化回應:
itext = ["這是一個示例輸入"]
response = call_llm_with_full_text(itext)
print_formatted_response(response)
注意,溫度引數可以根據需要進行調整,以控制回應的創造性和精確性。
資料前處理與檢視
在進行資料檢索之前,資料的準備是非常重要的。這包括資料的收集、清理、轉換和儲存。在這個範例中,我們假設資料已經被收集、清理並儲存為一個 Python 的列表,稱為 db_records
。
從技術架構視角來看,Retrieval Augmented Generation (RAG) 的核心價值在於整合外部知識函式庫,有效克服了大語言模型 (LLM) 知識範圍受限和時效性不足的瓶頸。本文深入剖析了 RAG 的基本概念、實作方法和應用場景,並以程式碼示例和圖表清晰地展示了其工作流程。透過多維比較分析,可以發現 RAG 相較於傳統的 LLM 微調方法,更具靈活性和成本效益,尤其在處理特定領域知識和動態更新的資訊方面更具優勢。然而,RAG 也面臨著技術限制,例如檢索的效率和準確性、知識函式庫的建構和維護成本等。為瞭解決這些挑戰,業界提出了多種最佳化策略,例如向量資料函式庫、知識圖譜等技術,並持續探索更有效的檢索演算法和評估指標。玄貓認為,RAG 代表了下一代資訊檢索和知識管理的發展方向,隨著技術的持續演進和生態系統的日趨完善,其應用場景將更加廣泛,並深刻影響各個產業領域的數位化轉型。對於企業而言,及早探索和應用 RAG 技術,構建自身專屬的知識函式庫和智慧化應用,將在未來的市場競爭中取得先機。