从表中检索一行,而不是整个表:RAG 的行级块

企业文档智能 [Vol.1 #7sexies] - 检索单位不一定是页面或段落。当语料库包含表格时,每个正文行及其列标题本身就是一个块,并且通常是读者询问的一行从表中检索一行,而不是整个表:RAG 的行级块首先出现在走向数据科学上。

来源:走向数据科学

将其保证打印为 40 行表:每个承保事件一行,其中包含事件、其上限、免赔额和资格条件的列。用户打开搜索栏并询问“车辆盗窃的上限是多少?”。天真的检索移动将整个表索引为一个块。当问题匹配时,生成模型会在回答的事件之上接收 39 行不相关的事件,并且必须猜测读者的意思是哪一行。发送整个表格使模型执行检索器应该执行的过滤,并且实际匹配问题的单位是一行,而不是整个矩形。

本文是企业文档智能第二部分的一部分,该系列文章利用四块砖构建企业 RAG 系统。检索模块将检索视为过滤而不是向量搜索,并行运行关键字和嵌入信号,让 LLM 仲裁者对决赛入围者进行排名,并通过其目录路由长文档。这个同伴处理他们悬而未决的情况:一份文档,其答案位于表格内,其中适合问题的单位是一行。

🧭该系列新手?从图开始:提示、上下文、循环列出了每个 RAG 系统构建的三个工程层:提示(调用本身)、上下文(填充模型窗口的内容)、循环(下一个调用何时触发以及何时停止),并通过该镜头逐篇介绍整个系列。这是查看所覆盖的内容和所在位置的最短方法。

📓可运行的伴侣位于 GitHub 上:加载 Attention 论文的表 1,观察 serialize_table_rows 将其转换为四个行级块,然后运行目标关键字查询,并看到它返回一行而不是整个表。在 GitHub 上:doc-intel/notebooks-vol1。

1. 表 vs 行:检索的单位

2. 构建行级索引

将解析表转换为可检索索引需要两个步骤:读取解析器发出的形状,然后将每个正文行序列化为自己的块。

摘要