吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用OpenVINO和LlamaIndex構(gòu)建Agentic-RAG系統(tǒng)

英特爾物聯(lián)網(wǎng) ? 來(lái)源:英特爾物聯(lián)網(wǎng) ? 2024-10-12 09:59 ? 次閱讀

作者:楊亦誠(chéng)英特爾 AI 軟件工程師

背景

RAG 系統(tǒng)的全稱(chēng)是 Retrieval-augmented Generation,本質(zhì)上是 Prompt Engineering,通過(guò)在 Prompt 中注入檢索得到的外部數(shù)據(jù),可以有效地解決大語(yǔ)言模型在知識(shí)時(shí)效性和專(zhuān)業(yè)性上的不足。但同時(shí)傳統(tǒng)的 RAG 系統(tǒng)也有它的缺陷,例如靈活性較差,由于 RAG 會(huì)過(guò)分依賴(lài)于向量數(shù)據(jù)庫(kù)的檢索結(jié)果,導(dǎo)致其在解決一些復(fù)雜問(wèn)題的時(shí)候,只是一味地 “搬運(yùn)” 檢索結(jié)果,無(wú)法通過(guò)推理找到更優(yōu)的解決途徑,此外隨著向量數(shù)據(jù)庫(kù)的規(guī)模增大,傳統(tǒng) RAG 也無(wú)法高效對(duì)輸入請(qǐng)求進(jìn)行分類(lèi)和過(guò)濾,導(dǎo)致檢索過(guò)程猶如“大海撈針”,費(fèi)時(shí)費(fèi)力。

79c784fa-877b-11ef-b8af-92fbcf53809c.png

圖:Agentic-RAG系統(tǒng)示例

而基于 AI 智能體的 RAG 系統(tǒng)(以下簡(jiǎn)稱(chēng) Agentic-RAG )恰好可以解決傳統(tǒng) RAG 在靈活性上的不足,它通過(guò)將多個(gè)不同類(lèi)別的 RAG 檢測(cè)器,以工具的形式集成在 AI 智能體中,讓 AI 智能體根據(jù)用戶的請(qǐng)求,判斷是否需要調(diào)用 RAG 搜索上下文,以及調(diào)用哪個(gè) RAG 工具進(jìn)行檢索,例如在回答一個(gè)歷史相關(guān)的問(wèn)題時(shí),Agentic-RAG 就會(huì)優(yōu)先在歷史類(lèi)的 RAG 檢索器中搜索答案,又或是在回答一個(gè)涉及數(shù)學(xué)計(jì)算的問(wèn)題時(shí),Agentic-RAG 則不會(huì)使用 RAG,而是調(diào)用數(shù)據(jù)計(jì)算相關(guān)的工具,甚至如果 LLM 本身具備一定的數(shù)據(jù)運(yùn)算能力話,則完全不需要調(diào)用外部工具,直接輸出答案。當(dāng)然我們也可以將 RAG 和其他外部工具結(jié)合起來(lái),協(xié)同解決更復(fù)雜的問(wèn)題,如上圖所示,在這個(gè)過(guò)程中,AI智能 體會(huì)將任務(wù)拆解后,在每個(gè)步驟中分別調(diào)用不同的工具,或是 RAG 組件來(lái)輸出最終答案。接下來(lái)我們就一起看下如何利用 OpenVINO 和 LlamaIndex 工具來(lái)構(gòu)建一個(gè) Agentic-RAG 系統(tǒng)。

完整示例:

https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/llm-rag-llamaindex/llm-rag-llamaindex.ipynb

第一步模型轉(zhuǎn)換與量化

LLM 和 Embedding 模型是 RAG系統(tǒng)中必要的組件,這里我們可以通過(guò) Optimum-intel CLI 分別把他們轉(zhuǎn)化為 OpenVINO 的 IR 格式,并進(jìn)行量化壓縮。

安裝方法:

pip install optimum[openvino]

LLM:

optimum-cli export openvino --model {llm_model_id} --task text-generation-with-past --trust-remote-code --weight-format int4 {llm_model_path}

Embedding:

pip install optimum[openvino]

第二步 模型任務(wù)初始化

目前基于 OpenVINO 的 LLM,Embedding 以及 Reranker 任務(wù)均已被集成在 LlamaIndex 框架中,開(kāi)發(fā)者可以非常方便地利用導(dǎo)出的 LLM 和 Embedding 模型,將這兩類(lèi)任務(wù)在 LlamaIndex 中進(jìn)行初始化。

安裝方法:

pip install llama-index llama-index-llms-openvino llama-index-embeddings-openvino

LLM:

from llama_index.llms.openvino import OpenVINOLLM


llm = OpenVINOLLM(  
  model_name=str(llm_model_path),  
  tokenizer_name=str(llm_model_path),  
  context_window=3900,  
  max_new_tokens=1000,  
  model_kwargs={"ov_config": ov_config},  
  device_map=llm_device.value,  
  completion_to_prompt=completion_to_prompt,
  )

Embedding:

from llama_index.embeddings.huggingface_openvino import OpenVINOEmbedding


embedding = OpenVINOEmbedding(folder_name=embedding_model_path, device=embedding_device.value)

第三步 構(gòu)建RAG工具

接下來(lái)我們可以利用初始化后的 LLM 以及 Embedding 組件來(lái)構(gòu)建 RAG 工具。第一步需要在 LlamaIndex 創(chuàng)建一個(gè)標(biāo)準(zhǔn)的 RAG 檢索引擎,為了方便演示,該檢索器僅使用默認(rèn)的向量相似度搜索方式進(jìn)行上下文過(guò)濾,如果想了解更完整的 RAG 搭建方法,可以參考 OpenVINO notebooks 倉(cāng)庫(kù)中的另一個(gè)示例:

https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/llm-rag-llamaindex

from llama_index.readers.file import PyMuPDFReader
from llama_index.core import VectorStoreIndex, Settings
from llama_index.core.tools import FunctionTool


Settings.embed_model = embedding
Settings.llm = llm
loader = PyMuPDFReader()
documents = loader.load(file_path=text_example_en_path)
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine(similarity_top_k=2)

在完成 RAG 檢索引擎創(chuàng)建后,可以直接調(diào)用 LlamaIndex 的接口將它包裝為一個(gè) Agent 的工具,如下所示,同時(shí)需要添加對(duì)該工具的描述,以便 LLM 判斷在什么時(shí)候調(diào)用什么工具。

from llama_index.core.tools import QueryEngineTool


budget_tool = QueryEngineTool.from_defaults(  
  query_engine,  
  name="Xeon6",  
  description="A RAG engine with some basic facts about Intel Xeon 6 processors with E-cores",
)

此外,為了演示 Agentic-RAG 對(duì)于復(fù)雜任務(wù)的拆解與多工具間的路由能力,我們還可以再準(zhǔn)備兩個(gè)單獨(dú)的數(shù)學(xué)運(yùn)算工具,供 LLM 選擇。

def multiply(a: float, b: float) -> float:  
  """Multiply two numbers and returns the product"""  
  return a * b


multiply_tool = FunctionTool.from_defaults(fn=multiply)


def add(a: float, b: float) -> float:  
  """Add two numbers and returns the sum"""  
  return a + b


add_tool = FunctionTool.from_defaults(fn=add)

第四步 構(gòu)建 Agent 任務(wù)流水線

因?yàn)樵撌纠杏玫降?Llama3 還不支持 Function-call,所以這里我們可以創(chuàng)建了一個(gè)基于 ReAct 的 Agent 。在 LlamaIndex中搭建 Agent 流水線只需要一行代碼,通過(guò) ReAct Agent.from_tools 接口可以創(chuàng)建一個(gè)基礎(chǔ)的 ReAct Agent ,并將剛才定義好的工具及 LLM 組件綁定到該 Agent 中。

agent = ReActAgent.from_tools([multiply_tool, add_tool, budget_tool], llm=llm, verbose=True)

接下來(lái)可以測(cè)試下效果,我們向 Agent 咨詢(xún)了關(guān)于“4顆第六代 Xeon CPU 最大線程數(shù)“的問(wèn)題,可以看到 Agent 首先會(huì)調(diào)用 Xeon 6 的 RAG 系統(tǒng)查詢(xún)單顆 CPU 支持的最大線程數(shù),然后再調(diào)用數(shù)學(xué)運(yùn)算工具將獲得的線程數(shù)乘以4,最后將得到的數(shù)字反饋給用戶。

response = agent.chat("What's the maximum number of cores in an Intel Xeon 6 processor server with 4 sockets ? Go step by step, using a tool to do any math.")

Thought: The current language of the user is English. I need to use a tool to help me answer the question.

Action: Xeon6

Action Input: {'input': 'maximum cores in a single socket'}

Observation:

According to the provided context information, the maximum cores in a single socket is 144.

Thought: The current language of the user is English. I need to use a tool to help me answer the question.

Action: multiply

Action Input: {'a': 144, 'b': 4}

Observation: 576

Thought: The current language of the user is English. I can answer without using any more tools. I'll use the user's language to answer

Answer: The maximum number of cores in an Intel Xeon 6 processor server with 4 sockets is 576.

總結(jié)和展望

通過(guò)將 Agent 和 RAG 進(jìn)行結(jié)合,我們直接提升 LLM 在解決復(fù)雜任務(wù)時(shí)的能力,相較于傳統(tǒng)的 RAG,Agentic-RAG 更具產(chǎn)業(yè)落地價(jià)值。同時(shí)隨著多智能體方法的引入,基于 Agent 的 RAG 將逐步取代傳統(tǒng) RAG 系統(tǒng),實(shí)現(xiàn)更靈活,更精確的大語(yǔ)言模型應(yīng)用業(yè)務(wù)體系。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    31513

    瀏覽量

    270323
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3305

    瀏覽量

    49217
  • 智能體
    +關(guān)注

    關(guān)注

    1

    文章

    166

    瀏覽量

    10613
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    95

    瀏覽量

    225

原文標(biāo)題:使用 OpenVINO? 和 LlamaIndex 構(gòu)建 Agentic-RAG 系統(tǒng)|開(kāi)發(fā)者實(shí)戰(zhàn)

文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于OpenVINO和LangChain構(gòu)建RAG問(wèn)答系統(tǒng)

    隨著生成式 AI 的興起,和大語(yǔ)言模型對(duì)話聊天的應(yīng)用變得非常熱門(mén),但這類(lèi)應(yīng)用往往只能簡(jiǎn)單地和你“聊聊家常”,并不能針對(duì)某些特定的行業(yè),給出非常專(zhuān)業(yè)和精準(zhǔn)的答案。這也是由于大語(yǔ)言模型(以下簡(jiǎn)稱(chēng) LLM)在時(shí)效性和專(zhuān)業(yè)性上的局限所導(dǎo)致,現(xiàn)在市面上大部分開(kāi)源的 LLM 幾乎都只是使用某一個(gè)時(shí)間點(diǎn)前的公開(kāi)數(shù)據(jù)進(jìn)行訓(xùn)練,因此它無(wú)法學(xué)習(xí)到這個(gè)時(shí)間點(diǎn)之后的知識(shí),并且也無(wú)法保證在專(zhuān)業(yè)領(lǐng)域上知識(shí)的準(zhǔn)確性。那有沒(méi)有辦法讓你的模型學(xué)習(xí)到新的知識(shí)呢?
    的頭像 發(fā)表于 12-25 11:10 ?943次閱讀
    基于<b class='flag-5'>OpenVINO</b>和LangChain<b class='flag-5'>構(gòu)建</b><b class='flag-5'>RAG</b>問(wèn)答<b class='flag-5'>系統(tǒng)</b>

    【「基于大模型的RAG應(yīng)用開(kāi)發(fā)與優(yōu)化」閱讀體驗(yàn)】+Embedding技術(shù)解讀

    引入外部知識(shí)庫(kù)來(lái)增強(qiáng)生成模型的能力。而Embedding在 Embedding模型將用戶的問(wèn)題和文檔庫(kù)中的文本轉(zhuǎn)換為向量表示,這是RAG系統(tǒng)進(jìn)行信息檢索和文本生成的基礎(chǔ)。RAG系統(tǒng)通過(guò)
    發(fā)表于 01-17 19:53

    從源代碼構(gòu)建OpenVINO工具套件時(shí)報(bào)錯(cuò)怎么解決?

    從源退貨開(kāi)始構(gòu)建OpenVINO?工具套件錯(cuò)誤: Could not find a package configuration file provided by \"ade\"
    發(fā)表于 08-15 06:45

    在Raspberry Pi上從源代碼構(gòu)建OpenVINO 2021.3收到錯(cuò)誤怎么解決?

    在 Raspberry Pi 上從源代碼構(gòu)建 OpenVINO?2021.3。 運(yùn)行OpenVINO?推理,并收到錯(cuò)誤消息: ModuleNotFoundError:沒(méi)有
    發(fā)表于 08-15 08:24

    如何使用交叉編譯方法為Raspbian 32位操作系統(tǒng)構(gòu)建OpenVINO工具套件的開(kāi)源分發(fā)

    提供如何使用交叉編譯方法為 Raspbian* 32 位操作系統(tǒng)構(gòu)建 OpenVINO? 工具套件的開(kāi)源分發(fā)。 單擊主題上的 了解詳細(xì)信息: 系統(tǒng)要求注意本指南假定您的 Raspber
    發(fā)表于 08-15 06:28

    如何使用Python包裝器正確構(gòu)建OpenVINO工具套件

    來(lái)構(gòu)建該工具套件。 如果您未明確指定 Python 版本,CMake 會(huì)選擇系統(tǒng)級(jí) Python 版本(2.7),而且您的 Python 腳本將不起作用。 注意以下說(shuō)明假定您已安裝了 Python
    發(fā)表于 08-15 07:13

    永久設(shè)置OpenVINO trade Windows reg10的工具套件環(huán)境變量

    ]%INTEL_OPENVINO_DIR%\\\\extras\\opencv\\\\bin可選,僅在根據(jù) 下載其他組件 安裝 OpenCV* 的情況下。 調(diào)整 自定義 OpenCV 構(gòu)建的條目。 注意這適用于 2022.1 版Ope
    發(fā)表于 08-15 07:18

    從Docker映像為Raspbian OpenVINO工具套件的安裝過(guò)程

    OpenVINO 開(kāi)源技術(shù)中心 復(fù)制用于 Raspbian* 操作系統(tǒng)包的?工具套件的鏈接。選擇最新版本,右鍵單擊 URL,然后按 Copy 鏈接地址。 要構(gòu)建用于神經(jīng)計(jì)算英特爾? Movidius?或
    發(fā)表于 08-15 06:59

    無(wú)法使用Microsoft Visual Studio 2017為Windows 10構(gòu)建開(kāi)源OpenVINO怎么解決?

    無(wú)法使用 Microsoft Visual Studio 2017 為 Windows 10 構(gòu)建開(kāi)源OpenVINO?。
    發(fā)表于 08-15 06:43

    什么是LlamaIndexLlamaIndex數(shù)據(jù)框架的特點(diǎn)和功能

    LlamaIndex是一個(gè)數(shù)據(jù)框架,用于讓基于LLM的應(yīng)用程序攝取、結(jié)構(gòu)化和訪問(wèn)私有或領(lǐng)域特定的數(shù)據(jù)。它提供Python和Typescript版本。
    的頭像 發(fā)表于 01-05 11:08 ?9602次閱讀
    什么是<b class='flag-5'>LlamaIndex</b>?<b class='flag-5'>LlamaIndex</b>數(shù)據(jù)框架的特點(diǎn)和功能

    什么是RAGRAG學(xué)習(xí)和實(shí)踐經(jīng)驗(yàn)

    高級(jí)的RAG能很大程度優(yōu)化原始RAG的問(wèn)題,在索引、檢索和生成上都有更多精細(xì)的優(yōu)化,主要的優(yōu)化點(diǎn)會(huì)集中在索引、向量模型優(yōu)化、檢索后處理等模塊進(jìn)行優(yōu)化
    的頭像 發(fā)表于 04-24 09:17 ?1094次閱讀
    什么是<b class='flag-5'>RAG</b>,<b class='flag-5'>RAG</b>學(xué)習(xí)和實(shí)踐經(jīng)驗(yàn)

    如何手?jǐn)]一個(gè)自有知識(shí)庫(kù)的RAG系統(tǒng)

    用于自然語(yǔ)言處理任務(wù),如文本生成、問(wèn)答系統(tǒng)等。 我們通過(guò)一下幾個(gè)步驟來(lái)完成一個(gè)基于京東云官網(wǎng)文檔的RAG系統(tǒng) 數(shù)據(jù)收集 建立知識(shí)庫(kù) 向量檢索 提示詞與模型 數(shù)據(jù)收集 數(shù)據(jù)的收集再整個(gè)RAG
    的頭像 發(fā)表于 06-17 14:59 ?659次閱讀

    英特爾軟硬件構(gòu)建模塊如何幫助優(yōu)化RAG應(yīng)用

    軟硬件構(gòu)建模塊如何幫助優(yōu)化RAG應(yīng)用,在簡(jiǎn)化部署和支持?jǐn)U展的同時(shí),增強(qiáng)其上下文感知能力和實(shí)時(shí)響應(yīng)性能。 1 為您的應(yīng)用量身定制GenAI ChatGPT的面世改變了AI的發(fā)展格局。企業(yè)爭(zhēng)相利用這項(xiàng)新技術(shù)
    的頭像 發(fā)表于 07-24 15:12 ?499次閱讀
    英特爾軟硬件<b class='flag-5'>構(gòu)建</b>模塊如何幫助優(yōu)化<b class='flag-5'>RAG</b>應(yīng)用

    RAG的概念及工作原理

    檢索增強(qiáng)型生成(RAG系統(tǒng)正在重塑我們處理AI驅(qū)動(dòng)信息的方式。作為架構(gòu)師,我們需要理解這些系統(tǒng)的基本原理,從而有效地發(fā)揮它們的潛力。 什么是RAG? 總體而言,
    的頭像 發(fā)表于 12-17 13:41 ?453次閱讀
    <b class='flag-5'>RAG</b>的概念及工作原理

    檢索增強(qiáng)型生成(RAG)系統(tǒng)詳解

    成流暢且類(lèi)似人類(lèi)的文本方面表現(xiàn)出色,但它們有時(shí)在事實(shí)準(zhǔn)確性上存在困難。當(dāng)準(zhǔn)確性非常重要時(shí),這可能是一個(gè)巨大的問(wèn)題。 那么,這個(gè)問(wèn)題的解決方案是什么呢?答案是檢索增強(qiáng)型生成(RAG系統(tǒng)RAG集成了像GPT這樣的模型的強(qiáng)大功能
    的頭像 發(fā)表于 12-24 10:44 ?313次閱讀
    檢索增強(qiáng)型生成(<b class='flag-5'>RAG</b>)<b class='flag-5'>系統(tǒng)</b>詳解
    翼城县| 杨筠松 24山| 菲律宾在线游戏| 百家乐的薇笑打法| 破战百家乐官网的玩法技巧和规则| 宁陕县| 威尼斯人娱乐城百家乐| 现场百家乐官网机| 百家乐官网是如何出千的| A8百家乐赌场娱乐网规则| 大发百家乐官网的玩法技巧和规则 | 沙龙百家乐怎申请| 百家乐官网玩法介绍图片| 陇西县| 大发888娱乐官方下载| 赌博百家乐赢钱方法| 怎样打百家乐官网的玩法技巧和规则 | 新世纪百家乐官网的玩法技巧和规则| 百家乐官网最好的玩法| 德州扑克庄家| 百家乐看澳门| 百家乐斗牛稳赚| 权威百家乐官网信誉网站| 凯旋门百家乐官网现金网| 足球竞猜规则| A8百家乐赌场娱乐网规则| 百家乐15人桌布| 百家乐美女视频| 伯爵百家乐娱乐| 新2百家乐娱乐城| 百家乐官网规则| 赢家百家乐官网的玩法技巧和规则 | 皇冠网百家乐赢钱| 娱乐网百家乐官网的玩法技巧和规则 | 百家乐第三张规则| 新濠百家乐的玩法技巧和规则 | 真人百家乐好不好玩| 利澳百家乐官网的玩法技巧和规则| 百家乐官网与21点| 百家乐官网赌博游戏| 百家乐官网虚拟视频|