支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


ColQwen-Omni:RAG全模态检索来了,支持【文本|图像|视频|音频】四种模态!

发布日期:2025-07-18 10:09:14 浏览次数: 1541
作者:ChallengeHub

微信搜一搜,关注“ChallengeHub”

推荐语

ColQwen-Omni突破多模态检索边界,一键处理文本、图像、视频和音频,让跨模态搜索变得前所未有的简单高效!

核心内容:
1. ColQwen-Omni的创新之处:全模态检索能力
2. 模型性能与应用场景的实际演示
3. 开源资源与快速上手指南

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

还记得 ColPali、ColQwen 和 DSE 吗?这些模型开创了视觉文档检索的新范式:无需费力地从文档中提取文本进行处理,只需将文档页面视为一系列图像(屏幕截图),然后训练视觉语言模型(VLM)直接将其内容表示为向量。ColPali 的实践表明,这种策略通常比其他替代方法更快、更简单,并且能带来更好的检索性能。

自发布一年以来,ColPali 和 ColQwen 系列模型已被下载数百万次,被誉为 “2024 年顶级人工智能创新” 之一,并激发了许多后续研究!这些模型的效果甚至好到vidore最初的基准测试(Vidore v1)现在都“显得过于简单”!

视觉语言模型(VLM)的快速发展使得顶尖模型能够处理更多模态的数据。例如,令人惊叹的 Qwen-Omni 系列模型就能够处理音频和视频输入,而不仅仅是图像和文本!鉴于此,vidore立即产生了兴趣:是否可以将 ColQwen 系列模型泛化,使其不仅能嵌入和检索文档图像,还能处理音频片段和短视频?继视觉检索增强生成(VisionRAG)之后,音频检索增强生成(AudioRAG)是否也成为可能?

现在,vidore正式推出ColQwen-Omni(3B) —— 它是 ColQwen2 的扩展,基本上可以嵌入你输入的任何模态的数据!

  • 📝 论文:https://arxiv.org/abs/2407.01449
  • 🗃️ Hugging Face 组织:https://huggingface.co/vidore
  • 👀 模型:https://huggingface.co/vidore/colqwen-omni-v0.1
  • 💻 代码:https://github.com/illuin-tech/colpali
  • 📝 单向量 DSE 版本:https://arxiv.org/abs/2505.02466

原文HF博客:https://huggingface.co/blog/manu/colqwen-omni-omnimodal-retrieval

示例用法

让vidore一步步演示如何使用 ColQwen-Omni 检索音频片段!你可以在 Google Colab 中跟着操作。

首先,加载模型:

# !pip install git+https://github.com/illuin-tech/colpali
from colpali_engine.models import ColQwen2_5Omni, ColQwen2_5OmniProcessor

model = ColQwen2_5Omni.from_pretrained(
    "vidore/colqwen-omni-v0.1",
    torch_dtype=torch.bfloat16,
    device_map="cuda",
    attn_implementation="flash_attention_2").eval()
processor = ColQwen2_5OmniProcessor.from_pretrained("vidore/colqwen-omni-v0.1")

假设vidore的目标是查询一个长达 30 分钟的播客。vidore可以将播客分割成 30 秒的片段,并将每个片段以 WAV 格式存储到一个 Python 列表中。

from pydub import AudioSegment

audio = AudioSegment.from_wav("<my_legally_downloaded_podcast>.wav")
# 设置目标采样率
target_rate = 16000
chunk_length_ms = 30 * 1000  # 30 秒
audios = []
for i in range(0, len(audio), chunk_length_ms):
    chunk = audio[i:i + chunk_length_ms]
    # 将立体声转换为单声道,并以 16k Hz 采样
    chunk = chunk.set_channels(1).set_frame_rate(target_rate)
    # 导出并转换为 numpy 数组
    buf = io.BytesIO()
    chunk.export(buf, format="wav")
    buf.seek(0)
    rate, data = wavfile.read(buf)
    audios.append(data)

现在,vidore已经准备好嵌入所有的音频数据。

from torch.utils.data import DataLoader
# 以 4 为批量大小处理输入
dataloader = DataLoader(
    dataset=audios,
    batch_size=4,shuffle=False,
    collate_fn=lambda x: processor.process_audios(x))
ds  = []
for batch_doc in tqdm(dataloader):
    with torch.no_grad():batch_doc = {k: v.to(model.device) for k, v in batch_doc.items()}
        embeddings_doc = model(**batch_doc)
    ds.extend(list(torch.unbind(embeddings_doc.to("cpu"))))

在这里,一段 30 分钟的音频可以在不到 10 秒内完成嵌入,并且每 30 秒的音频大约能得到 800 个音频标记!让vidore进行一个测试:

def get_results(query: str, k=3):
    batch_queries = processor.process_queries([query]).to(model.device)
    # 前向传播
    with torch.no_grad():
        query_embeddings = model(**batch_queries)
    scores = processor.score_multi_vector(query_embeddings, ds)
    return scores[0].topk(k).indices.tolist()

res = get_results("<YOUR QUERY>")
print(f"最相关的音频片段是: {res}")
#> 最相关的音频片段是: [102, 96, 35]

在我的测试中,音频片段 #102 和 #96 完全相关!甚至可以将最相关的音频片段发送给 GPT-4o,以实现端到端的 AudioRAG!

让vidore用一个关于汉尼拔和布匿战争的 30 分钟音频来演示整个流程,下面是基于音频的RAG问答:

完整的 Notebook 可以在这里找到。

https://github.com/ManuelFay/Tutorials/blob/main/Practical_3_AudioRAG.ipynb

什么时候需要检索音频?

许多用例可能需要音频检索。例如,你可能想在教育视频、录制的课程或播客中找到特定信息。你可能需要从朋友的几十条语音信息中,找到那条提到生日派对地址的语音。呼叫中心经理可能试图在数百万条录音电话中,找到几例客户大笑或表达愤怒的实例。

尽管可以使用语音转文本(Speech-to-Text, STT)系统将音频转录成文本,然后搜索转录内容,但直接检索音频要快得多,并且直接音频检索能更好地捕捉情感、环境声音和语音语调等信息,从而开启全新的可能性!

视频检索表现如何?

ColQwen-Omni 也适用于视频。但请注意,视频处理对内存开销很大,因此最适合处理短视频片段。

batch_videos = processor.process_videos(videos).to(model.device)
# 前向传播
with torch.no_grad():
    video_embeddings = model(**batch_videos)

这里有一个关于“龙之母”的有趣演示。 输入查询关键词:

可以检索到下面视频:

模型训练

该模型的首次迭代是科学实验的成果。vidore探索了一个纯粹在视觉文档检索数据集上训练的模型,在未接触音频或视频训练数据的情况下,能否有效地将其嵌入能力迁移到其他模态。结果表明:效果还相当不错!通过严格在 Vidore 训练集上进行训练,该模型在视觉文档检索方面与当前顶尖模型表现相当,而且在音频检索方面也展现出强大的性能,尽管vidore目前还不建议将其用于生产环境。

在未来的迭代中,vidore计划专门将音频剪辑整合到对比训练集中,以进一步优化模型的音频检索能力,这有望显著提升性能。当前模型在理解口语内容方面表现出色,但在理解口音、情感和环境声音方面仍存在一些局限性。vidore相信,通过有针对性的训练可以有效解决这些问题,并欢迎对 v0.1 版本提供任何反馈,以便vidore了解未来运行中应整合哪些数据!同时,ColQwen-Omni 的训练代码已在vidore的 GitHub 上提供,随时可以接收你的定制数据集!vidore的目标还将是改进模型在自然图像和文本检索方面的表现,为实现真正与模态无关的检索器铺平道路!




图片
添加微信,备注”LLM“进入大模型技术交流群
图片

图片

如果你觉得这篇文章对你有帮助,别忘了点个赞、送个喜欢

>/ 作者:致Great

  >/ 作者:欢迎转载,标注来源即可


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询