在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

利用OpenVINO和LlamaIndex工具構建多模態RAG應用

英特爾物聯網 ? 來源:OpenVINO 中文社區 ? 2025-02-21 10:18 ? 次閱讀

來源:OpenVINO 中文社區

作者:楊亦誠 英特爾 AI 軟件工程師

介紹

Retrieval-Augmented Generation (RAG) 系統可以通過從知識庫中過濾關鍵信息來優化 LLM 任務的內存占用及推理性能。歸功于文本解析、索引和檢索等成熟工具的應用,為文本內容構建 RAG 流水線已經相對成熟。然而為視頻內容構建 RAG 流水線則困難得多。由于視頻結合了圖像,音頻和文本元素,因此需要更多和更復雜的數據處理能力。本文將介紹如何利用 OpenVINO 和 LlamaIndex 工具構建應用于視頻理解任務的RAG流水線。


要構建真正的多模態視頻理解RAG,需要處理視頻中不同模態的數據,例如語音內容、視覺內容等。在這個例子中,我們展示了專為視頻分析而設計的多模態 RAG 流水線。它利用 Whisper 模型將視頻中的語音內容轉換為文本內容,利用 CLIP 模型生成多模態嵌入式向量,利用視覺語言模型(VLM)處理檢索到的圖像和文本消息以及用戶請求。下圖詳細說明了該流水線的工作原理

wKgZPGe34uOADbbGAACgtteDPv0631.png

圖:視頻理解 RAG 工作原理

源碼地址:

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

環境準備

該示例基于 Jupyter Notebook 編寫,因此我們需要準備好相對應的 Python 環境。基礎環境可以參考以下鏈接安裝,并根據自己的操作系統進行選擇具體步驟。

https://github.com/openvinotoolkit/openvino_notebooks?tab=readme-ov-file#-getting-started

wKgZO2e34uSAJ5yYAADakyevmas116.png

圖:基礎環境安裝導航頁面

此外本示例將依賴 OpenVINO 和 LlamaIndex 的集成組件,因此我們需要單獨在環境中對他們進行安裝,分別是用于為圖像和文本生成多模態向量的llama-index-embeddings-openvino庫,以及視覺多模態推理llama-index-multi-modal-llms-openvino庫。

模型下載和轉換

完成環境搭建后,我們需要逐一下載流水線中用到的語音識別 ASR 模型,多模型向量化模型 CLIP,以及視覺語言模型模型 VLM。

考慮到精度對模型準確性的影響,在這個示例中我們直接從 OpenVINO HuggingFace 倉庫中,下載轉換以后的 ASR int8 模型。

import huggingface_hub as hf_hub


asr_model_id = "OpenVINO/distil-whisper-large-v3-int8-ov"
asr_model_path = asr_model_id.split("/")[-1]


if not Path(asr_model_path).exists():
    hf_hub.snapshot_download(asr_model_id, local_dir=asr_model_path)

而 CLIP 及 VLM 模型則采用 Optimum-intel 的命令行工具,通過下載原始模型對它們進行轉換和量化。

from cmd_helper import optimum_cli


clip_model_id = "laion/CLIP-ViT-B-32-laion2B-s34B-b79K"
clip_model_path = clip_model_id.split("/")[-1]


if not Path(clip_model_path).exists():
  optimum_cli(clip_model_id, clip_model_path)

視頻數據提取與處理

接下來我們需要使用第三方工具提取視頻文件中的音頻和圖片,并利用 ASR 模型將音頻轉化為文本,便于后續的向量化操作。在這一步中我們選擇了一個關于高斯分布的科普視頻作為示例(https://www.youtube.com/watch?v=d_qvLDhkg00)。可以參考以下代碼片段,完成對 ASR 模型的初始化以及音頻內容識別。識別結果將被以 .txt 文件格式保存在本地。

from optimum.intel import OVModelForSpeechSeq2Seq
from transformers import AutoProcessor, pipeline


asr_model = OVModelForSpeechSeq2Seq.from_pretrained(asr_model_path, device=asr_device.value)
asr_processor = AutoProcessor.from_pretrained(asr_model_path)


pipe = pipeline("automatic-speech-recognition", model=asr_model, tokenizer=asr_processor.tokenizer, feature_extractor=asr_processor.feature_extractor)


result = pipe(en_raw_speech, return_timestamps=True)

創建多模態向量索引

這也是整個 RAG 鏈路中最關鍵的一步,將視頻文件中獲取的文本和圖像轉換為向量數據,存入向量數據庫。這些向量數據的質量也直接影響后續檢索任務中的召回準確性。這里我們首先需要對 CLIP 模型進行初始化,利用 OpenVINO 和 LlamaIndex 集成后的庫可以輕松實現這一點。

from llama_index.embeddings.huggingface_openvino import OpenVINOClipEmbedding


clip_model = OpenVINOClipEmbedding(model_id_or_path=clip_model_path, device=clip_device.value)

然后可以直接調用 LlamaIndex 提供的向量數據庫組件快速完成建庫過程,并對檢索引擎進行初始化。

from llama_index.core.indices import MultiModalVectorStoreIndex
from llama_index.vector_stores.qdrant import QdrantVectorStore
from llama_index.core import StorageContext, Settings
from llama_index.core.node_parser import SentenceSplitter


Settings.embed_model = clip_model


index = MultiModalVectorStoreIndex.from_documents(
  documents, storage_context=storage_context, image_embed_model=Settings.embed_model, transformations=[SentenceSplitter(chunk_size=300, chunk_overlap=30)]
)


retriever_engine = index.as_retriever(similarity_top_k=2, image_similarity_top_k=5)

多模態向量檢索

傳統的文本 RAG 通過檢索文本相似度來召喚向量數據庫中關鍵的文本內容,而多模態 RAG 則需要額外對圖片向量進行檢索,用以返回與輸入問題相關性最高的關鍵幀,供 VLM 進一步理解。這里我們會將用戶的提問文本向量化后,通過向量引擎檢索得到與該問題相似度最高的若干個文本片段,以及視頻幀。LlamaIndex 為我們提供了強大的工具組件,通過調用函數的方式可以輕松實現以上步驟。

from llama_index.core import SimpleDirectoryReader


query_str = "tell me more about gaussian function"


img, txt = retrieve(retriever_engine=retriever_engine, query_str=query_str)
image_documents = SimpleDirectoryReader(input_dir=output_folder, input_files=img).load_data()

代碼運行后,我們可以看到檢索得到的文本段和關鍵幀。

wKgZO2e34uSAS66DAAWoKh8tMTY345.png

圖:檢索返回的關鍵幀和相關文本片段

答案生成

多模態 RAG 流水線的最后一步是要將用戶問題,以及檢索到相關文本及圖像內容送入 VLM 模型進行答案生成。這里我們選擇微軟的 Phi-3.5-vision-instruct 多模態模型,以及 OpenVINO 和 LlamaIndex 集后的多模態模任務組件,完成圖片及文本內容理解。值得注意的是由于檢索返回的關鍵幀往往包含多張圖片,因此這里需要選擇支持多圖輸入的多模態視覺模型。以下代碼為 VLM 模型初始化方法。

from llama_index.multi_modal_llms.openvino import OpenVINOMultiModal


vlm = OpenVINOMultiModal(
  model_id_or_path=vlm_int4_model_path,
  device=vlm_device.value,
  messages_to_prompt=messages_to_prompt,
  trust_remote_code=True,
  generate_kwargs={"do_sample": False, "eos_token_id": processor.tokenizer.eos_token_id},
)

完成 VLM 模型對象初始化后,我們需要將上下文信息與圖片送入 VLM 模型,生成最終答案。此外在這個示例中還構建了基于 Gradio 的交互式 demo,供大家參考。

response = vlm.stream_complete(
  prompt=qa_tmpl_str.format(context_str=context_str, query_str=query_str),
  image_documents=image_documents,
)
for r in response:
  print(r.delta, end="")

運行結果如下:

“A Gaussian function, also known as a normal distribution, is a type of probability distribution that is symmetric and bell-shaped. It is characterized by its mean and standard deviation, which determine the center and spread of the distribution, respectively. The Gaussian function is widely used in statistics and probability theory due to its unique properties and applications in various fields such as physics, engineering, and finance. The function is defined by the equation e to the negative x squared, where x represents the input variable. The graph of a Gaussian function is a smooth curve that approaches the x-axis as it moves away from the center, creating a bell-like shape. The function is also known for its property of being able to describe the distribution of random variables, making it a fundamental concept in probability theory and statistics.”

總結

在視頻內容理解任務中,如果將全部的視頻幀一并送入 VLM 進行理解和識別,會對 VLM 性能和資源占用帶來非常大的挑戰。通過多模態 RAG 技術,我們可以首先對關鍵幀進行檢索,從而壓縮在視頻理解任務中 VLM 的輸入數據量,提高整套系統的識別效率和準確性。而 OpenVINO 與 LlamaIndex 集成后的組件則可以提供完整方案的同時,在本地 PC 端流暢運行流水線中的各個模型。

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

    關注

    61

    文章

    10043

    瀏覽量

    172580
  • 流水線
    +關注

    關注

    0

    文章

    122

    瀏覽量

    26064
  • 模型
    +關注

    關注

    1

    文章

    3392

    瀏覽量

    49355
  • OpenVINO
    +關注

    關注

    0

    文章

    104

    瀏覽量

    259

原文標題:開發者實戰|如何利用 OpenVINO? 在本地構建多模態 RAG 應用

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

收藏 人收藏

    評論

    相關推薦

    【「基于大模型的RAG應用開發與優化」閱讀體驗】+第一章初體驗

    的deepseek,讓美股暴跌17%,讓美國的星際之門計劃直接流產了,想笑出聲。 《基于大模型的RAG應用開發與優化》一書從理論到實踐,系統性地介紹了如何結合大模型與RAG技術構建高效的應用系統。本文針對該書
    發表于 02-07 10:42

    【「基于大模型的RAG應用開發與優化」閱讀體驗】RAG基本概念

    隨著大模型在25年初的進一步發展,RAG應用已成為新的一個趨勢,很榮幸有機會試讀這本<基于大模型的RAG應用開發與優化>,書本很厚,有500頁,誠意滿滿。 本書所闡述
    發表于 02-08 00:22

    體驗MiniCPM-V 2.6 模態能力

    模態組網
    jf_23871869
    發布于 :2025年01月20日 13:40:48

    利用OpenVINO工具包檢測汽車品牌

    地檢測品牌、車標和形狀。 OpenVINO TM的Intel&Distribution工具包是一個全面的工具包,用于快速開發模擬人類視覺的應用程序和解決方案。該工具包以細胞神經
    發表于 08-04 07:36

    從源代碼構建OpenVINO工具套件時報錯怎么解決?

    從源退貨開始構建OpenVINO?工具套件錯誤: Could not find a package configuration file provided by \"ade\"
    發表于 08-15 06:45

    OpenVINO工具套件是否可以商業化使用?

    參閱 英特爾? OpenVINO?分銷許可第 2.1 節(2021 年 5 月版本)。 無法了解英特爾? 發行版 OpenVINO? 工具套件是否可以商業化使用。
    發表于 08-15 08:19

    在Raspberry Pi上從源代碼構建OpenVINO 2021.3收到錯誤怎么解決?

    在 Raspberry Pi 上從源代碼構建 OpenVINO?2021.3。 運行OpenVINO?推理,并收到錯誤消息: ModuleNotFoundError:沒有
    發表于 08-15 08:24

    如何使用交叉編譯方法為Raspbian 32位操作系統構建OpenVINO工具套件的開源分發

    提供如何使用交叉編譯方法為 Raspbian* 32 位操作系統構建 OpenVINO? 工具套件的開源分發。 單擊主題上的 了解詳細信息: 系統要求注意本指南假定您的 Raspberry Pi* 主板
    發表于 08-15 06:28

    如何使用Python包裝器正確構建OpenVINO工具套件

    : $ python3.8 >>> from openvino.runtime import Core 如果可以成功導入內核,您已經使用 Python 包裝器正確構建OpenVINO?
    發表于 08-15 07:13

    永久設置OpenVINO trade Windows reg10的工具套件環境變量

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

    使用 OpenVINO? 工具套件進行物體尺寸檢測

    使用 OpenVINO? 工具套件進行物體尺寸檢測
    的頭像 發表于 01-03 09:45 ?809次閱讀
    使用 <b class='flag-5'>OpenVINO</b>? <b class='flag-5'>工具</b>套件進行物體尺寸檢測

    使用 OpenVINO? 工具套件測量購物者情緒

    使用 OpenVINO? 工具套件測量購物者情緒
    的頭像 發表于 01-03 09:45 ?683次閱讀
    使用 <b class='flag-5'>OpenVINO</b>? <b class='flag-5'>工具</b>套件測量購物者情緒

    如何利用LLM做模態任務?

    大型語言模型LLM(Large Language Model)具有很強的通用知識理解以及較強的邏輯推理能力,但其只能處理文本數據。雖然已經發布的GPT4具備圖片理解能力,但目前還未開放模態輸入接口并且不會透露任何模型上技術細節。因此,現階段,如何
    的頭像 發表于 05-11 17:09 ?977次閱讀
    如何<b class='flag-5'>利用</b>LLM做<b class='flag-5'>多</b><b class='flag-5'>模態</b>任務?

    使用OpenVINOLlamaIndex構建Agentic-RAG系統

    RAG 系統的全稱是 Retrieval-augmented Generation,本質上是 Prompt Engineering,通過在 Prompt 中注入檢索得到的外部數據,可以有效地
    的頭像 發表于 10-12 09:59 ?376次閱讀
    使用<b class='flag-5'>OpenVINO</b>和<b class='flag-5'>LlamaIndex</b><b class='flag-5'>構建</b>Agentic-<b class='flag-5'>RAG</b>系統

    利用OpenVINO部署Qwen2模態模型

    模態大模型的核心思想是將不同媒體數據(如文本、圖像、音頻和視頻等)進行融合,通過學習不同模態之間的關聯,實現更加智能化的信息處理。簡單來說,模態
    的頭像 發表于 10-18 09:39 ?631次閱讀
    主站蜘蛛池模板: 一级aaaaa毛片免费视频 | jlzz日本| 色就是色欧美色图 | 亚洲欧美4444kkkk | 日韩欧美在线第一页 | 五月激情站 | 欧美成人综合在线 | 欧美婷婷综合 | 国模私拍大尺度视频在线播放 | 国产aaaaaa | 永久免费在线播放 | 免费香蕉视频国产在线看 | 在线高清国产 | 久久天天 | 午夜视频啪啪 | 免费国产h视频在线观看 | 久久成人国产精品免费 | 激情综合色综合久久综合 | 亚洲日本精品 | 永久免费看的啪啪网站 | 51午夜| 四虎国产欧美成人影院 | 欧美一级欧美三级 | 成人网久久| 国产精品五月天 | 激情五月婷婷久久 | 91久久青草精品38国产 | 免费一级牲交毛片 | 亚洲国产婷婷综合在线精品 | 国产小福利 | h文 超乳 奶水 | 午夜性影院 | 亚洲午夜久久久精品影院视色 | 性色爽爱性色爽爱网站 | bt天堂在线www最新版资源网 | 1024毛片 | 日本特黄在线观看免费 | 免费看吻胸亲嘴激烈网站 | 成年人视频黄色 | 国产综合在线观看 | 色多多污网站在线观看 |