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

檢索階段通常在線發(fā)生,當用戶提交需要使用索引文檔來回答的問題時。
此過程因使用的信息檢索方法而異。對于向量搜索,通常涉及嵌入用戶的查詢并在嵌入存儲(向量數(shù)據(jù)庫)執(zhí)行相似性搜索,然后將相關片段(原始文檔的片段)注入Prompt并發(fā)送到LLM
