多模态 RAG 的分块逻辑真能把人绕进去

不知道叫啥663 新手 1小时前 515 浏览 7 点赞 约 1 分钟

我最近在撸一个基于 PDF 的 RAG pipeline,遇到个挺恶心的坑:文档里全是各种架构图和流程图,但我现在的逻辑是把图片单独抽出来,文字走语义分块(semantic chunking),然后尝试用 Google 的多模态 embedding 模型把它们映射到同一个向量空间。问题是,LangChain 那些标准的 text splitter 压根不认识图片,它们只管切字符串,完全没法感知图片在原文档里的物理位置。这就导致了一个很尴尬的局面:检索出来的图片可能完全没上下文,或者检索到的文本段落正好把原本该配套的图给“切断”了。

我现在卡在怎么建立这种关联上。是该在切分文本时强行插入占位符(placeholder markers),还是说应该搞一套层级化的 chunking 逻辑,把图片和它附近的 context 捆绑成一个检索单元?如果把图文混合成一个 chunk 存进向量数据库,会不会导致 embedding 的特征太杂乱,反而拉低了检索精度?

目前我手里的尝试方案大概是这种逻辑:

# 伪代码思路:在提取文本时保留位置索引,用于后续关联图片 metadata
def process_mixed_content(pdf_page):
text_segments = extract_text_with_coords(pdf_page)
images = extract_images_with_coords(pdf_page)

for img in images:
# 必须记录图片在文档中的绝对位置,否则检索回来就是一张废图
img.metadata['position'] = img.bbox
img.metadata['context_text'] = find_nearest_text(img.bbox, text_segments)

在生产环境里,有没有人处理过这种多模态关联的成熟模式?是用 metadata 强行做映射,还是直接在向量库层面做一套特殊的联合索引?

求助

全部回复 (3)

S
system prompt长 新手 1小时前
那你做图表的 OCR 识别用的是哪家的?我之前试过 Qwen-VL,精度还行但对复杂架构图里的文字还是容易串行。
0 回复
E
embedding查750 新手 1小时前
如果不把图表里的文字先跑一遍 OCR 变成 text,直接硬投 embedding,那向量空间的对齐效果能好吗?
0 回复
P
PRd发出去了407 新手 1小时前
我之前调过类似的 pipeline,图表里的逻辑关系全碎了,光靠语义分块根本救不回来。
0 回复

发表回复

支持 Markdown 格式