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

大模型之初識(shí)RAG 原創(chuàng)

發(fā)布于 2024-12-19 09:16
瀏覽
0收藏

前言

通過(guò)前幾章的學(xué)習(xí),我們已經(jīng)掌握連接一個(gè)第三方大模型,使用LangChain與大模型建立交互,并且通過(guò)Prompt進(jìn)行提問(wèn),得到相應(yīng)的回答。本章我們將開始了解RAG(檢索增強(qiáng)生成)技術(shù),了解RAG的技術(shù)原理以及基本使用方法。

RAG概述

產(chǎn)生背景

隨著信息量的急劇增加,單純依靠模型內(nèi)置的知識(shí)進(jìn)行生成已無(wú)法滿足需求,比如:

  • 大模型的公共知識(shí)都是陳舊的!
  • 部分私有的知識(shí)大模型沒(méi)有學(xué)習(xí)過(guò).....

??RAG??(檢索增強(qiáng)生成)技術(shù)的出現(xiàn)是為了應(yīng)對(duì)傳統(tǒng)生成模型在處理大規(guī)模知識(shí)時(shí)的局限性,其結(jié)合了信息檢索與生成模型的優(yōu)勢(shì),能夠在生成過(guò)程中動(dòng)態(tài)地從外部知識(shí)庫(kù)中檢索相關(guān)信息,從而提高生成內(nèi)容的準(zhǔn)確性和豐富性。

私有知識(shí)注入方式有兩種:

  • 方法一:(學(xué)習(xí)式)知識(shí)注入:模型微調(diào)(fine-tuning)
  • 方法二:(外掛式)知識(shí)注入:RAG system

技術(shù)原理

??RAG??? 的核心思想是:將??信息檢索???與??文本生成??結(jié)合起來(lái)。

RAG的本質(zhì)

RAG(Retrieval Augmented Generation),其大量借鑒了推薦系統(tǒng)的一些基本思想。

  • R:Retrieval 檢索
  • A:Augmentated 增強(qiáng)
  • G:Generation 生成

RAG的使用工作流程

大模型之初識(shí)RAG-AI.x社區(qū)

  1. 用戶提出問(wèn)題:用戶輸入查詢(??query??),例如一個(gè)問(wèn)題或請(qǐng)求。
  2. 問(wèn)題交給檢索器:系統(tǒng)將用戶的查詢發(fā)送給檢索模塊(??retriever??)。
  3. 檢索相關(guān)上下文:檢索器根據(jù)向量化比對(duì),從知識(shí)庫(kù)中找到與查詢相關(guān)的上下文信息(??context??)。
  4. 聚合查詢和上下文:將用戶的查詢與檢索到的上下文信息結(jié)合,通過(guò)提示(??prompt??)進(jìn)行聚合,形成新的輸入:??query?? +??context??。
  5. 交給大模型處理:將聚合后的結(jié)果輸入到大型語(yǔ)言模型(??LLM??)。
  6. 生成答案:大模型參考上下文信息,生成對(duì)用戶查詢的回答(??answer??)。

輸入/輸出概述

  • 輸入:??query??
  • 處理:??query?? -->??retriever?? -->??context??
  • 輸出:??query?? +??context?? -->??LLM?? -->??answer??

RAG的知識(shí)庫(kù)構(gòu)建流程

大模型之初識(shí)RAG-AI.x社區(qū)

  1. LOAD:整理知識(shí)語(yǔ)料
  • 輸入格式:支持多種格式,包括 PDF、Word、文本文件、CSV、PPT、SQL 等。
  • 文本抽取:從輸入文件中抽取文本內(nèi)容,去除所有圖表、音頻、視頻等多媒體元素,確保只保留純文本。
  1. SPLIT:文本分段
  • 分段邏輯:將文本劃分為語(yǔ)義相對(duì)獨(dú)立的段落,以便于后續(xù)處理。
  • 向量化要求:確保每個(gè)段落符合向量化模型的實(shí)際需求,避免過(guò)長(zhǎng)或過(guò)短的文本段落。
  1. EMBED:向量化
  • 向量化模型:使用特定的向量化模型(如bge-large-zh-v1.5 或 BAAI)將文本段落轉(zhuǎn)換為向量表示。
  • 維度:生成的向量通常為1024 維度,便于后續(xù)的相似度計(jì)算和檢索。
  1. .STORE: 存儲(chǔ)至向量數(shù)據(jù)庫(kù)
  • 向量庫(kù):Chroma 是一個(gè)開源的向量數(shù)據(jù)庫(kù),支持向量檢索和向量相似度計(jì)算。
  • 數(shù)據(jù)庫(kù)架構(gòu):采用CS(Client-Server)架構(gòu),以支持高效的檢索和查詢,一般需要搭建集群。

所需物料概述

  • 向量數(shù)據(jù)庫(kù)
  • 向量化模型
  • 大語(yǔ)言模型
  • 大量知識(shí)語(yǔ)料

使用方法

安裝依賴

pip install bs4
pip install langchain_chroma

關(guān)于Langchain其他組件的安裝(如:langchain_community等),非本章內(nèi)容重點(diǎn),所以不做贅述。

具體使用

第一步:連接大模型

from utils import get_ernie_models
from utils import get_qwen_models

llm, chat, embed = get_qwen_models()

第二步:導(dǎo)入必要的庫(kù)和包

# 解析 Web 頁(yè)面的庫(kù)(用面向?qū)ο蟮姆绞絹?lái)封裝 HTML 頁(yè)面)
import bs4
# hub 生態(tài)中心
from langchain import hub
# 引入 Chroma 向量庫(kù)
from langchain_chroma importChroma
# 在線加載網(wǎng)頁(yè)
from langchain_community.document_loaders importWebBaseLoader
# 輸出解析器
from langchain_core.output_parsers importStrOutputParser
# 可執(zhí)行的占位符
from langchain_core.runnables importRunnablePassthrough
# 文檔切分器
from langchain_text_splitters import RecursiveCharacterTextSplitter

第三步:選擇爬取的頁(yè)面并加載數(shù)據(jù)

loader = WebBaseLoader(
    web_paths=("https://17aitech.com/?p=14624",),
    bs_kwargs=dict(
        parse_notallow=bs4.SoupStrainer(
            class_=("ast-breadcrumbs", "site-content", "md-post-toc")
        )
    ),
)

# 加載數(shù)據(jù)
docs = loader.load()

補(bǔ)充說(shuō)明:

  • LangChain 官網(wǎng)提供的示例代碼是一篇英文博客,查看效果不太直觀,本例中的博客地址換成了我的博客文章。
  • 上述class的標(biāo)簽,可以通過(guò)瀏覽器的開發(fā)者工具找到,例如:


大模型之初識(shí)RAG-AI.x社區(qū)

第四步:文本分割

# 遞歸式 字符級(jí) 文本 切分器
"""
    chunk_size: 建議段落大小
"""
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=200)
splits = text_splitter.split_documents(docs)
splits

運(yùn)行效果:

大模型之初識(shí)RAG-AI.x社區(qū)

第五步:向量化并入庫(kù)

batch_size = 6  # 每次處理的樣本數(shù)量
vectorstore = Chroma(embedding_functinotallow=embed)  # 初始化 Chroma 向量數(shù)據(jù)庫(kù)并提供嵌入函數(shù)

# 分批入庫(kù)
for i in range(0, len(splits), batch_size):
    batch = splits[i:i + batch_size]  # 獲取當(dāng)前批次的樣本
    vectorstore.add_documents(documents=batch)  # 入庫(kù)

由于阿里提供的embed接口,一次只能處理6個(gè)樣本,所以需要分批入庫(kù)。

第六步:RAG系統(tǒng)搭建

# 把向量操作封裝為一個(gè)基本檢索器
retriever = vectorstore.as_retriever()

第七步:構(gòu)造RAG系統(tǒng)的Prompt(核心部分)

from langchain_core.prompts import ChatPromptTemplate

# RAG系統(tǒng)經(jīng)典的 Prompt (A 增強(qiáng)的過(guò)程)
prompt = ChatPromptTemplate.from_messages([
  ("human", """You are an assistant for question-answering tasks. Use the following pieces 
  of retrieved context to answer the question. 
  If you don't know the answer, just say that you don't know. 
  Use three sentences maximum and keep the answer concise.
  Question: {question} 
  Context: {context} 
  Answer:""")
])

第八步:構(gòu)建RAG鏈

def format_docs(docs):
"""
    將檢索到的文檔列表格式化為一個(gè)大字符串。

    參數(shù):
    docs (list): 包含文檔對(duì)象的列表,每個(gè)文檔對(duì)象應(yīng)具有 `page_content` 屬性。

    返回:
    str: 一個(gè)由文檔內(nèi)容組成的大字符串,文檔之間用兩個(gè)換行符分隔。
    """
return"\n\n".join(doc.page_content for doc in docs)

# RAG 鏈
rag_chain =(
{"context": retriever | format_docs,
"question":RunnablePassthrough()}
| prompt
| chat
|StrOutputParser()
)

第九步:提問(wèn)問(wèn)題,測(cè)試RAG系統(tǒng)

rag_chain.invoke(input="Prompt初步了解文章中,作者示例中的Langserve接口的IP地址是多少?")

運(yùn)行結(jié)果:

大模型之初識(shí)RAG-AI.x社區(qū)

通過(guò)查看文章【課程總結(jié)】day25:大模型應(yīng)用開發(fā)之Prompt初步了解中測(cè)試API接口章節(jié),其中我部署到云服務(wù)器的IP地址的確為上述地址。

內(nèi)容小結(jié)

  • RAG系統(tǒng)是一種基于大語(yǔ)言模型的問(wèn)答系統(tǒng),通過(guò)向量檢索和向量化技術(shù),實(shí)現(xiàn)對(duì)海量知識(shí)資源的高效檢索和問(wèn)答。
  • RAG的知識(shí)庫(kù)構(gòu)建流程為:整理知識(shí)語(yǔ)料(??LOAD??)-> 文本分段(??SPLIT??)-> 向量化(??EMBED??) -> 存儲(chǔ)至向量數(shù)據(jù)庫(kù)(??STORE??)。
  • RAG的使用流程為:用戶提出問(wèn)題(??query??) -> 問(wèn)題交給檢索器(??retriever??)-> 檢索相關(guān)上下文(??context??) -> 聚合查詢和上下文(??query?? +??context??) -> 交給大模型處理(??LLM??) -> 生成答案(??answer??)
  • RAG的核心部分:即通過(guò)構(gòu)建一個(gè)??Prompt??,該??Prompt?? 包含??{question}?? 用戶提出的問(wèn)題 和??{context}?? 向量庫(kù)中檢索到的上下文,然后交給大模型,讓大模型根據(jù)上下文給出??Answer??。

?

本文轉(zhuǎn)載自公眾號(hào)一起AI技術(shù) 作者:熱情的Dongming

原文鏈接:??https://mp.weixin.qq.com/s/FHD-8levDzO0n7R3VA1-4A??


?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
主站蜘蛛池模板: 国产一区二区在线免费观看 | 人人干超碰 | 成人伊人| 久久久久久久电影 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 成年人网站在线观看视频 | av中文在线 | 国产高清精品在线 | 伊人亚洲 | 日韩中文字幕在线观看 | 中文二区 | 91精品国产自产精品男人的天堂 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 色伊人久久 | 国产一二区在线 | 精品国产一区久久 | 日韩午夜精品 | 国产视频2021 | www.色.com| 欧美美女爱爱视频 | 午夜视频网 | 超碰在线人人 | 国产免费播放视频 | 国产精品国产精品国产专区不卡 | 亚洲成人免费视频 | 午夜免费网站 | 日日夜夜免费精品视频 | 免费视频二区 | 草草视频在线免费观看 | www.99热.com | 久久在看 | 亚洲综合在线网 | 91久久国产综合久久91精品网站 | 欧美日韩视频 | 亚洲国产成人精品久久 | 在线播放国产一区二区三区 | 亚洲高清在线观看 | av网站在线看 | 亚洲精品视频在线看 | www.久久99 | 欧美美女一区二区 |