每天的專案會同步到 GitLab 上,可以前往 GitLab 查看。
有興趣的朋友歡迎留言 or 來信討論,我的信箱是 nickchen1998@gmail.com。
RAG 是一種基於檢索式生成(Retrieval-Augmented Generation)的模型,它是一種結合了檢索式和生成式的語言模型。
RAG 模型的主要目的是解決傳統生成式模型的問題,例如生成式模型在生成長文本時容易出現重複、無意義的問題。
下面簡單列出 RAG 時常會被應用的場景:
RAG 是 Retrieval-Augmented Generation 的縮寫,它代表了一種將信息檢索(Retrieval)與文本生成(Generation)結合起來的技術,用於提高自然語言處理系統的性能。
檢索指的是從一個大型的外部數據庫或知識庫中找到與用戶查詢相關的資料。這些資料可能包括文章、文件、數據庫條目,甚至是網頁內容。
在 RAG 系統中,檢索是第一步。當用戶輸入一個查詢時,系統不僅依賴於內部預先訓練的知識來回答問題,而是主動地去搜索相關的外部資源來獲取最新、最相關的信息。
這個步驟非常關鍵,因為檢索到的資料質量將直接影響到生成的回應質量。檢索技術通常依賴於像 TF-IDF、BM25、或更先進的深度學習模型,如基於 BERT 的檢索模型。
在 RAG 中,"Augmentation" 代表的是一種增強過程,即利用檢索到的資料來增強或補充生成模型的輸出。
檢索到的資料被用來輔助文本生成模型,這些資料可以作為模型的附加上下文,讓模型更準確地理解用戶的查詢背景,並生成更合適的回應。
增強的過程不僅限於提供額外的信息,還可以是對生成模型的一種約束,防止它生成與事實不符的內容。
生成是指語言模型根據檢索到的資料和用戶查詢來創建自然語言文本的過程。
在這個階段,生成模型(如 GPT-3、GPT-4)會結合檢索到的信息,通過一系列的計算和預測,產生一個符合語法和語義的答案。
與傳統的僅基於生成的模型相比,RAG 模型的生成部分更加強調與現實世界的數據和信息保持一致。這使得生成的回應不僅能夠靈活表達,而且能夠更好地依據真實資料來回答問題。
下面附上基本的 RAG 流程:
項目 | RAG (Retrieval-Augmented Generation) | Fine-tuning |
---|---|---|
概念 | 結合檢索和生成,利用外部資料回答問題。 | 針對特定任務進行模型再訓練。 |
適用場景 | 需要最新資料的動態領域,如新聞、技術問答。 | 專業領域的應用,如醫學、法律分析。 |
優點 | 提供時效性強的回答,適應多領域。 | 在特定任務上表現優異。 |
缺點 | 系統複雜,依賴外部資料,可能有延遲。 | 需大量數據,更新困難。 |
資源消耗 | 高,尤其在檢索和生成階段。 | 訓練期間高,部署後資源需求較低。 |
模型更新 | 不需頻繁更新,只需保持資料庫最新。 | 需定期重新 Fine-tune 保持模型更新。 |
今天我們簡單介紹了一下甚麼是 RAG 以及他的概念,而我們已經有了 LangChain 以及 embedding 的基本知識,接著我們就要針對如何建立自己的向量資料庫
來做說明,明天我們會介紹一些 LangChain 已經協助我們建立好的解檔器。