自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

發(fā)布于 2024-11-15 10:35
瀏覽
0收藏

01、概述

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

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

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

mcdse-2b-v1 架起了傳統(tǒng)文本查詢與更復雜視覺數(shù)據(jù)之間的橋梁,非常適合那些需要頻繁分析演示文稿、報告或其他視覺文檔內(nèi)容的行業(yè)。這一能力使得該模型在信息豐富的環(huán)境中顯得尤為重要,因為手動瀏覽這些視覺密集的文檔往往耗時且效率低下。與其費力尋找那一張?zhí)囟ǖ幕脽羝蚴侵痦摲喢芗膱蟾?,不如利用自然語言直接搜索嵌入內(nèi)容,既節(jié)省了時間,又提升了工作效率。

03、技術細節(jié)與優(yōu)勢

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

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

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

#如何使用

初始化模型和處理器

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社區(qū)

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

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

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

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

05、結語

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

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

參考:

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



本文轉(zhuǎn)載自公眾號Halo咯咯 作者:基咯咯

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


?著作權歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦