随笔(四)
前面已经设计完知识库附件的文档相关总体层面数据流以及具体的如何解析接下来就是讲解分块向量化知识图谱以及检索重排上下文压缩引用归因等等相关设计了也是个大工程不过前面难过的基本上都设计完了总算能够步入正文了还是很快乐的。chunk分块我们前面费了那么大劲增强mineru输出的json文件各种回填各种元数据补充为的是啥为的就是满足我们对于结构化分块的设计以及后续检索质量的需求。在这里先声明一下我的结构化分块每个chunk不多于1024 token父子分块下父块则采用滑动窗口分块1536t, overlap100t最后一个父块不少于1536token最多就是两倍后续下面我的子块检索拼接策略有应对子块固定窗口分块固定为 100 token最后一个子chunk不少于 100 token防止出现几token为一chunk的情况而由于我子块固定分块大小比较小也就100token所以最后一个子chunk顶天也就200token占用较小对于分块还有咱的大宝贝增强版的json我们基于文章结构进行结构化分块同时如果某一段某一章节太长了一锅炖不下那我们可以对其进行父子分块这个子块我们直接用固定窗口切分就行后续回答反正是将子块所在章节塞入上下文中。这个方法天然支持扁平文档和复杂结构文档的分块因为扁平文档各位也知道肯定是那种大长段然后标题没几个所以需要靠父子分块。当然我们这里面的父子分块设计肯定不可能是将子块所在章节完整塞入上下文的因为我们这里面有个前提某一章节段落太长了。这个很重要我们都那么长了结果我们还好家伙全部塞入上下文让llm回答这不就很超模吗对于其他正常规格的结构化chunk。所以在此刻的设计我们先基于我们自己的推理来合理的塞入上下文后续整个项目或者说这个rag链路跑起来了我们再去优化我们的分块策略。基于写作习惯这个检索到的子块附近肯定是核心相关区然后还有这个父块的开头结尾两个子chunk。所以大概检索到的子块附近5个子chunk加上开头结尾4个子chunk大概1000个token左右在llm的注意力窗口中得到关注的概率差不多当然像什么U型曲线高相关的放提示词首尾这些我们现在肯定不考虑上面那个设计各位神通广大的uu要是有能力可以完善其实还是有缺点的首先是首尾和锚定的子chunk之间的断裂还有既然总共最大也就1024chunk然后我们还要从中挑选1000token出来这不就全覆盖嘛然后还有可能出错还有各种特殊情况例如命中的子块是开头的那就是往后延申子块。所以我就不考虑了直接统一返回父块。上面的分块还是有缺点例如没有把表格图片意图等独立标榜出来如果固定窗口分块那岂不是 直接把表格图片意图这些都直接腰折噜那我们前面辛苦半天增强的json都没啥用了所以我们要对这些增强的block进行标记即原子性确保始终都是一个整体。同时我们需要把固定分块与递归字符分块结合起来尽可能地不要出现断裂一个句子说一半地情况下直接给我截断了。所以我们可以这样设计在1024token这个临界点处上下浮动几十token找断句的符号例如句号分号这些确保语义的完整。同时结构化分块作为我们的整体设计底层采用父子分块这个更好的为我们提供了章节细节同时父块划分采用固定划分我们还要设计好最后一个chunk怎么办如果只剩下几十token这个作为一个父chunk想想就牙疼碎的劈里啪啦的。所以我们采用了末尾合并的策略如果小于300token则合并大于300还可以接受因为我们划分子块还可以给我划分出来3个左右。ParseResult.blocks │ ▼ [1. 结构化解析与清洗] ├── 过滤噪音块 ├── 计算 section_path ├── 识别原子块chart/image/table 打标 _is_atomic └── 按 section_path 分组 → Section[]小节合并100t 向前合并 │ ▼ [2. 在section中父块构建] ├── 大原子块200t从 token 流中抽离标记为独立父块候选记录 original_idx ├── 剩余 token 流含小原子块做固定窗口切分 │ ├── 目标 1024t句子边界对齐 ±70t │ ├── 切点落在小原子块内 → 推到原子块边界 │ └── 无句子边界 → 硬切兜底 ├── 末尾合并最后一块 300t → 并入上一块 └── 将独立父块候选按 original_idx 插回父块序列 │ ▼ [3. 子块切分] ├── 原子块内容 → 整体作为一个 ChildChunk不拆句子 └── 普通文本 → 按句子拆分贪心组合 1-3 句 ≤200t分完块就可以将子块放到postgresql这个向量数据库中存储了我打算使用pgvector还有父块直接存关系数据库postgresql众所周知好叭其实是我目前只知道的两种向量存储方式一个是sidecar模式适合qdrant等专用的向量数据库将text这些原文都给我单独提出来存到关系数据库中后续通过chunk_id关联另一个是text等直接跟vector存储在一起在同一个表中由于postgresql关于向量数据库的设计我们这里直接将子chunk中的text跟vector存储到一起至于像前面提到的分类器中的样例库他们向量化的存储肯定要用到MRL剪切到256维度差不多这样子能够减轻存储压力和检索成本。图谱抽取由于金融的专业性等我们对于图谱提取肯定不能使用openie这种开放式的长尾提取我们采用结构化的提取强约束提取提前定义好相关的实体类型关系等我们不用一开始就追求实体库的完整性可以采用版本迭代的形式逐渐更新实体库。同时我们要考虑新文档的加入这个过程中会产生大量的实体关系边我们要做的就是实体对齐例如byd和比亚迪如果分成了两个实体那么我们的图谱会逻辑断裂。我去参考了最近新出的SAG以及之前的GraphRAG, KAG, LightRAG首先这些都是封闭好的框架而我们目前已经实现了解析分块向量化图谱提取实际上是在分块之后开始用父块提取实体。加上这些框架都比较重当然lightrag主要是没有单独的流程他是完整的rag流程。所以我们需要自研一个。目前的mvp不打算实现图谱这个被我取舍优化掉了懂得都懂嘻嘻。在我之前的打算中是在问题涉及多跳推理的时候使用图谱查询与其他两路混合查询可是多跳在我们的智能体场景下是可以被拆解成多步查询的虽然推理链长了点类似于IRCoT可是对于我们mvp来说这个是可以接受的我们如果选择了图谱我们要开始维护实体库关系库不断优化抽取提示词等多了个复杂的需要运维的还不如后续优化迭代版本的时候再去仔细加入。至于原来的稍微复杂的问题我打算在问题优化上下手采用hyde或者step-backmulti-query等同时考虑一下要不要用splade等当然肯定要剪枝。至此我们解析分块嵌入大致就设计完了接下来来设计检索重排等工具之后我们就要开始多智能体的编排设计了下一讲我们开始设计rag工具。

相关新闻

远程登录另一台电脑怎么操作 远程操作电脑方法教程

远程登录另一台电脑怎么操作 远程操作电脑方法教程

远程登录另一台电脑怎么操作?很多人外出办公、居家加班或异地取用文件时,都会被这个问题困扰,想要轻松实现远程操作电脑,却苦于找不到简单靠谱的方法。远程登录另一台电脑怎么操作其实很简单,一款优质工具就能轻松搞定…

2026/10/10 17:49:42 阅读更多 →
codex could not start

codex could not start

1 更新vscode ,然后重启2 在ctrlshiftp输入Developer: Reload Window3 然后再打开codex--------------0813最新更新 开一下ti子 或者使用7月份的codex就可以了,这是最新版本codex不兼容中国地区导致的(切换版本7月份codex版本,在插件栏的齿轮…

2026/10/10 17:49:33 阅读更多 →
第 11 章 排序

第 11 章 排序

https://www.luogu.com.cn/problem/P1177https://www.luogu.com.cn/problem/P1177 # P1177 【模板】排序 ## 题目描述 将读入的 $N$ 个数从小到大排序后输出。 ## 输入格式 第一行为一个正整数 $N$。 第二行包含 $N$ 个空格隔开的正整数 $a_i$,为你需要进行排…

2026/10/10 17:49:58 阅读更多 →

最新新闻

从 Ubuntu 25.10 到 26.04 LTS:一次跨版本升级的完整技术路线图与 TaoToken 配置实践

从 Ubuntu 25.10 到 26.04 LTS:一次跨版本升级的完整技术路线图与 TaoToken 配置实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 10:42:36 阅读更多 →
FFmpeg Windows编译整合包:x264/x265/AAC静态库配置与调试指南

FFmpeg Windows编译整合包:x264/x265/AAC静态库配置与调试指南

简介:本资源面向需要在Windows平台完成FFmpeg音视频开发环境搭建的开发者,尤其适合希望直接获取可编译、可调试源码包的初中级工程师。压缩包约291.35MB,整合了x264、x265、AAC与FFmpeg的源码及配套编译工具,并按用途划分为多个目…

2026/10/12 10:42:36 阅读更多 →
九月开源项目盘点:20个AI工作流与终端工具,小而精趋势明显

九月开源项目盘点:20个AI工作流与终端工具,小而精趋势明显

1. 为什么九月的开源圈值得单独拎出来聊九月份在开源社区里一直是个特殊的月份。北半球的开发者结束了暑假,南半球的同行们还在冬末的节奏里憋着劲,各大项目维护者像是约好了一样集中发版,新项目也扎堆冒头。我翻了一圈这个月冒出来的仓库&am…

2026/10/12 10:42:36 阅读更多 →
Allure 自动化测试报告实战:接入、定制与排错全链路

Allure 自动化测试报告实战:接入、定制与排错全链路

测试报告这件事,我做自动化这些年踩过的坑比写过的用例还多。前几年接手一个老项目,前任留下的"测试报告"是一个四百多行的 txt,PASS和FAIL交替刷屏,失败原因清一色写着AssertionError,既没有截图也没有请求…

2026/10/12 10:42:36 阅读更多 →
三维重建与点云处理入门:从配准、分割到表面重建的完整指南

三维重建与点云处理入门:从配准、分割到表面重建的完整指南

1. 三维重建与点云技术入门指南1.1 从零开始理解三维重建与点云三维重建这个词听起来很唬人,但说白了就是让计算机通过一张或多张二维照片,反推出物体或场景在真实世界中的三维形状。你可以把它想象成:你站在一个雕塑前面拍了几十张照片&…

2026/10/12 10:42:36 阅读更多 →
MATLAB入门实操:从矩阵运算到脚本绘图调试

MATLAB入门实操:从矩阵运算到脚本绘图调试

刚接触MATLAB的时候,很多人会把它当成一个"计算器加强版"来用,输几个命令也算出了结果,但真到了要独立完成一个入门级演示项目时才发现,自己连"怎么把代码组织得像样"都还没想清楚。这篇文章就是写给那些已经…

2026/10/12 10:41:35 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →