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

探索 mcdse-2b-v1:全新高效的多語言文檔檢索模型 原創

發布于 2024-11-15 10:35
瀏覽
0收藏

01、概述

在信息時代的浪潮中,各類數據以驚人的速度不斷產生,涵蓋文檔、演示文稿、圖像等多種格式。這些信息的多樣性為有效檢索帶來了巨大的挑戰。傳統的檢索模型在處理純文本查詢時表現良好,但面對復雜的多模態內容(如截圖或幻燈片)時,卻往往力不從心。這對于需要從包含文本和視覺元素的文檔中提取信息的企業、研究人員和教育工作者來說,尤為棘手。因此,迫切需要一種能夠高效處理這些多樣化內容的模型。

02、引入 mcdse-2b-v1:文檔檢索的新方法

今天,我們要向大家介紹 mcdse-2b-v1,這是一款全新的人工智能模型,能夠嵌入頁面或幻燈片截圖,并通過自然語言進行查詢。與依賴文本進行索引和搜索的傳統檢索系統不同,mcdse-2b-v1 讓用戶可以處理包含文字、圖片和圖表的截圖或幻燈片,這為經常處理非純文本文檔的用戶打開了新的可能性。用戶只需截取一張演示文稿的截圖或信息圖文檔,將其嵌入模型中,就能通過自然語言搜索獲得相關信息。

mcdse-2b-v1 架起了傳統文本查詢與更復雜視覺數據之間的橋梁,非常適合那些需要頻繁分析演示文稿、報告或其他視覺文檔內容的行業。這一能力使得該模型在信息豐富的環境中顯得尤為重要,因為手動瀏覽這些視覺密集的文檔往往耗時且效率低下。與其費力尋找那一張特定的幻燈片,或是逐頁翻閱密集的報告,不如利用自然語言直接搜索嵌入內容,既節省了時間,又提升了工作效率。

03、技術細節與優勢

mcdse-2b-v1(??)基于 MrLight/dse-qwen2-2b-mrl-v1,并采用 DSE 方法進行訓練。它是一款高效、可擴展且多語言的文檔檢索模型,能夠無縫處理混合內容源。該模型提供了一種嵌入機制,有效捕捉文本與視覺成分,使得在多模態數據類型之間進行強大的檢索操作成為可能。

mcdse-2b-v1 最顯著的特點之一是其資源效率。例如,它可以在僅 10 GB 的空間內嵌入 1 億個頁面。這種優化水平使其非常適合數據存儲緊張的應用場景,如本地解決方案或邊緣計算部署。此外,該模型的體積可以縮小至原來的六分之一,且性能損失極小,這使其能夠在資源有限的設備上運行,同時保持高檢索準確性。

另一個優勢是 mcdse-2b-v1 與常用框架如 Transformers 或 vLLM 的兼容性,這使得其對廣泛用戶而言變得更加可及。這種靈活性使得開發者和數據科學家可以輕松將該模型集成到現有的機器學習工作流中,無需進行大幅修改,極大地方便了使用。

#如何使用

初始化模型和處理器

from transformers import AutoProcessor, Qwen2VLForConditionalGeneration
from PIL import Image
import torch
import math

model = Qwen2VLForConditionalGeneration.from_pretrained(
    'marco/mcdse-2b-v1',
    attn_implementation="flash_attention_2",
    torch_dtype=torch.bfloat16,
    device_map="cuda:0"
).eval()

min_pixels = 1 * 28 * 28
max_pixels = 960 * 28 * 28

processor = AutoProcessor.from_pretrained(
    'marco/mcdse-2b-v1',
    min_pixels=min_pixels,
    max_pixels=max_pixels
)

model.padding_side = "left"
processor.tokenizer.padding_side = "left"

document_prompt = "<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n<|vision_start|><|image_pad|><|vision_end|>What is shown in this image?<|im_end|>\n<|endoftext|>"

query_prompt = "<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n<|vision_start|><|image_pad|><|vision_end|>Query: %s<|im_end|>\n<|endoftext|>"

對查詢進行編碼

def encode_queries(queries: list[str], dimension: int):
    dummy_image = Image.new('RGB', (56, 56))
    inputs = processor(
        text=[query_prompt % x for x in queries],
        images=[dummy_image for _ in queries],
        videos=None,
        padding='longest',
        return_tensors='pt'
    ).to('cuda:0')

    cache_position = torch.arange(0, len(queries))
    inputs = model.prepare_inputs_for_generation(
        **inputs, cache_position=cache_position, use_cache=False)

    with torch.no_grad():
        output = self.model(
            **inputs,
            return_dict=True,
            output_hidden_states=True
        )
    
    embeddings = output.hidden_states[-1][:, -1]
    return torch.nn.functional.normalize(embeddings[:, :dimension], p=2, dim=-1)

對文檔進行編碼

def round_by_factor(number: float, factor: int) -> int:
    return round(number / factor) * factor

def ceil_by_factor(number: float, factor: int) -> int:
    return math.ceil(number / factor) * factor

def floor_by_factor(number: float, factor: int) -> int:
    return math.floor(number / factor) * factor

def smart_resize(height: int, width: int) -> tuple[int, int]:
        h_bar = max(28, round_by_factor(height, 28))
        w_bar = max(28, round_by_factor(width, 28))
        if h_bar * w_bar > max_pixels:
            beta = math.sqrt((height * width) / max_pixels)
            h_bar = floor_by_factor(height / beta, 28)
            w_bar = floor_by_factor(width / beta, 28)
        elif h_bar * w_bar < min_pixels:
            beta = math.sqrt(min_pixels / (height * width))
            h_bar = ceil_by_factor(height * beta, 28)
            w_bar = ceil_by_factor(width * beta, 28)
        return h_bar, w_bar

def resize(image: Image.Image):
    new_size = smart_resize(image.height, image.width)
    return image.resize(new_size)

def encode_documents(documents: list[Image.Image], dimension: int):
    inputs = processor(
        text=[document_prompt] * len(documents),
        images=[resize(x) for x in documents],
        videos=None,
        padding='longest',
        return_tensors='pt'
    ).to('cuda:0')

    cache_position = torch.arange(0, len(queries))
    inputs = model.prepare_inputs_for_generation(
        **inputs, cache_position=cache_position, use_cache=False)

    with torch.no_grad():
        output = self.model(
            **inputs,
            return_dict=True,
            output_hidden_states=True
        )
    
    embeddings = output.hidden_states[-1][:, -1]
    return torch.nn.functional.normalize(embeddings[:, :dimension], p=2, dim=-1)

對比結果

探索 mcdse-2b-v1:全新高效的多語言文檔檢索模型-AI.x社區

04、mcdse-2b-v1 的重要性

mcdse-2b-v1 的意義不僅在于其高效的信息檢索能力,更在于它如何使復雜文檔分析變得更加平易近人。傳統的文檔檢索方法往往需要精確的結構化,并且常常忽視現代文檔中豐富的視覺元素。而 mcdse-2b-v1 的出現,讓用戶可以像進行文本查詢一樣,輕松訪問嵌入在圖表、圖示及其他非文本組件中的信息。

初步結果顯示,即使在壓縮至原始大小的六分之一時,mcdse-2b-v1 依然能夠持續提供高檢索準確率。這種性能使其適合于大規模部署,而不必擔心典型的計算開銷。此外,其多語言能力意味著它可以為全球范圍內的用戶提供服務,對于在多個語言環境中運作的跨國組織或學術機構而言,尤其寶貴。

對于那些從事多模態檢索增強生成(RAG)工作的人員來說,mcdse-2b-v1 提供了一種可擴展的解決方案,能夠為包含文本和視覺內容的文檔提供高性能的嵌入。這種結合增強了下游任務的能力,如回答復雜用戶查詢或從多模態輸入中生成詳細報告。

05、結語

mcdse-2b-v1 通過嵌入頁面和幻燈片截圖,具備了可擴展性、效率和多語言能力,從而解決了多模態文檔檢索的挑戰。它簡化了與復雜文檔的互動,使用戶免于繁瑣的手動搜索過程。用戶將獲得一種強大的檢索模型,有效處理多模態內容,認識到現實數據的復雜性。這一模型重新定義了我們如何訪問和與嵌入文本和視覺知識互動,為文檔檢索設定了新的標準。

通過以上的介紹,相信大家對 mcdse-2b-v1 有了更深入的了解。這一模型不僅將推動文檔檢索技術的發展,也將改變我們處理信息的方式,讓知識獲取變得更加高效和便捷。歡迎大家繼續關注這一領域的最新動態!

參考:

  1. ??https://huggingface.co/marco/mcdse-2b-v1??



本文轉載自公眾號Halo咯咯 作者:基咯咯

原文鏈接:??https://mp.weixin.qq.com/s/JKLE-CuZzBvG53gJKxDScw??


?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 欧美久久久久久 | 国产精品99久久久久久www | 日韩一级 | 天天拍夜夜爽 | www.久久.com | 亚洲成av| 欧美在线国产精品 | 免费看91| 91在线成人 | 欧美三级免费观看 | 人碰人操 | 91久久爽久久爽爽久久片 | 亚洲一区二区三区在线视频 | www日日日| 亚洲成人av在线播放 | 日韩欧美三区 | 久久久久久九九九九九九 | 国产毛片毛片 | 日韩在线欧美 | 一区二区在线 | www.一区二区三区 | 蜜臀av日日欢夜夜爽一区 | 色资源在线 | 麻豆91av| 免费h在线 | 色综合天天综合网国产成人网 | 天天看天天干 | 成人毛片网站 | 亚洲一区国产 | 欧洲精品在线观看 | 99久久久久久 | 日韩中文字幕在线免费 | 中文天堂在线观看 | 久久夜夜 | 欧美一区不卡 | 亚洲综合无码一区二区 | 国产区久久| 一区二区三区精品 | 午夜男人天堂 | 中国美女一级黄色片 | 国产精品大片 |