RAG全系列之【RAG 概念掃盲】

0 評論 805 瀏覽 7 收藏 8 分鐘

RAG 作為打造個(gè)性化大模型應(yīng)用的基礎(chǔ)流程正持續(xù)火爆,不少項(xiàng)目已推向用戶。那 RAG 究竟是什么?簡單說,就是讓大模型基于特定知識生成答案,而非泛泛內(nèi)容。本文將分享 RAG 的實(shí)戰(zhàn)經(jīng)驗(yàn)與應(yīng)對這些挑戰(zhàn)的思路,值得探索大模型應(yīng)用者一讀。

目前自己的項(xiàng)目就是 RAG 類的,目前已經(jīng)推向用戶使用,所以先從 RAG 上,分享我自己的想法與經(jīng)驗(yàn),歡迎大家交流學(xué)習(xí)。寫文章的目的是想踐行費(fèi)曼學(xué)習(xí)法,把邏輯盡可能說的簡單,所以有些概念并不一定嚴(yán)謹(jǐn),如果偏差,歡迎大家指正。

什么是RAG?

檢索增強(qiáng)生成(Retrieval-Augmented Generation, RAG),讀起來非常繞口,我理解的核心就是就是基于讓大模型在做生成的時(shí)候,能夠基于你的知識生成答案,而不是那種通用的泛泛內(nèi)容。

傳統(tǒng)的RAG流程

從網(wǎng)絡(luò)上找了一個(gè)通用的 RAG 的流程,簡單總結(jié)一下,

1、就是將大模型需要的各種知識先進(jìn)行向量化存儲到數(shù)據(jù)庫里面,

2、然后用戶詢問的時(shí)候從數(shù)據(jù)庫找相近的知識,

3、檢索出來之后進(jìn)行重排序(rerank),獲取最終的檢索結(jié)果,將檢索結(jié)果作為背景知識給到 LLM 生成大模型,獲得基于你的背景知識的回復(fù)。

圖片來源 https://blog.csdn.net/zzZ_CMing/article/details/143099958

至于一般常說的 chunks、多路召回等,都是在這個(gè)基礎(chǔ)上做的迭代與改進(jìn),至于為什么要改進(jìn),我在后續(xù)的文章中,再跟大家分享我遇到的坑。

解釋幾個(gè)核心的技術(shù)概念

什么是向量化

拋開技術(shù)實(shí)現(xiàn)原理不看,大家簡單理解,就是他可以一定程度顯示語義,可以識別語義的相似度。

為什么需要重排序(rerank)

既然向量化已經(jīng)能夠解決語義相似性了,為什么還需要 rerank 這一步?

因?yàn)橄蛄炕皇且欢ǔ潭鹊慕鉀Q語義相似性問題,但是區(qū)分的并不是很好,rerank 它可以更加準(zhǔn)確的區(qū)分語義,特別是看起來非常接近的概念。例如法律領(lǐng)域的買方、賣方,醫(yī)學(xué)領(lǐng)域中各種 病癥的名詞,這種差之毫厘,失之千里。 這個(gè)就是 rerank 存在的意義,進(jìn)一步識別語義。

LLM生成大模型是什么

其實(shí)這個(gè)就是我們常說的大模型。豆包、GPT 5 等都是說的這個(gè)大模型,所以前面的動作都是鋪墊,都是準(zhǔn)備內(nèi)容,讓這一步 LLM 大模型獲取更加準(zhǔn)確的知識,生成更加貼近我們場景的內(nèi)容。

RAG應(yīng)用場景

為什么 RAG 會這么火爆,因?yàn)樗谴蛟熳约旱拇竽P蛻?yīng)用的基礎(chǔ)流程,只有把你的知識塞給大模型后,大模型才能生成你個(gè)性化的內(nèi)容,不然大家為什么不直接使用豆包呢?

目前最常見的場景,就是搭建一個(gè)企業(yè)內(nèi)部的知識問答工具,企業(yè)知識都是沉淀到企業(yè)內(nèi)部的,必須要通過檢索工具,給到大模型,大模型才能基于公司的場景進(jìn)行專業(yè)回復(fù)。

如果想搭建自己的 Agent,RAG的理念/流程基本必不可少。例如你想搭建一個(gè)二次元/游戲領(lǐng)域聊天大模型,你就必須能夠把二次元相關(guān)的最新信息給他才行(市面上的大模型基本都是按照輪次訓(xùn)練的,并不會自帶最新的信息)。例如你問他夢幻西游 129 五開,

目前主力攻克的方向

幻覺問題

幻覺問題,很大一部分來源于大模型不知道他不知道,他以為他知道了,就開始跟你一頓胡吹,然后他還不知道他錯(cuò)了,這種在小眾領(lǐng)域/企業(yè)內(nèi)部專有名詞上,表現(xiàn)的尤為嚴(yán)重,我們目前也是在主力解決這個(gè)問題。

目前市面上針對這種,相對成熟的方向是讓 AI 自建知識圖譜,然后通過圖關(guān)系的形式,理解知識,但是坦白來說,例如 KAG(螞蟻開源)、Light RAG,都無法做到開箱即用,還是需要我們自己不斷嘗試。

上下文長度問題

目前當(dāng)我們給的背景知識長度太長之后,會導(dǎo)致回答顯著變慢,影響用戶體驗(yàn)。更致命問題,就是大模型會產(chǎn)生注意力缺失,就像別人給我們上了一整堂課之后,大模型自己會自己忽略掉很多細(xì)節(jié)。然后就覺得背景知識明明有,但是為什么大模型回答不出來的問題。

那么能不能給到大模型真正需要的知識? 那么就需要我們在文檔拆分、知識檢索、知識重排的準(zhǔn)確性很高才行。這里面每個(gè)又都是一個(gè)難點(diǎn)。如果后續(xù)大模型本身迭代,能夠優(yōu)化長上下文準(zhǔn)確性,整個(gè)流程就簡化很多了

多跳問題

多跳 (multi-hop):問題需要把多個(gè)信息點(diǎn)結(jié)合起來,經(jīng)過“推理鏈”才能得到答案。 例如你問大模型,過去 5 年,哪個(gè)省份 GDP 增長幅度最大。這種場景就需要大模型自己檢索過去 N 年的各個(gè)省份的數(shù)據(jù),然后綜合對比,獲得增長幅度最大的結(jié)果。

這種場景在分析類 RAG 非常場景,目前主流的步驟是采取 問題拆解、分別檢索、綜合獲取最終答案,但是這種問題拆解難度很高。更加趨勢類的做法是 Agentic RAG,采取類似 MCP 理念,讓 AI 自己問題拆分、檢索、分析,基于分析結(jié)果再繼續(xù)拆分、檢索……。

指定遵從問題

很多時(shí)候,我們要求大模型不要自己 YY,要參考我們的知識,但是很多時(shí)候,模型的遵從性并不好。甚至之前,我們要求按照 json 返回,模型都無法 100% 做到(最新的模型,結(jié)果格式的遵從性好很多了)

本文由 @尋走 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!