以下文章來源于OpenVINO 中文社區(qū) ,作者:楊亦誠
LangChain是一個強(qiáng)大的框架,旨在幫助開發(fā)人員使用語言模型構(gòu)建端到端的應(yīng)用程序。它提供了一套工具、組件和接口,可簡化創(chuàng)建由大型語言模型 (LLM) 和聊天模型提供支持的應(yīng)用程序的過程。通過LangChain,開發(fā)者可以輕松構(gòu)建基于RAG或者Agent流水線的復(fù)雜應(yīng)用體系,而目前我們已經(jīng)可以在LangChain的關(guān)鍵組件LLM,Text Embedding和Reranker中直接調(diào)用OpenVINO進(jìn)行模型部署,提升本地RAG和Agent服務(wù)的性能,接下來就讓我們一起看下這些組件的使用方法吧。
圖:RAG系統(tǒng)參考流水線
01安裝方式
相比較常規(guī)的LangChain安裝,如果想在LangChain中調(diào)用OpenVINO,只需再額外安裝OpenVINO的Optimum-intel組件。其中已經(jīng)包含對OpenVINO runtime以及NNCF等依賴的安裝。
pip install langchain pip install --upgrade-strategy eager "optimum[openvino,nncf]"
左滑查看更多
02LLM
大語言模型是LangChain框架中最核心的模型服務(wù)組件,可以實現(xiàn)RAG系統(tǒng)中的答案生成與Agent系統(tǒng)中的規(guī)劃和工具調(diào)用能力,鑒于OpenVINO的Optimum-intel組件目前已經(jīng)適配了大部分LLM的推理任務(wù),并且該套件可以無縫對接HuggingFace的Transformers庫,因此在和LangChain的集成中,我們將OpenVINO添加為了HuggingFace Pipeline中的一個Backend后端,并直接復(fù)用其代碼,開發(fā)者可以通過以下方式在LangChain的HuggingFace Pipeline中對OpenVINO的LLM對象進(jìn)行初始化, 其中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}, )
左滑查看更多
在創(chuàng)建好OpenVINO的LLM模型對象后,我們便可以想調(diào)用其他LLM組件一樣來部署他的推理任務(wù)。
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"}來進(jìn)行遷移。此外也可以通過Optimum-intel的命令行工具先將模型導(dǎo)出到本地,再進(jìn)行部署,這個過程中可以直接導(dǎo)出INT4量化后的模型格式。
optimum-cli export openvino --model gpt2 --weight-format int4 ov_model_dir
左滑查看更多
03Text Embedding
Text Embedding模型是作用是將文本轉(zhuǎn)化成特征向量,以便對基于文本進(jìn)行相似度檢索,該模型在RAG系統(tǒng)中得到了廣泛應(yīng)用,期望從Text Embedding任務(wù)中得到Top k個候選上下文Context,目前Text Embedding模型可以通過Optimum-intel中的feature-extraction任務(wù)進(jìn)行導(dǎo)出:
optimum-cli export openvino --model BAAI/bge-small-en --task feature-extraction
左滑查看更多
在LangChain中,我們可以通過OpenVINOEmbeddings 和OpenVINOBgeEmbeddings這兩個對象來部署傳統(tǒng)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本質(zhì)上是一個文本分類模型,通過該模型,我們可以得到每一條候選上下文Context與問題Query的相似度列表,對其排序后,可以進(jìn)一步過濾RAG系統(tǒng)中的上下文Context,Reranker模型可以通過Optimum-intel中的text-classification任務(wù)進(jìn)行導(dǎo)出:
optimum-cli export openvino --model BAAI/bge-reranker-large --task text-classification
左滑查看更多
在使用過過程中,通過OpenVINOReranker進(jìn)行創(chuàng)建Renrank任務(wù),搭配ContextualCompressionRetriever使用,實現(xiàn)對檢索器Retriever的搜索結(jié)果進(jìn)行壓縮。通過定義top n大小,可以限制最后輸出的上下文語句數(shù)量,例如在下面這個例子中,我們會對檢索器retriever的top k個檢索結(jié)果進(jìn)行重排,并選取其中與Query相似度最高的4個結(jié)果,達(dá)到進(jìn)一步壓縮輸入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總結(jié)
基于OpenVINO的模型任務(wù)目前已集成進(jìn)了LangChain框架組件中,開發(fā)者可以以更便捷的方式,在原本基于LangChain構(gòu)建的上層AI應(yīng)用中,獲取上對于關(guān)鍵模型推理性能上的提升。對于Intel的AIPC開發(fā)者來說,借助LangChain和OpenVINO的集成,也可以以更低的硬件門檻和資源占用來創(chuàng)建LLM服務(wù)。
-
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3237瀏覽量
57546 -
語言模型
+關(guān)注
關(guān)注
0文章
501瀏覽量
10236 -
LLM
+關(guān)注
關(guān)注
0文章
264瀏覽量
297 -
OpenVINO
+關(guān)注
關(guān)注
0文章
83瀏覽量
168
原文標(biāo)題:LangChain框架現(xiàn)已正式支持OpenVINO?!| 開發(fā)者實戰(zhàn)
文章出處:【微信號:英特爾物聯(lián)網(wǎng),微信公眾號:英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論