精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

LangChain框架關鍵組件的使用方法

英特爾物聯網 ? 來源:OpenVINO 中文社區 ? 2024-08-30 16:55 ? 次閱讀

以下文章來源于OpenVINO 中文社區 ,作者:楊亦誠

LangChain是一個強大的框架,旨在幫助開發人員使用語言模型構建端到端的應用程序。它提供了一套工具、組件和接口,可簡化創建由大型語言模型 (LLM) 和聊天模型提供支持的應用程序的過程。通過LangChain,開發者可以輕松構建基于RAG或者Agent流水線的復雜應用體系,而目前我們已經可以在LangChain的關鍵組件LLM,Text Embedding和Reranker中直接調用OpenVINO進行模型部署,提升本地RAG和Agent服務的性能,接下來就讓我們一起看下這些組件的使用方法吧。

wKgaombRiSSAEtPYAAGsXrwS45c283.jpg

圖:RAG系統參考流水線

01安裝方式

相比較常規的LangChain安裝,如果想在LangChain中調用OpenVINO,只需再額外安裝OpenVINO的Optimum-intel組件。其中已經包含對OpenVINO runtime以及NNCF等依賴的安裝。

pip install langchain
pip install --upgrade-strategy eager "optimum[openvino,nncf]"

左滑查看更多

02LLM

大語言模型是LangChain框架中最核心的模型服務組件,可以實現RAG系統中的答案生成與Agent系統中的規劃和工具調用能力,鑒于OpenVINO的Optimum-intel組件目前已經適配了大部分LLM的推理任務,并且該套件可以無縫對接HuggingFace的Transformers庫,因此在和LangChain的集成中,我們將OpenVINO添加為了HuggingFace Pipeline中的一個Backend后端,并直接復用其代碼,開發者可以通過以下方式在LangChain的HuggingFace Pipeline中對OpenVINO的LLM對象進行初始化, 其中model_id可以是一個HuggingFace的模型ID,也可以是本地的PyTorch或者OpenVINO格式模型路徑:

from langchain_community.llms.huggingface_pipeline import HuggingFacePipeline


ov_config = {"PERFORMANCE_HINT": "LATENCY", "NUM_STREAMS": "1", "CACHE_DIR": ""}


ov_llm = HuggingFacePipeline.from_model_id(
  model_id="gpt2",
  task="text-generation",
  backend="openvino",
  model_kwargs={"device": "CPU", "ov_config": ov_config},
  pipeline_kwargs={"max_new_tokens": 10},
)

左滑查看更多

在創建好OpenVINO的LLM模型對象后,我們便可以想調用其他LLM組件一樣來部署他的推理任務。

from langchain_core.prompts import PromptTemplate


template = """Question: {question}


Answer: Let's think step by step."""
prompt = PromptTemplate.from_template(template)


chain = prompt | ov_llm


question = "What is electroencephalography?"


print(chain.invoke({"question": question}))

左滑查看更多

如果你想把LLM部署在Intel的GPU上,也可以通過修改model_kwargs={"device": "GPU"}來進行遷移。此外也可以通過Optimum-intel的命令行工具先將模型導出到本地,再進行部署,這個過程中可以直接導出INT4量化后的模型格式。

optimum-cli export openvino --model gpt2 --weight-format int4 ov_model_dir

左滑查看更多

03Text Embedding

Text Embedding模型是作用是將文本轉化成特征向量,以便對基于文本進行相似度檢索,該模型在RAG系統中得到了廣泛應用,期望從Text Embedding任務中得到Top k個候選上下文Context,目前Text Embedding模型可以通過Optimum-intel中的feature-extraction任務進行導出:

optimum-cli export openvino --model BAAI/bge-small-en --task feature-extraction

左滑查看更多

在LangChain中,我們可以通過OpenVINOEmbeddings 和OpenVINOBgeEmbeddings這兩個對象來部署傳統BERT類的Embedding模型以及基于BGE的Embedding模型,以下是一個BGE Embedding模型部署示例:

model_name = "BAAI/bge-small-en"
model_kwargs = {"device": "CPU"}
encode_kwargs = {"normalize_embeddings": True}
ov_embeddings = OpenVINOBgeEmbeddings(
  model_name_or_path=model_name,
  model_kwargs=model_kwargs,
  encode_kwargs=encode_kwargs,
)
embedding = ov_embeddings.embed_query("hi this is harrison")

左滑查看更多

04Reranker

Reranker本質上是一個文本分類模型,通過該模型,我們可以得到每一條候選上下文Context與問題Query的相似度列表,對其排序后,可以進一步過濾RAG系統中的上下文Context,Reranker模型可以通過Optimum-intel中的text-classification任務進行導出:

optimum-cli export openvino --model BAAI/bge-reranker-large --task text-classification

左滑查看更多

在使用過過程中,通過OpenVINOReranker進行創建Renrank任務,搭配ContextualCompressionRetriever使用,實現對檢索器Retriever的搜索結果進行壓縮。通過定義top n大小,可以限制最后輸出的上下文語句數量,例如在下面這個例子中,我們會對檢索器retriever的top k個檢索結果進行重排,并選取其中與Query相似度最高的4個結果,達到進一步壓縮輸入Prompt長度的目的。

model_name = "BAAI/bge-reranker-large"
ov_compressor = OpenVINOReranker(model_name_or_path=model_name, top_n=4)
compression_retriever = ContextualCompressionRetriever(
  base_compressor=ov_compressor, base_retriever=retriever
)

左滑查看更多

05總結

基于OpenVINO的模型任務目前已集成進了LangChain框架組件中,開發者可以以更便捷的方式,在原本基于LangChain構建的上層AI應用中,獲取上對于關鍵模型推理性能上的提升。對于Intel的AIPC開發者來說,借助LangChain和OpenVINO的集成,也可以以更低的硬件門檻和資源占用來創建LLM服務。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 應用程序
    +關注

    關注

    37

    文章

    3245

    瀏覽量

    57614
  • 語言模型
    +關注

    關注

    0

    文章

    508

    瀏覽量

    10247
  • LLM
    LLM
    +關注

    關注

    0

    文章

    276

    瀏覽量

    306
  • OpenVINO
    +關注

    關注

    0

    文章

    90

    瀏覽量

    182

原文標題:LangChain框架現已正式支持OpenVINO?!| 開發者實戰

文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    JS應用開發框架組件

    JS應用開發框架組件簡介目錄接口使用相關倉簡介JS應用開發框架,是OpenHarmony為開發者提供的一套開發OpenHarmony JS應用的開發框架。其組成如下所示:圖 1 JS應
    發表于 04-23 18:05

    ComponentCodelab——Tablist的使用方法

    讓開發者了解HarmonyOS應用開發常用布局和常用組件之Tablist的使用方法,體驗從工程創建到代碼、布局的編寫,再到編譯構建、部署和運行的全過程。
    發表于 05-08 22:04

    section的使用方法

    無論是GNU還是ARM的編譯器,都支持__attribute__所指定的編譯屬性,這里著重講解一下在KEIL環境下__attribute__中的section的使用方法。section關鍵字可以將
    發表于 11-25 08:10

    串行通信基礎知識與UART驅動構件使用方法

    慕課蘇州大學.嵌入式開發及應用.第二章.入門與軟件框架.串行通信基礎知識與UART驅動構件使用方法0 目錄2 入門與軟件框架2.1 串行通信基礎知識與UART驅動構件使用方法2.1.1
    發表于 12-20 06:21

    介紹SPI的使用方法

    ,這篇介紹SPI的使用方法,流程與TIM類似。大致總結為以下幾個步驟:在RT-thread settings中使能對應的驅動框架在stm32f4xx_hal_conf.h中使能對應的模塊(HAL_XX_MODULE_ENABLED)在board.h中啟用外設類型對應的宏定
    發表于 02-17 06:32

    OpenHarmony 3.1 Release版本關鍵特性解析——ArkUI框架又有哪些新增能力?

    繪制接口使用方法下面介紹一個示例,給大家展示聲明式開發范式中 Canvas 組件的基礎使用方法。圖 3 是三張圖片疊加的效果,頂層的圖片覆蓋了底層的圖片。通過依次使用 drawImage(x,y
    發表于 05-31 18:05

    動態可重組的組件集成框架研究

    根據測評系統的功能用戶可擴展和可定制的需求,結合基于組件的軟件開發的方法,提出了測評系統的動態可重組的組件集成框架,支持無限級菜單自動生成和菜單名稱自定義。
    發表于 01-27 13:29 ?20次下載

    Sharding-JDBC 基本使用方法

    的歸途。 使用框架、中間件、數據庫、工具包等公共組件來組裝出應用系統是我們這一代 IT 打工人工作的常態。對于這些公共組件比如框架的學習,有些人的
    的頭像 發表于 11-19 15:54 ?4721次閱讀
    Sharding-JDBC 基本<b class='flag-5'>使用方法</b>

    示波器的使用方法(三):示波器的使用方法詳解

    示波器的使用方法并非很難,重點在于正確使用示波器的使用方法。往期文章中,小編對模擬示波器的使用方法和數字示波器的使用方法均有所介紹。為增進大家對示波器的
    的頭像 發表于 12-24 20:37 ?3194次閱讀

    羅森伯格HFM電纜組件使用方法

    組件使用方法,目的是闡述安裝使用過程中的注意事項,避免錯誤的操作。 ? 1 2 表:HFM線端連接器 連接器和電纜組件的安裝過程涉及到線纜組件與板端連接器的插入、拔出和線束的布置等過
    的頭像 發表于 01-18 15:33 ?3440次閱讀

    方舟開發框架新增開源組件及其使用方法介紹

    2021年的華為開發者大會(HDC2021)上,我們發布了新一代的聲明式UI框架——方舟開發框架(ArkUI)。ArkUI框架引入了基于TS擴展的聲明式開發范式。自此,越來越多的開發者加入到JS
    的頭像 發表于 05-07 17:43 ?2589次閱讀
    方舟開發<b class='flag-5'>框架</b>新增開源<b class='flag-5'>組件</b>及其<b class='flag-5'>使用方法</b>介紹

    射頻電纜組件使用方法和注意事項

    射頻電纜組件使用方法和注意事項? 射頻電纜組件是一類廣泛應用于通信系統、無線電設備和其他射頻設備中的重要電子組件。它們在傳輸高頻信號時扮演著關鍵
    的頭像 發表于 01-05 15:08 ?601次閱讀

    LangChain 0.1版本正式發布

    LangChain 由 Harrison Chase 于 2022 年 10 月推出,是一個開源編排框架,用于使用 LLM 開發應用程序,推出后迅速脫穎而出,截至 2023 年 6 月,它是 GitHub 上增長最快的開源項目。
    的頭像 發表于 01-10 10:28 ?959次閱讀

    用Redis為LangChain定制AI代理——OpenGPTs

    OpenAI最近推出了OpenAIGPTs——一個構建定制化AI代理的無代碼“應用商店”,隨后LangChain開發了類似的開源工具OpenGPTs。OpenGPTs是一款低代碼的開源框架,專用
    的頭像 發表于 01-13 08:03 ?814次閱讀
    用Redis為<b class='flag-5'>LangChain</b>定制AI代理——OpenGPTs

    太陽能組件檢測設備的使用方法簡單嗎?

      JD-EL4太陽能組件檢測設備的使用方法簡單而直觀,通常設計為用戶友好型,以確保操作便捷、高效。以下將詳細介紹太陽能組件檢測設備的使用方法及相關特點:   1. 簡潔直觀的操
    的頭像 發表于 05-21 17:09 ?401次閱讀