每天的專案會同步到 GitLab 上,可以前往 GitLab 查看。
有興趣的朋友歡迎留言 or 來信討論,我的信箱是 nickchen1998@gmail.com。
這次鐵人賽要來和大家分享的是最近火紅的生成式 AI,我們主要會使用 LangChain 這個套件來對一些大型語言模型 (LLM) 來進行操作,並同時介紹 RAG 這
個觀念,讓大家可以更了解生成式 AI 的運作方式。並於最後的幾天,會實際帶領大家使用 LangChain 搭配 RAG 的方式,來設計出一個簡易的問答機器人。
本次會使用到的資源除了程式碼跟套件會放置於本地之外,其他的都會採用雲端服務,比方說語言模型會直接串接 Hugging Face 的 API,而向量資料庫的部分
則會使用 Pinecone 這個服務,最大化的節省了想參與的朋友的本地資源。
RAG(Retrieval-Augmented Generation)是一種結合檢索(Retrieval)和生成(Generation)技術的混合方法,主要應用於自然語言處理(NLP)領域。它的目的是通過檢索相關信息來輔助語言模型的生成過程,以提高生成文本的準確性和相關性。RAG 通常用於需要豐富背景知識和高精確度回答的任務,例如問答系統、對話系統和文檔摘要等。
RAG 的主要特點和優勢包括:
RAG 的運作過程大致如下:
RAG 技術通過結合檢索和生成的優勢,克服了單一生成模型依賴訓練數據的局限性,提供了更為準確和上下文相關的生成結果。
LangChain 是一個開源框架,旨在幫助開發者更容易地構建以語言模型為核心的應用程式。該框架提供了許多工具和組件,使得與大型語言模型進行整合和溝通
變得更加簡便。
LangChain 的主要特點包括:
LangChain 的目標是通過這些功能和特點,使開發者能夠更高效地利用語言模型,構建更智能、更互動的應用程式。
相信大家應該對於 OpenAI 這間公司不陌生,本次的鐵人賽會使用到 OpenAI 的 API 服務,不論是語言模型或是像量計算都會使用到,
因此需要申請一組 API KEY,可以進入 這個網址 並依照下圖點選生成屬於自己的 API Key:
生成的 Key 只會出現在生成的當下,請妥善保存,如果遺失了則需要重新申請,並且不要將 Key 洩漏給他人,以免造成不必要的損失。
本次專案當中會使用到 pydantic-settings 這個套件來協助管理環境變數,讓我們可以透過取得物件的方式來快速進行一些資料的操作,下方附上範例程式碼:
使用前記得:poetry add pydantic-settings
from pathlib import Path
from pydantic_settings import BaseSettings, SettingsConfigDict
BASE_DIR = Path(__file__).resolve().parent
class EnvSettings(BaseSettings):
OPENAI_API_KEY: str = None
model_config = SettingsConfigDict(
env_file=BASE_DIR / '.env',
env_file_encoding='utf-8',
extra='ignore'
)
明天我們就會帶領大家一步一步把 LangChain 與 Hugging Face 上的一些語言模型串接起來,並且會介紹 LangChain 當中的 Chain 該如何進行操作。
這個如果要當成客服系統,不知道使用API,價錢會不會很貴?
具體還是要看使用量,使用像是 OpenAI 這種商業用的 API 的話當你使用量上來後那個數字可能會是很可觀的,當服務慢慢起來後,可以再依照實際的使用量評估是不是要改為自己部署、fine tune自己的模型,但初期都還是使用外部資源會快些。
當然如果是想跟著範例跑的話,應該是不用太擔心,我目前儲值了 100 塊台幣已經用了半年是還沒用完。
這也太便宜了吧...
自己部署難道不需要用到OpenAI的Key了嗎?
因為之前一直想弄一套客服系統,但是考慮到使用者多的話,肯定破產
您的意思是之後也可以變成免費的嗎?
謝謝您的文章
如果你有辦法自己 fine tune 出想要的模型的話,你可能就需要負擔自己的機器成本、電費等等,也不能說等於免費,最佳解還是要找個平衡點