展开本页目录
开始前准备什么
- 下载完整练习包,在独立目录阅读README与已执行范围。
- 安装requirements.txt指定版本或使用文中目标工具;依赖与模型权重不要混入网站工程。
- 只有明确标为已执行的部分有本次证据;真实模型、账号或GPU步骤按自己的环境另行验证。
- 保留同句不同来源反例
- 确认分句坐标从哪里来
- 为Haystack保留元数据
- 运行句窗Retriever
- 单独验证开头与结尾
- 追查引用是否仍对齐
- 交付窗口与原句对照
1. 保留同句不同来源反例
A/B文档都有“Tighten the left screw.”,但相邻说明不同。命中句文本相同并不代表它们可以共享上下文。
2. 确认分句坐标从哪里来
input.json使用source_id与split_id,window_size=1表示前后各补一句。先跑audit.py复算A文档窗口应是第0到2句。
本题独立目录执行
python reference/audit.py3. 为Haystack保留元数据
把句子作为Document写入DocumentStore,保留来源ID和分句顺序。若使用DocumentSplitter,核对安装版本实际生成的source_id/split_id字段。
本题SDK或目标环境入口
python reference/run_sdk.py4. 运行句窗Retriever
将A的命中句交给SentenceWindowRetriever,保存返回上下文和对应元数据。当前包作者窗口计算不冒称目标Retriever运行。
5. 单独验证开头与结尾
把命中移到第0句或末句,窗口应正常缩短而非补进另一文档。增加window_size时也不能跨source_id。
6. 追查引用是否仍对齐
答案引用应指向原命中或补回句子的真实来源位置。B文档封条说明不能出现在A的窗口里。
7. 交付窗口与原句对照
保留命中ID、窗口ID、内容和边界用例;不把扩充上下文说成重新训练embedding。未执行的SDK/模型部分在回执中单列。
怎样确认已经完成
- 不跨文档补句
- 窗口边界不足时正常缩短
- 命中原句可定位
- 已运行真实Haystack SentenceWindowRetriever,返回A0/A1/A2并排除B来源,window_size=0被拒绝;未执行embedding或答案生成。
常见问题
Haystack命中一句话后怎么补回前后文?
SentenceWindowRetriever依据source_id和split_id取命中句前后window_size句。真实例子返回A0/A1/A2。
SentenceWindowRetriever怎么避免把两份文档串在一起?
两份文档必须有各自稳定source_id和顺序split_id,即使命中句完全同文也不能混来源。实际本包排除了B文档。
这篇教程哪些步骤已经真正执行?
已运行真实Haystack SentenceWindowRetriever,返回A0/A1/A2并排除B来源,window_size=0被拒绝;未执行embedding或答案生成。



