近年來,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執行生成器。

程式碼分為兩部分:

第一部分:基礎和基本實作

  1. OpenAI API整合環境設定
  2. 使用GPT-4o的生成器函式
  3. 使用檔案列表(db_records)進行資料設定
  4. 查詢使用者輸入

內容解密:

上述程式碼實作了基礎的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 技術,構建自身專屬的知識函式庫和智慧化應用,將在未來的市場競爭中取得先機。