近年來,AI 技術的飛速發展,讓「問答機器人」成為大眾關注的焦點。RAG(檢索增強生成)+ LLM(大型語言模型)技術,更被視為下一代知識引擎的基石,有望顛覆我們獲取資訊的方式。然而,RAG + LLM 真的是一個簡單的「即插即用」工具嗎?它是否能夠像我們期待的那樣,隨時隨地提供精準、全面的答案?
RAG + LLM 的核心概念,是結合 LLM 強大的語言生成能力,以及外部資料庫的知識檢索能力。透過這種方式,LLM 不再只是依賴訓練資料中的知識,而是能夠即時存取外部資訊,產生更精準、更全面的答案。
案例分析:
以醫療領域為例,RAG + LLM 有望協助醫生快速檢索最新的醫學研究、臨床指南和患者病歷,從而提供更精準的診斷和治療方案。
在金融領域,RAG + LLM 可以幫助分析師快速檢索市場數據、財務報告和新聞資訊,從而做出更明智的投資決策。
然而,理想很豐滿,現實卻很骨感。在實際應用中,我們發現 RAG + LLM 的複雜度,遠遠超出我們的想像。它不僅僅是將資料庫連接到 LLM,更涉及到以下幾個關鍵挑戰:
向量空間的建立與維護:
為了讓 LLM 能夠快速找到相關資訊,我們需要將外部資料庫轉換成向量空間。
這個過程需要大量的資料、專業的技術,以及持續的維護。
根據研究,一個高品質的向量空間,可以將 RAG 系統的檢索準確度提高 30% 以上。
在今天的嘗試中,我們使用了 SentenceTransformer 模型,將我們的 rag_she.json 資料集轉換成 768 維的向量空間。
檢索策略的設計:
如何設計有效的檢索策略,確保 LLM 能夠找到最相關的資訊,是一個複雜的問題。
不同的檢索策略,會對 RAG 系統的效能產生重大影響。
例如,使用混合檢索策略(結合關鍵字檢索和向量檢索),可以提高檢索的全面性和準確性。
我們嘗試了使用 FAISS 函式庫建立向量索引,並將其與 Facebook 的 RAG 模型結合使用。
LLM 的適應性:
LLM 需要能夠有效地利用檢索到的資訊,並將其整合到生成的答案中。
這涉及到複雜的自然語言處理和推理能力。
目前,LLM 在處理複雜推理和多輪對話方面,仍然存在一定的挑戰。
我們發現,即使我們提供了正確的檢索結果,LLM 也未必能夠生成流暢、自然的答案。
在我們的實作過程中,我們嘗試使用 Facebook 的 RAG 模型,連接我們自己的資料庫。然而,我們發現模型始終無法正確載入我們的資料,而是不斷嘗試載入預設的 wiki_dpr 資料集。這讓我們意識到,RAG + LLM 的複雜度,可能遠遠超出我們的預期。
熱門名詞:
向量嵌入(Vector Embedding):
將文字、圖像等資料轉換成高維空間中的向量。
向量索引(Vector Index):
用於快速搜索相似向量的資料結構。
例如,FAISS、Annoy 和 HNSW。
混合檢索(Hybrid Retrieval):
結合關鍵字檢索和向量檢索的檢索策略。
例如,使用 BM25 進行關鍵字檢索,使用 FAISS 進行向量檢索。