RAG-Anything在Colab实现多模态检索,跨文本、表格、公式与图像全链路

0 阅读5分钟开源

环境准备与依赖安装

在Colab中新建笔记本后,首先通过pip安装raganything[image,text]openai>=1.0.0以及pandasmatplotlibreportlab等必备库。为避免Pillow版本冲突,额外指定pillow==11.3.0并刷新模块缓存,确保后续图像处理顺利进行。

安全获取 OpenAI API Key

使用getpass隐藏输入,手动粘贴OpenAI API Key,并通过clean_api_key函数去除多余字符。随后创建AsyncOpenAI客户端,并分别调用chat.completions.createembeddings.create进行连通性测试,确保gpt-4o-minitext-embedding-3-small模型均可用。

合成多模态报告

利用pandas构造包含月份、查询量、混合准确率、平均延迟的表格,使用matplotlib绘制趋势折线图并保存为PNG。随后通过reportlab生成PDF,嵌入文字、表格(Markdown 格式)、LaTeX 公式以及前述图表,形成一份完整的合成报告,既提供结构化数据也包含视觉元素。

构建 RAG-Anything content_list

将报告拆分为五类块:

  • text:概述报告目标与背景;
  • table:Markdown 表格字符串及标题、脚注;
  • equation:LaTeX 公式及说明;
  • image:图像路径、标题、脚注;
  • text(第二段):对混合检索优势的进一步阐述。

上述块以 JSON 列表形式保存为content_list.json,为后续索引提供结构化输入。

定义 OpenAI 模型与 Embedding 函数

封装llm_model_funcvision_model_func以及openai_embedding_func,统一处理系统提示、对话历史以及可选的图像 Base64 数据。Embedding 采用EmbeddingFunc包装,使 RAG-Anything 在索引时能够直接调用 OpenAI 的向量化服务。

初始化 RAG-Anything 并插入内容

创建RAGAnythingConfig并开启图片、表格、公式处理。实例化 RAGAnything 后,调用initialize_storages准备存储目录,随后使用insert_content_list将前述五个块写入向量库。插入过程会输出统计信息,帮助确认每类内容的切分情况。

多检索模式对比实验

设置四种检索模式:naivelocalglobalhybrid,分别针对以下问题进行查询:

  1. 报告的核心目的是什么?
  2. 从一月到六月,混合准确率和延迟的变化趋势?
  3. 为什么混合检索优于朴素检索?
  4. 加权多模态得分公式的含义?

实验结果显示,hybrid模式在跨模态问题上能够综合文本、表格与图像信息,答案最为完整;local侧重局部匹配,global倾向全局语义,naive仅提供最基本的文本相似度。

显式多模态查询示例

通过aquery_with_multimodal接口,直接向模型提供表格或公式块,实现“表格感知查询”“公式感知查询”以及“表格+公式联合查询”。系统成功解释了最高准确率月份、最低延迟月份以及加权得分对检索策略的影响,验证了 RAG-Anything 在显式多模态上下文中的可用性。

小结与后续方向

本教程完整演示了在云端 Colab 环境下,利用开源 RAG-Anything 框架搭建支持文本、表格、公式和图像的多模态检索管线,并通过 OpenAI 的最新模型实现高质量生成。后续可进一步探索全文档解析器(MinerU/Docling)对 PDF 的深度抽取,或将本地模型(如 Llama‑3)替换为 OpenAI,以降低成本并提升可控性。

声明:本文所有代码与实验均基于公开的 RAG-Anything 项目,未涉及任何商业机密。

本文是对第三方新闻源的主观解读。消息可能出现过时、不准确、歧义或错误的地方,仅供参考使用。点击此处查看消息源。