基于qwen-long模型实现多模态和长文本分析 原创

发布于 2025-9-15 08:19
浏览
0收藏

“ 多模态RAG实现远比传统文本RAG要复杂得多。”

在传统的RAG中我们一般情况下是把其它模态的数据转换成文本,然后通过对文本数据进行向量化,并实现相似度检索和增强的过程。

但在当今时代,文本只是数据表现的一种形式,而图片音视频等才是当前的主流形式;还以传统RAG为例,以word,pdf等复杂文档中,其数据形式往往采用图文结合的方式,这时传统的做法是采用OCR或其它形式直接把文档内容全部转换成文本格式;但这时图片和结构图里面的信息会严重丢失。

即使你进行格式转换,想直接把整个文档丢给模型进行处理,这时你发现你很难读取文档中的图片数据,虽然可以通过一些库分布读取文档中的文本和图片数据;但关于图片的描述数据就没了,因为你不知道应该怎么关联文本和图片之间的关系。

基于qwen-long模型实现多模态和长文本分析-AI.x社区

所以,今天我们就使用多模态模型qwen-long直接对文档进行处理;我们只需要把文档上传即可,其它的都交由模型自己处理;虽然说其并没有完全达到我们的目的,但也算是一种解决问题的方式。

qwen-long模型多模态文档处理

在qwen-long中我们进行文档处理的第一步就是上传文档,然后后续的处理只需要提供一个文档ID即可;至于整个文档是怎么处理的,我们不需要关心,而且对我们也是不可见的。

​https://bailian.console.aliyun.com/?spm=5176.29597918.J_SEsSjsNv72yRuRFS2VknO.2.47a47b081OEz2U&tab=doc#/doc/?type=model&url=2846146​


qwen-long文档地址

在使用qwen-long时,我们第一步就是上传文件,使用openai的组件进行上传,代码案例如下:

import os
from pathlib import Path
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您没有配置环境变量,请在此处替换您的API-KEY
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",  # 填写DashScope服务base_url
)

file_object = client.files.create(file=Path("阿里云百炼系列手机产品介绍.docx"), purpose="file-extract")
print(file_object.id)

上传完成之后,我们可以获取一个文件ID,这个ID就是我们后续对话的文档标识。

之所以使用文档上传的方式,是因为其它的方式只支持单模态数据处理,如文本,图片,表格等;但我们的文档是一个完整的主体,如果对文档进行拆分就会导致其内容丢失。

上传完成之后,我们就可以使用文件ID作为唯一标识进行对话了。这里需要注意的点是,要把fileid后面的文件id换成你自己的f'fileid://{file_id}'。

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您没有配置环境变量,请在此处替换您的API-KEY
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",  # 填写DashScope服务base_url
)
try:
# 初始化messages列表
    completion = client.chat.completions.create(
        model="qwen-long",
        messages=[
            {'role': 'system', 'content': 'You are a helpful assistant.'},
# 请将 'file-fe-xxx'替换为您实际对话场景所使用的 fileid。
            {'role': 'system', 'content': f'fileid://file-fe-xxx'},
            {'role': 'user', 'content': '这篇文章讲了什么?'}
        ],
# 所有代码示例均采用流式输出,以清晰和直观地展示模型输出过程。如果您希望查看非流式输出的案例,请参见https://help.aliyun.com/zh/model-studio/text-generation
        stream=True,
        stream_optinotallow={"include_usage": True}
    )

    full_content = ""
for chunk in completion:
if chunk.choices and chunk.choices[0].delta.content:
# 拼接输出内容
            full_content += chunk.choices[0].delta.content
print(chunk.model_dump())

print(full_content)

except BadRequestError as e:
print(f"错误信息:{e}")
print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")

之后,我们就可以对文档中的内容进行询问。


本文转载自​AI探索时代​ 作者:DFires

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2025-9-15 10:31:32修改
收藏
回复
举报
回复
相关推荐