为 RAG 整理文档:先检查源文档,再调整提示词
从已连接的知识库或公开帮助网站收集文档,在为 RAG 建立索引前,检查文本提取、版本和分块边界。
你的知识库助手总是引用旧政策,或漏掉表格中的部分内容。Beeuni 可以读取原始文档,找出过期副本和文本提取错误,再为搜索索引整理修正后的文本。下面用一份配送指南说明该检查什么,以及最后应导出哪些文件。
检索增强生成(RAG)会在文档中查找相关段落,交给模型作为回答问题的依据。这些段落通常称为“分块”,也就是为搜索准备的较小文本片段。Beeuni 智能体可以从已连接的知识库或公开帮助网站收集文档、提取文本,再运行脚本整理这些片段。你的应用随后使用所选工具建立索引并进行搜索。
从知识库所在位置收集内容
对于公开帮助网站,向智能体提供起始网址和要纳入的版块。让它访问相关链接、保存文章文本,并报告无法打开的页面。对于私有文档,连接相应服务,并授予它访问目标集合的权限。只有私有网址,并不意味着页面就能读取。
维护一份来源清单,逐项记录页面或文档的引用、标题、获取时间,以及来源提供的版本信息。代码仓库的提交记录可以标明文档快照;对于实时更新的帮助页面,可能需要另行保存副本。在准备下一次导出前,智能体可以将这份清单与上次导入的内容进行比较,找出已更改、已删除和新发现的页面。
从应用答错的问题入手
在原始文档中找到应当回答该问题的段落。将对应页面与提取出的文本,以及检索返回的分块进行比较。这样可以区分问题出在文本提取还是检索。如果正确段落已经传给模型,就检查答案如何使用了它。
| 你看到的情况 | 检查内容 | 调整方式 |
|---|---|---|
| 一个没有单位的数值 | 表格标题和相邻单元格 | 让标题和单位与相关行保留在一起 |
| 答案依据的是旧规则 | 文档版本和生效日期 | 删除已被取代的文本,或明确设置版本筛选 |
| 句子中途被截断 | 导出文本中的分块边界 | 尽可能按章节或段落边界切分 |
| 检索结果里反复出现导航文字 | 页眉、页脚和页面菜单 | 去除重复的模板文字,但不要删掉实质性说明 |
| 没有匹配的段落 | 提取覆盖范围和检索结果 | 补回缺失文本,再重新测试索引和检索 |
表格标题可能改变答案
想象一份运输指南,其中有张表格,标题是“发货后交付时间(工作日)”。标准服务对应的数值为“3–5”。如果提取结果只保留“标准:3–5”,单位和起算时间就都丢失了。模型只能猜这个数字指的是天数、价格还是其他内容。
Example of a passage with its context preserved:
Document: Shipping guide
Section: Delivery estimates
Service: Standard
Delivery time: 3–5 business days after dispatch
Source: sample-shipping-guide.pdf, page 2这段内容可以支持回答“发货后,标准配送需要多久?”。但如果没有发货日期和相关日历信息,它无法回答“我的订单能在周五前送达吗?”。评审时应同时纳入这两个问题:第一个用于检查表格是否在提取过程中保留下来,第二个用于检查应用是否能识别信息缺失。
每个段落应保留哪些信息?
保留稳定的文档 ID、标题、章节、可用时的页码引用,以及版本或生效日期。对于公开页面,还要保留来源网址。这些字段可以让应用显示引用,并区分措辞相似的不同版本。
没有适用于所有集合的固定分块大小。简短的常见问题解答可以完整保留;较长的操作流程可能需要拆成多个分块,每块都带上章节标题。让智能体导出一个样本,然后不打开原始来源,直接阅读这些分块。检查术语、单位和例外条件是否仍然清楚。
智能体也能编写评估问题吗?
它可以根据文档起草候选问题。在用这些问题评估应用之前,先核对预期答案和来源段落。纳入答案分散在多个章节的问题、涉及过时规则的问题,以及集合本身无法回答的问题。将这套评估题与用于调整系统的示例分开保存。
沿着检索结果追查一次失败
回到那份虚构的运输指南。假设当前指南规定,标准配送在发货后需要 3–5 个工作日,而旧版指南规定的是 2–3 天。你的应用回答“2–3 天”。保存问题、按返回顺序排列的检索段落、它们的元数据,以及答案。这样就能开始调查过时规则是如何影响回答的。
如果检索结果里只有旧版指南,检查替代版本是否已导入,以及版本筛选是否将其排除。如果两个版本都出现,检查应用如何在它们之间作出选择。如果正确段落出现了,但标题缺失,就修复文本提取或分块边界。如果完整的当前版本段落已经传给模型,而答案仍然漏掉“发货后”和“工作日”这两个信息,就检查答案生成环节。重新提取整个集合无法解决最后一种问题。
将这条追踪记录与评估案例一并保存。更改之后,比较段落和答案,而不只是看答案。模型可能已经知道相似事实,因此看似合理的答案会掩盖检索遗漏;遇到下一个涉及文档中特有规则的问题时,它仍可能答错。
用评估问题测试分块大小
较大的分块可以保留完整流程及其例外情况,但也会把无关文本带入提示词。较小的分块可以让事实更容易被检索,却可能把事实与其成立条件分开。重叠文本有助于处理边界问题,但也可能让多个结果位置都被几乎相同的段落占据。在对整个集合调整这些设置前,先检查返回的结果集。
对于每个评审过的问题,标记哪些段落足以支持答案。检查这些段落是否出现在应用发送给模型的结果中。也要记录无关和重复的结果。对于最终答案,分别评估事实依据、引用,以及对信息缺失的识别能力。只看一个总体分数,不容易看出具体是哪一环发生了变化。
每次导出时,都将测试问题和检索设置一并保存。测试更干净的来源文本时,先使用相同的检索配置;测试分块大小或排序方式时,固定来源版本。若同时改动两者,即使答案有所改善,也无法判断是哪项改动起了作用。
应该从 Beeuni 导出什么?
请导出清理后的文本、带有元数据的段落记录、来源清单,以及提取失败列表。然后将这些文件导入索引流水线。
数据集准备指南介绍了评审记录和数据集拆分。如果你需要从应用中触发准备流程,请参阅将 Beeuni 用作智能体后端。