成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

RAG從入門到精通系列:基礎RAG

發布于 2025-1-17 13:06
瀏覽
0收藏

LLM(Large Language Model,大型語言模型)是一個功能強大的新平臺,但它們并不總是使用與我們的任務相關的數據或者是最新的數據進行訓練。

RAG(Retrieval Augmented Generation,檢索增強生成)是一種將 LLM 與外部數據源(例如私有數據或最新數據)連接的通用方法。它允許 LLM 使用外部數據來生成其輸出。

要想真正掌握 RAG,我們需要學習下圖所示的技術(技巧):

RAG從入門到精通系列:基礎RAG-AI.x社區圖片

這個圖看起來很讓人頭大,但是不用擔心,你來對地方了。

本系列教程將從頭開始介紹如何建立對 RAG 的理解。

我們先從 Indexing(索引)、Retrieval(檢索)和 Generation(生成)的基礎知識開始。

下面的流程圖說明了基礎 RAG 的過程:

  1. 我們對外部文檔建立索引(Indexing);
  2. 根據用戶的問題去檢索(Retrieval)相關的文檔;
  3. 將問題和相關的文檔輸入 LLM 生成(Generation)最終答案。

RAG從入門到精通系列:基礎RAG-AI.x社區圖片

Indexing  

我們從加載文檔開始學習 Indexing。LangChain 有超過 160 種不同的文檔加載器,我們可以使用它們從許多不同的來源抓取數據進行 Indexing。

https://python.langchain.com/docs/integrations/document_loaders/

我們將 Question(問題)輸入到 Retriever(檢索器),Retriever 也會加載外部文檔(知識),然后篩選出與 Question 相關的文檔:

RAG從入門到精通系列:基礎RAG-AI.x社區

我們需要將 Text Representation(文本表示)轉成 Numerical Representation(數值表示)才能更好地實現相關性(比如余弦相似度)篩選:

RAG從入門到精通系列:基礎RAG-AI.x社區

有很多種方法可以將文本轉成數值表示,典型的有:

  • Statistical(基于統計學)
  • Machine Learned(基于機器學習)

RAG從入門到精通系列:基礎RAG-AI.x社區

目前最常用的就是使用機器學習方法將文本轉成固定長度的,可捕獲文本語義的 Embedding Vector(嵌入向量)。

有很多開源的 Embedding Model(比如 BAAI 系列)可以將文本轉成 Embedding Vector。但是這些模型能接受的 Context Window(上下文窗口)有限,一般在 512~8192 個 token(如果你不知道什么是 token 的話,請跳到文末)。

所以正常的流程是我們將外部文檔切分成一個個 Split,使得這些 Split 的長度能夠滿足 Embedding Model 的 Context Window:

RAG從入門到精通系列:基礎RAG-AI.x社區

到現在,我們已經掌握了 Indexing 的理論了,現在可以用 Qwen + BAAI + LangChain + Qdrant 實踐了。

首先配置 LLM 和 Embedding Model:

RAG從入門到精通系列:基礎RAG-AI.x社區

然后加載外部文檔,這里的文檔是一個網頁博客:

RAG從入門到精通系列:基礎RAG-AI.x社區

正如我之前說的, Embedding Model 的 Context Window 有限,我們不能直接把整篇文檔丟進去,所以要將原始文檔拆分成一個個文檔塊:

RAG從入門到精通系列:基礎RAG-AI.x社區

接下來就是配置 Qdrant 向量數據庫:

RAG從入門到精通系列:基礎RAG-AI.x社區

可以閱讀《Qdrant:使用Rust編寫的開源向量數據庫&向量搜索引擎》了解一下 Qdrant。

最后一步對文檔塊建立索引并存到向量數據庫中:

RAG從入門到精通系列:基礎RAG-AI.x社區

Retrieval  

Retrieval 就是根據我們提出的問題的語義向量(也就是 Embedding Vector)去按照某種距離/相似度衡量方法找出與之相似的 k 個 Split 的語義向量。

下圖演示了一個在一個 3D 空間的 Embedding Vector Retrieval:

RAG從入門到精通系列:基礎RAG-AI.x社區

Embedding Vector 通常存儲在 Vector Store(向量數據庫)中,Vector Store 實現了各種比較 Embedding Vector 之間相似度的方法。

RAG從入門到精通系列:基礎RAG-AI.x社區

接下來我們用在 Indexing 時構建的 Vector Store 構建一個 retriever,然后輸入問題并進行檢索:

RAG從入門到精通系列:基礎RAG-AI.x社區

根據我們設定的 k 值,我們檢索出了一個與問題相關的文檔塊。

Generation  

現在我們已經能夠根據用戶的問題檢索出與之相關的知識片段(Split),那么我們現在需要將這些信息(問題 + 知識片段)輸入 LLM,讓 LLM 幫忙生成一個有時事實依據(知識片段)的回答:

RAG從入門到精通系列:基礎RAG-AI.x社區

我們需要:

  1. 問題和知識片段放到一個字典中,問題放到 Question 這個 key,知識片段放到 Context 這個 key;
  2. 然后通過 PromptTemplate 組成一個 Prompt String;
  3. 最后將 Prompt String 輸入 LLM,LLM 再產生回答。

RAG從入門到精通系列:基礎RAG-AI.x社區

看起來很復雜,但這就是 LangChain 和 LlamaIndex 這類框架存在的意義:

RAG從入門到精通系列:基礎RAG-AI.x社區

細心的你發現返回的結果是一個 AIMessage 對象,我們可能需要一個純字符串的輸出結果;而且檢索過程和生成過程是分開的,這很不方便。

不過我們可以借助于 LangChain 將上述檢索和生成過程鏈(Chain)在一起:

RAG從入門到精通系列:基礎RAG-AI.x社區

LangSmith  

如果你還是對整個 RAG 管道過程很陌生,那么不妨去 LangSmith 頁面上看一下整個過程是怎么被一步步串到一起的:

RAG從入門到精通系列:基礎RAG-AI.x社區

LangSmith 是一個用于構建生產級 LLM 應用程序的平臺。它允許我們密切監控和評估我們的應用程序,以便我們可以快速、自信地交付。使用 LangSmith,我們可以:

  • ?跟蹤 LLM 應用程序
  • 了解 LLM 調用和應用程序邏輯的其他部分。

什么是 token?  

token 是模型用來表示自然語言文本的基本單位,可以直觀的理解為“字”或“詞”。

RAG從入門到精通系列:基礎RAG-AI.x社區

 

對于英文文本來說,1 個 token 通常對應 3 至 4 個字母:

RAG從入門到精通系列:基礎RAG-AI.x社區

對于中文文本來說,1 個 token 通常對應一個漢字:

RAG從入門到精通系列:基礎RAG-AI.x社區

GitHub 鏈接:

??https://github.com/realyinchen/RAG/blob/main/01_Indexing_Retrieval_Generation.ipynb??

本文轉載自 ??PyTorch研習社??,作者: 南七無名式

收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 国产黄视频在线播放 | 国产福利在线看 | 91玖玖 | 日本特黄a级高清免费大片 成年人黄色小视频 | 日韩欧美在线精品 | 国产综合区 | 国产日韩精品一区 | 日韩中字幕 | 一区二区免费 | 久久av一区二区三区 | 天天操夜夜操 | 操操操操操 | 国产精品久久久久久久久久久久 | 亚州综合一区 | 一区二区成人 | 成人综合在线视频 | 久草免费在线视频 | 成人免费观看男女羞羞视频 | 欧美福利视频 | 亚洲视频一区在线观看 | 国产精品视频一二三区 | 国产欧美日韩综合精品一区二区 | 成人免费黄色 | 性国产xxxx乳高跟 | 亚洲高清在线观看 | 在线观看欧美日韩视频 | 国产成人精品一区二区三区视频 | 亚洲欧美中文日韩在线v日本 | 成人免费黄色片 | 91视频在线| 中文字幕在线播放第一页 | 欧美h版 | 久久久国产一区二区三区四区小说 | 自拍偷拍第一页 | 国产视频一区二区在线观看 | 国产精品久久久爽爽爽麻豆色哟哟 | a爱视频 | 精精久久| 成人性视频免费网站 | 一区二区三区电影在线观看 | 成人在线观看免费视频 |