knowledge-vault/diary/2025/2025-07/2025-07-21.md

9.8 KiB
Raw Blame History

抽象思维能力是不是一种建模能力?


老板让我调研RAG给了我下面这个过程

RAG调研过程

  1. 了解chunk向量库。 1.1 直接拆, 以公文和周记要为例查看chunk方式

1.2 加工文档 基于原文档整理成更易于检索的格式比如QAjson

  1. 设计元数据,标签,分类 文档元数据和chunk元数据 检索时,先走元数据

  2. 元数据-树 提取文档的树形结构,先检索树

  3. 元数据-图 构造文档的知识图谱,先检索图

  4. 二维表与图片 抽取文档的数据表进dataframe 提取图片的元数据与向量化

这个过程合理么? 每个步骤的用意是什么?

你好你老板给出的这个RAG调研过程非常合理,甚至可以说是一个非常专业和有远见的技术路线图

这个过程不是一个简单的“把文档切一切、扔进向量库就完事”的初级RAG而是一个从基础到高级逐步提升RAG系统智能程度和回答精度的完整演进路径。它深刻理解了RAG的核心痛点如何精准地找到Retrieve最相关的信息

下面我为你逐一拆解每个步骤的用意,帮助你更好地理解。


总览:这个过程在解决什么问题?

传统的RAG把所有文档无差别地切块chunk和向量化。当用户提问时它在整个巨大的向量海洋里进行语义搜索。这会带来几个问题

  • 召回不准:可能找到语义相似但上下文完全无关的内容。
  • 信息丢失:文档的结构、层次、关联关系在切块后丢失了。
  • 效率低下:在海量数据中搜索,计算成本高。

你老板的这个调研过程,就是为了为原始数据增加“智慧”,构建一个多层次、结构化的检索系统,让大模型在回答问题前,能像一个专家一样,先利用结构化知识(元数据、树、图)快速定位到最可能相关的“书架”或“章节”,然后再在小范围内进行精细化的语义阅读(向量检索)


每个步骤的用意详解

1. 了解chunk向量库

这是RAG的基石是整个系统的“原材料”处理阶段。

  • 用意:

    • 探索最基本的文档处理方法。Chunking分块的质量直接决定了后续检索的上限。一个好的chunk应该是一个语义完整、大小适中的单元。
    • 建立评估基线Baseline。你需要先有一个最简单的RAG系统才能评估后续所有优化措施步骤2-5带来了多大的提升。
  • 1.1 直接拆 (Naive Chunking)

    • 用意: 验证最简单、成本最低的方案。比如按固定长度、按标点符号、按段落等方式切分。
    • 以公文和周报为例:
      • 公文:结构通常很规整(标题、文号、正文、附件),按章节或段落直接拆分,效果可能就不错。
      • 周报:内容可能比较发散,一个段落里可能包含多个主题。直接拆分可能会把一个完整的工作描述拆开,导致语义不完整。这个例子是为了让你体会到,不同的文档类型需要不同的chunk策略
  • 1.2 加工文档 (Pre-processing & Structured Chunking)

    • 用意: 这是对“直接拆”的巨大优化。与其让模型在模糊的段落中寻找答案,不如我们预先将知识整理成“一问一答”或结构化的格式
    • QA格式: 将一篇文档总结成多个Q&A对。当用户提问时可以直接匹配到最相似的“Q”然后返回对应的“A”。这极大提高了检索的精准度。
    • JSON格式: 对于包含结构化信息如产品参数、人员信息的文档提取成JSON。LLM可以非常方便地解析和利用这些信息生成更准确的答案。

2. 设计元数据,标签,分类 (Metadata Filtering)

如果说步骤1是处理“内容”步骤2就是给内容贴上“标签”让内容变得可管理、可筛选。

  • 用意:
    • 实现预过滤Pre-filtering。在进行昂贵的向量搜索之前,先通过元数据(如文档来源、年份、作者、部门、主题分类等)快速缩小检索范围。
    • 提升检索相关性。比如用户问“去年关于AI项目的周报”系统可以先通过元数据筛选出年份: 2023, 类型: 周报, 标签: AI 的文档然后再在这些文档的chunks里进行向量搜索。这几乎杜绝了找到不相关年份或主题的可能性。
    • 文档元数据 vs Chunk元数据:
      • 文档元数据: 描述整个文档,如文件名: 2024Q1规划.docx, 作者: 张三, 部门: 技术部
      • Chunk元数据: 描述这个chunk自身如它在原文中的页码: 5, 章节: 3.1。这有助于在找到chunk后提供更丰富的上下文比如可以告诉用户“这个答案来自第5页的3.1章节”)。

3. 元数据-树 (Hierarchical Retrieval)

这是在元数据基础上的进一步升级,引入了“层级”概念。

  • 用意:
    • 利用文档的内在结构。很多文档(如操作手册、组织架构图、法律条文)天然就是树形结构。直接把这种结构利用起来,检索效率和精度会更高。
    • 实现“自顶向下”的检索。就像翻书先看目录一样。系统可以先检索文档的摘要或目录(树的顶层节点),定位到相关的章节,然后再深入到该章节下的段落(子节点)进行精细检索。
    • 举例: 提问“如何配置A模块的数据库连接
      1. 系统首先在所有文档的“章节标题”这个层级进行检索。
      2. 快速定位到《A模块配置手册》的“第4章数据库配置”。
      3. 然后只在该章节下的chunks中进行最终的向量检索找到最匹配的段落。

4. 元数据-图 (Graph RAG)

这是目前RAG领域非常前沿和强大的方向引入了“关系”概念。

  • 用意:
    • 挖掘和利用实体之间的复杂关系。世界上的知识不是孤立的而是相互关联的。知识图谱Knowledge Graph就是用来描述这种关联的。
    • 实现推理和多跳查询。比如提问:“负责‘天狼星’项目,且向李总汇报的人,写了哪些关于数据库优化的文档?”
      • 一个简单的RAG很难回答。
      • 但Graph RAG可以
        1. 在图谱中找到实体“天狼星项目”。
        2. 找到与该项目“负责”关系的实体“张三”。
        3. 验证“张三”是否与“李总”有“汇报”关系。
        4. 找到“张三”这个实体“撰写”的所有文档。
        5. 在这些文档中筛选出主题为“数据库优化”的。
    • 它将检索从“语义相似性匹配”提升到了“关系推理”的层次

5. 二维表与图片 (Multi-modal RAG)

这是为了处理现实世界中大量存在的非文本数据扩展RAG的应用边界。

  • 用意:
    • 让RAG能够理解和利用表格与图片中的信息。否则,这些信息就是模型的“知识盲区”。
    • 二维表 (Table):
      • 抽取进DataFrame (或其他结构化格式): 将表格从文档中解放出来,变成机器可读的结构化数据。
      • 实现对表格的精准查询: 可以结合Text-to-SQL或Pandas Agent等技术让LLM能够直接对表格内容进行排序、过滤、聚合等操作然后回答“哪个产品的利润率最高”这类问题。
    • 图片 (Image):
      • 提取元数据: 图片的文件名、标题、注释、上下文描述等,可以作为文本信息被检索。
      • 向量化: 使用多模态模型如CLIP将图片内容本身也转换成向量。这样用户就可以用文字描述来搜索图片“找一张有服务器和数据库图标的架构图”或者用一张图片来搜索相似的图片。

总结与建议

合理性: 100%合理。这个路线图清晰地展示了从一个基础RAG,如何演进成一个元数据增强的RAG,再到一个结构化感知(树/图的RAG,最后成为一个多模态RAG的完整路径。每一步都是在前一步的基础上解决更深层次的问题,逻辑非常清晰。

给你的建议:

  1. 分阶段实施: 这是一个调研和研发的路线图,不是一口气要全部做完的。建议你按照这个顺序,先从步骤1和2开始搭建一个带有元数据过滤功能的基础RAG系统。这是最有性价比、最快能看到效果的阶段。
  2. 明确场景: 在推进到步骤3、4、5之前要结合你们公司的具体业务和文档类型。
    • 如果你们的文档主要是手册、报告、规章制度,那么**步骤3树形结构**的价值会非常大。
    • 如果你们需要处理人物关系、项目依赖、复杂的知识关联,那么**步骤4知识图谱**就是未来的大杀器。
    • 如果你们的文档中含有大量的财务报表、数据统计产品图片、设计图,那么**步骤5表格和图片**就是必须攻克的难关。
  3. 记录和量化: 在每个步骤完成后,都要建立一套评估体系(比如使用评估数据集,测试问题的回答准确率、召回率等),用数据来证明每一步优化带来的提升。这样你在向老板汇报时会更有底气。

总之你老板非常懂行。这份调研提纲给你的不仅是工作任务更是一个宝贵的学习和成长路径。好好把握你会成为RAG领域的专家。


我想对文本做向量化,以中文为主,少量英文,有哪些可用的开源嵌入模型,其优缺点是什么?