展开本页目录
开始前准备什么
- 下载完整练习包,在独立目录阅读README与已执行范围。
- 安装requirements.txt指定版本或使用文中目标工具;依赖与模型权重不要混入网站工程。
- 只有明确标为已执行的部分有本次证据;真实模型、账号或GPU步骤按自己的环境另行验证。
- 建立清楚的父子ID
- 复算命中占比
- 保存父文档及层级元数据
- 执行AutoMergingRetriever
- 改变阈值重跑同一命中集
- 检查层级边界与引用
- 交付检索前后映射
1. 建立清楚的父子ID
P-A与P-B各有4个子段,命中A1/A2/A3/B1。先画清楚属于哪份父文档,不能把跨文档命中数相加。
2. 复算命中占比
audit.py得到P-A为3/4、P-B为1/4,并比较0.5与0.8阈值。该表是作者参考,等于阈值时的行为还应以安装版Haystack代码核对。
本题独立目录执行
python reference/audit.py3. 保存父文档及层级元数据
使用HierarchicalDocumentSplitter或明确的__parent_id/__children_ids元数据,把完整父段写入DocumentStore。只索引子段而没存父段会无法回取。
本题SDK或目标环境入口
python reference/run_sdk.py4. 执行AutoMergingRetriever
将实际子段检索结果传给AutoMergingRetriever,记录其返回父段或子段的真实ID。不要把作者比率表当Retriever输出。
5. 改变阈值重跑同一命中集
固定hits,分别设置0.5和0.8。比较是否把A系列替换成P-A,B1应仍保留自身,不凭空带入P-B全部内容。
6. 检查层级边界与引用
从每个返回段回读原parent/source,不允许跨文档串接。negative中的A1/B1/B2不能共同达到P-A合并条件。
7. 交付检索前后映射
保存原命中、阈值、真实返回ID与内容,以及父子元数据。模型生成答案是后续环节,合并成功不证明答案引用正确。
怎样确认已经完成
- 父章节只来自同一文档
- 不足阈值仍返回子段
- 来源ID完整
- 已运行真实Haystack AutoMergingRetriever:0.5返回P-A/B1,0.8保留四个子段,threshold=1被拒绝;使用原创内存Document,未调用embedding或生成模型。
常见问题
Haystack多个子段命中后怎么返回完整父章节?
保留Document父子元数据,让AutoMergingRetriever按父段命中子段比例判断合并。真实0.5阈值返回P-A和B1。
AutoMergingRetriever的合并阈值怎么选?
用固定命中对照阈值:3/4子段在0.5下合并、0.8下不合并;当前要求比例严格大于阈值,threshold=1被拒绝。
这篇教程哪些步骤已经真正执行?
已运行真实Haystack AutoMergingRetriever:0.5返回P-A/B1,0.8保留四个子段,threshold=1被拒绝;使用原创内存Document,未调用embedding或生成模型。



