外掛知識庫的基本知識與內容

外掛知識庫

1.什么是rag?

RAG,即LLM在回答問題或生成文本時,會先從大量文檔中檢索出相關的信息,然后基于這些信息生成回答或文本,從而提高預測質量。

2.外掛知識庫的實現思路

只用幾十萬量級的數據對大模型進行微調并不能很好的將額外知識注入大模型。如果想讓大模型根據文檔來回答問題,必須要精簡在輸入中文檔內容的長度。

如果模型對無限長的輸入都有很好的理解能力,那么我可以設計這樣一個輸入“以下是世界上所有樂隊的介紹:[插入100w字的樂隊簡介文檔],請根據上文給我介紹一下萬青這支樂隊”,讓模型來回答我的問題。

一種做法是,我們可以把文檔切成若干段,只將少量的和問題有關的文檔片段拿出來,放到大模型的輸入里。至此,”大模型外掛數據庫“的問題轉換成了“文本檢索的問題”了,目標是根據問題找出文檔中和問題最相關的片段,這已經和大模型本身完全無關了。

文本檢索里邊比較常用的是利用向量進行檢索,我們可以把文檔片段全部向量化(通過語言模型,如bert等),然后存到向量數據庫(如Annoy、 FAISS、hnswlib等)里邊,來了一個問題之后,也對問題語句進行向量話,以余弦相似度或點積等指標,計算在向量數據庫中和問題向量最相似的top k個文檔片段,作為上文輸入到大模型中。向量數據庫都支持近似搜索功能,在犧牲向量檢索準確度的情況下,提高檢索速度。

image-20240510091624087

image-20240510094151233

3.對稱語義檢索與非對稱語義檢索

問題1:How to learn Python online?

答案1:How to learn Python on the web?

適用于非對稱語義檢索的例子:

問題2:What is Python?

答案2:*Python is an interpreted, high-level and general-purpose programming language. Python’s design philosophy …”

對稱語義檢索的“問題”和“答案”要求有差不多的意思,或者根本就不屬于我們常規意義里的問答,而僅僅是同義句匹配。而非對稱語義檢索所做的任務才是我們常規意義下問答任務。很顯然,通過向量檢索的方式進行非對稱語義檢索的難度要大的多。對稱語義檢索的目標是找相似的句子,與向量檢索基于計算向量相似度的原理天然匹配,只需要模型有比較強的內容抽象能力就可以。但是非對稱語義檢索則要求模型能夠將問題和答案映射到同一空間

通過上述例子,可以看出向量檢索只能檢索出意思差不多的內容,下游用一個可以真正能很好理解語義的大模型進行進一步的提取檢索出來的句子中的信息是十分有必要的。

模型是否支持非對稱語義檢索的根本原因是什么呢?是訓練的數據不同

正是因為訓練數據有真正的問答屬性,模型才有真正的問答檢索能力(將問題與答案映射到同一向量空間)。我的理解是,如果訓練數據里沒有某一領域的數據,比如金融領域,那么通用的非對稱語義模型就不能很好的完成該領域的檢索任務。但是對稱語義檢索有“泛化”到其他領域的能力,畢竟只需要理解“字面意思”。

image-20240510092351990

image-20240510092416318

就直接把問題+答案拼在一起,做個二分類嘛。模型同時有了問題+答案這樣一對的上下文信息,當然比直接分別將問題+答案映射到相同的向量空間、再計算相似度準的多了。但是這種計算向量相似度的模式會慢。假設有m個問題和n個答案,向量檢索(圖中的bi-encoder環節)只需要跑m+n次bert模型就夠了,但是cross-encoder需要將所有問題和答案分別組合起來,跑m*n次bert模型。

4.如何協調查詢和文檔的語義空間?(上述問題的一個解決思路)

1.查詢重寫。

由于用戶的查詢可能表達不清晰或缺少必要的語義信息。因而可以使用大模型的能力生成一個指導性的偽文檔,然后將原始查詢與這個偽文檔結合,形成一個新的查詢。

也可以通過文本標識符來建立查詢向量,利用這些標識符生成一個相關但可能并不存在的“假想”文檔,它的目的是捕捉到相關的模式。

此外,多查詢檢索方法讓大語言模型能夠同時產生多個搜索查詢。這些查詢可以同時運行,它們的結果一起被處理,特別適用于那些需要多個小問題共同解決的復雜問題。

2.嵌入變換

在2023年提出的LLamaIndex中,研究者們通過在查詢編碼器后加入一個特殊的適配器,并對其進行微調,從而優化查詢的嵌入表示,從而使之更適合特定的任務。

Li 團隊在 2023 年提出的 SANTA 方法,就是為了讓檢索系統能夠理解并處理結構化的信息。他們提出了兩種預訓練方法:一是利用結構化與非結構化數據之間的自然對應關系進行對比學習;二是采用了一種圍繞實體設計的掩碼策略,讓語言模型來預測和填補這些被掩蓋的實體信息。

5.基本步驟概括

1.將文檔內容加載進來

2.由于文檔很長,可能會超出模型所允許的token,因而對文檔進行切割。

3.對文檔進行向量化,變成計算機可以理解的形式。

4.對數據進行檢索

在對數據進行檢索時,可以首先進行一下元數據過濾,當索引分成許多的chunks時,檢索效率會成為問題,通過元數據進行過濾,可以大大提升效率和相關度。

圖關系檢索:引入知識圖譜,將實體變成node,把它們之間的關系變成relation,就可以利用知識之間的關系做更準確的回答。

檢索技術

向量化(embedding)相似度檢索:相似度計算方式包括歐氏距離、曼哈頓距離、余弦等;

關鍵詞檢索:這是很傳統的檢索方式,元數據過濾也是一種,還有一種就是先把chunk做摘要,再通過關鍵詞檢索找到可能相關的chunk,增加檢索效率;

全文檢索:

SQL檢索:更加傳統的檢索算法。

重排序(Rerank):相關度、匹配度等因素做一些重新調整,得到更符合業務場景的排序。

查詢輪換:這是查詢檢索的一種方式,一般會有幾種方式:

子查詢:可以在不同的場景中使用各種查詢策略,比如可以使用LlamaIndex等框架提供的查詢器,采用樹查詢(從葉子結點,一步步查詢,合并),采用向量查詢,或者最原始的順序查詢chunks等;

HyDE:這是一種抄作業的方式,生成相似的或者更標準的 prompt 模板。
6.將原始query和檢索得到的文本組合起來輸入模型得到結果的過程,本質上就是個prompt enginering的過程。

6.現如今全流程的框架

Langchain和LLamaIndex

7.案例

1.chatPDF

2.Baichuan

3.Multi-modal retrieval-based LMs

8.存在的問題

1.檢索效果依賴embedding和檢索算法。目前可能檢索到無關信息,反而對輸出有負面影響。

2.大模型如何檢索到的信息仍是黑盒。可能仍存在不準確(甚至生成的文本與檢索信息相沖突)

3.對所有任務都無差別檢索 k 個文本片段,效率不高,同時會大大增加模型輸入的長度;

4.無法引用來源,也因此無法精準地查證事實,檢索的真實性取決于數據源及檢索算法。

9.RAG的評估方法

1.獨立評估

獨立評估涉及對檢索模塊和生成模塊的評估

指標:

1.答案相關性

此指標的目標是評估生成的答案與提供的問題提示之間的相關性。答案如果缺乏完整性或者包含冗余信息,那么其得分將相對較低。這一指標通過問題和答案的結合來進行計算,評分的范圍通常在0到1之間,其中高分代表更好的相關性。

2.忠實度

這個評價標準旨在檢查生成的答案在給定上下文中的事實準確性。評估的過程涉及到答案內容與其檢索到的上下文之間的比對。這一指標也使用一個介于0到1之間的數值來表示,其中更高的數值意味著答案與上下文的一致性更高。

3.上下文精確度

在這個指標中,我們評估所有在給定上下文中與基準信息相關的條目是否被正確地排序。理想情況下,所有相關的內容應該出現在排序的前部。這一評價標準同樣使用0到1之間的得分值來表示,其中較高的得分反映了更高的精確度。

4.答案正確性

該指標主要用于測量生成的答案與實際基準答案之間的匹配程度。這一評估考慮了基準答案和生成答案的對比,其得分也通常在0到1之間,較高的得分表明生成答案與實際答案的一致性更高。

現如今的評估框架:

RGAGS、ARES

https://zhuanlan.zhihu.com/p/661867062)

案與實際基準答案之間的匹配程度**。這一評估考慮了基準答案和生成答案的對比,其得分也通常在0到1之間,較高的得分表明生成答案與實際答案的一致性更高。

現如今的評估框架:

RGAGS、ARES

https://zhuanlan.zhihu.com/p/661867062)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24324.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24324.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24324.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第五十六周:文獻閱讀

目錄 摘要 Abstract 文獻閱讀:應用于地表水總磷濃度預測的可解釋CEEMDAN-FE-LSTM-Transformer混合模型 一、現有問題 二、提出方法 三、方法論 1、CEEMDAN(帶自適應噪聲的完全包絡經驗模式分解) 2、FE(模糊熵 &#xff09…

Vue3【十】07使用ref創建基本類型的響應式數據以及ref和reactive區別

Vue3【十】07使用ref創建基本類型的響應式數據以及ref和reactive區別 ref 也可以創建對象類型的響應式數據,不過要使用.value ref 處理對象數據的時候,底層數據還是reactive格式的 reactive 重新分配一個新對象,會失去響應式可以使用Object.a…

自注意力機學習

自注意力機制的核心概念 1. Query, Key 和 Value Query(查詢向量):可以看作是你當前在關注的輸入項。假設你正在閱讀一段文字,這就像你當前在讀的句子。 Key(鍵向量):表示其他所有輸入項的標識…

保姆級 | MySQL的安裝配置教程(非常詳細)

一、下載Mysql 官網步驟 MySQLhttps://www.mysql.com/進入官網首頁 點擊DOWNLOADS 點擊MySQL Community (GPL) Downloads 點擊 小頁面直接進入 MySQL :: Download MySQL Installerhttps://dev.mysql.com/downloads/installer/點擊“Download”下載最新版本,其他…

【吊打面試官系列】MySQL 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?

大家好,我是鋒哥。今天分享關于 【MySQL 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?】面試題,希望對大家有幫助; MySQL 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別&#xf…

碳素鋼化學成分分析 螺紋鋼材質鑒定 鋼材維氏硬度檢測

碳素鋼的品種主要有圓鋼、扁鋼、方鋼等。經冷、熱加工后鋼材的表面不得有裂縫、結疤、夾雜、折疊和發紋等缺陷。尺寸和允許公差必須符合相應品種國家標準的要求。 具體分類、按化學成分分類 : 碳素鋼按化學成分(即以含碳量)可分為低碳鋼、中…

機器學習筆記 - stable diffusion web-ui安裝教程

一、Stable Diffusion WEB UI 屌絲勁發作了,所以本地調試了Stable Diffusion之后,就去看了一下Stable Diffusion WEB UI,網絡上各種打包套件什么的好像很火。國內的也就這個層次了,老外搞創新,國內跟著屁股后面搞搞應用層,就叫大神了。 不扯閑篇了,我們這里從git源碼直接…

問題:11單位內部人員對行政機關作出的行政處分不服,可申請行政復議. #其他#微信

問題:11單位內部人員對行政機關作出的行政處分不服,可申請行政復議. 參考答案如圖所示

問題:脾梗塞時,下列情況最符合的是 #職場發展#知識分享#媒體

問題:脾梗塞時,下列情況最符合的是 A、脾腫大 B、脾區摩擦感 C、兩者均有 D、兩者均無 參考答案如圖所示

uniapp視頻組件層級太高,解決方法使用subNvue原生子體窗口

目錄 前言 先看一下uniapp官網的原話: subNvue的一些參數介紹 subNvues使用方法: 綁定id 顯示 subNvue 彈出層 subNvue.show() 參數信息 subNvue.hide() 參數信息 在使用subNvue 原生子體窗口 遇到的一些問題 前言 nvue 兼容性 以及使用方式 控…

基于 中間件 的 數據交換平臺 的實現

一、介紹 A. 背景和目的 隨著云計算、大數據和物聯網等技術的快速發展,企業面臨著越來越多的數據交換和集成需求。不同系統之間的數據交換變得越來越復雜,而且數據量也越來越大,這對傳統的數據交換方式提出了更高的要求。 中間件作為一種能…

把ROS程序作為桌面圖標雙擊啟動

1 寫launch文件 把ROS程序寫成一個launch文件&#xff0c;例如 powerline_with_rviz.launch <launch><!-- Load camera parameters --><rosparam file"$(find choose_powerline)/config/camera_params.yaml" command"load"/><!-- …

深入理解并應用KTT求解約束性極值問題

KT 很簡單&#xff0c;口訣記心端&#xff0c;等式求最優&#xff0c;不等式驗證——小飛打油 以后每期嘗試編一句口訣&#xff0c;幫助大家記憶&#xff0c;可以是打油詩&#xff0c;也可以是類似“奇變偶不變&#xff0c;符號看象限”的口訣&#xff0c;如果編的不好&#xf…

2024年6月7日第十五周下午學習英語六級大綱

下午學習英語六級大綱的內容可以歸納為以下幾個主要方面&#xff1a; 一、考試概述 六級考試的對象&#xff1a;修完大學英語相應階段課程的在校大學生。考試目的&#xff1a;參照《大學英語教學指南》設定的教學目標&#xff0c;對我國大學生英語綜合運用能力進行科學測量&a…

Docker 常用命令以及鏡像選擇

目錄 1.Docker基本組成 2.鏡像選擇 2.1、鏡像推薦選擇方案 2.2版本選擇 3.Docker 命令 3.1鏡像管理 拉取鏡像&#xff1a; 列出鏡像&#xff1a; 刪除鏡像&#xff1a; 構建鏡像&#xff1a; 3.2容器管理 運行容器 列出運行中的容器和所有容器 停止容器 啟動重啟…

【Qt】QPushButton 與 QAction 的區別

1. QPushButton QPushButton 是一個界面控件&#xff0c;能顯示到界面上的。QPushButton 是 QWidget的一個子類&#xff0c;是一個表示按鈕的界面控件。它用于在GUI中提供一個標準的按鈕&#xff0c;用戶可以點擊它來觸發一個即時的動作或命令。按鈕可以顯示文本、圖標或兩者都…

為什么要將Modbus轉成MQTT

什么是Modbus Modbus 是一種串行通信協議&#xff0c;最初由Modicon&#xff08;現在的施耐德電氣Schneider Electric&#xff09;于1979年開發&#xff0c;用于可編程邏輯控制器&#xff08;PLC&#xff09;之間的通信。Modbus協議設計簡單&#xff0c;易于部署和維護&#xf…

從零入手人工智能(2)——搭建開發環境

1.前言 作為一名單片機工程師&#xff0c;想要轉型到人工智能開發領域的道路確實充滿了挑戰與未知。記得當我剛開始這段旅程時&#xff0c;心中充滿了迷茫和困惑。面對全新的領域&#xff0c;我既不清楚如何入手&#xff0c;也不知道能用人工智能干什么。正是這些迷茫和困惑&a…

用Python實現奇怪的瘋狂按鍵需求

項目背景 說起來好笑,假設有一個奇怪需求 — 僅僅是假設,不代表我有這個需求,雖然可以想象有人會有這個需求,但是這個人不是我,我也不認識任何這樣的人 — 瘋狂向某個程序輸出按鍵,比如,一會兒瘋狂輸入f,一會兒瘋狂輸入q。 如果是兩個按鍵需求,我想要設置一個最簡單…

M1Pro 使用跳板機

Mac (M1 Pro) 通過Iterm2 使用跳板機 1、由于堡壘機&#xff08;跳板機&#xff09;不能支持mac系統終端工具&#xff0c;只支持xshell等win生態。所以我們需要先安裝iterm2 裝iterms教程 這里頭對rz、sz的配置不詳細。我們可以這樣配置&#xff1a; where iterm2-send-zmod…