上一篇文章介紹了LLM,LLM的知識(shí)僅限于其所訓(xùn)練的數(shù)據(jù)。想讓LLM了解特定領(lǐng)域的知識(shí)或?qū)S袛?shù)據(jù)需要進(jìn)行特定的處理,目前有三種方式:
1、RAG
2、使用私有數(shù)據(jù)對(duì)LLM進(jìn)行微調(diào)(Fine-Tuning)
3、將以上二者結(jié)合
今天這篇文章先介紹RAG
RAG:是一種將數(shù)據(jù)發(fā)送給LLM之前從數(shù)據(jù)中找出相關(guān)信息并將其注入Prompt的方法。這樣LLM將獲得相關(guān)信息,并能夠使用這些信息進(jìn)行回復(fù)(降低幻覺(jué)的可能性)
可以使用的信息檢索方式有很多,最流行的方式無(wú)非就是以下三種:
1、全文(關(guān)鍵詞)搜索。此方法使用TF-IDF和BM25等技術(shù),通過(guò)將查詢中的關(guān)鍵字(例如:輸入內(nèi)容)與文檔數(shù)據(jù)庫(kù)進(jìn)行匹配來(lái)搜索文檔。它根據(jù)文檔中這些關(guān)鍵詞的頻率和相關(guān)性對(duì)結(jié)果進(jìn)行排名
2、向量搜索。又稱語(yǔ)義搜索。實(shí)用嵌入模型將文本文檔轉(zhuǎn)換為數(shù)字向量。然后根據(jù)查詢向量和文檔向量之間的余弦相似度或 其他相似度/距離度量 來(lái)查找和排序文檔,從而捕獲更深層的語(yǔ)義含義
3、混合。結(jié)合多種搜索方式(例如:全文搜索+向量搜索),可以提高搜索的有效性
了解了以上知識(shí)后,接下來(lái)詳細(xì)介紹下RAG的實(shí)用流程
RAG的流程分為兩個(gè)階段:索引和檢索
在索引階段,對(duì)文檔進(jìn)行預(yù)處理,以便在檢索階段進(jìn)行有效搜索。
索引過(guò)程可能因使用的信息檢索方法而異。
對(duì)于向量搜索,通常涉及清理文檔、用其他數(shù)據(jù)和元數(shù)據(jù)豐富文檔、將其拆分成為較小的片段(分塊)、嵌入這些片段、存儲(chǔ)在嵌入存儲(chǔ)(向量數(shù)據(jù)庫(kù))。
索引階段通常離線進(jìn)行,并不需要最終用戶等待其完成。如果用戶希望上傳其自定義文檔,以便LLM能夠訪問(wèn)他們,在這種情況下索引應(yīng)在線執(zhí)行并成為主要應(yīng)用程序的一部分。
檢索階段通常在線發(fā)生,當(dāng)用戶提交需要使用索引文檔來(lái)回答的問(wèn)題時(shí)。
此過(guò)程因使用的信息檢索方法而異。對(duì)于向量搜索,通常涉及嵌入用戶的查詢并在嵌入存儲(chǔ)(向量數(shù)據(jù)庫(kù))執(zhí)行相似性搜索,然后將相關(guān)片段(原始文檔的片段)注入Prompt并發(fā)送到LLM