当检索到的文本超过提示限制时,两种主要技术是摘要和关键句子选择,每种技术都有其权衡。摘要通过压缩内容来减少文本,可以通过抽取方法(选择现有句子)或抽象方法(生成新句子)。关键句子选择使用 TF-IDF、BM25 或嵌入相似性等算法来识别最相关的部分。两种方法都旨在保留关键信息,同时减少令牌使用量。第三种选择是分块,它将文本分成更小的片段分别处理,但这有失去更广泛上下文的风险。选择取决于用例:摘要保留叙述流程,而选择优先考虑精确性。
对于实现,开发人员可以使用现有的库或模型。例如,抽取式摘要可能涉及像 gensim
这样的 Python 库,它使用 TextRank 来对句子按重要性进行评分。抽象式摘要可以使用 Hugging Face 的 transformers
来利用像 BART 或 T5 这样的预训练模型。关键句子选择可以使用 sentence-transformers
来嵌入句子和查询,然后通过余弦相似度对其进行排序。分块可能涉及具有重叠的滑动窗口,以最大限度地减少上下文丢失。每种方法都需要调整:调整摘要长度、相似性阈值或块大小。例如,问答系统可能会优先考虑与查询中的命名实体匹配的关键句子,而研究工具可能更喜欢摘要来保留想法之间的联系。
评估对准确性的影响包括比较使用完整文本生成的输出与缩减版本生成的输出。指标包括完全匹配(对于事实性答案)、ROUGE-L(对于摘要质量)或 BERTScore(语义相似性)。开发人员可以运行 A/B 测试:例如,衡量基于摘要的答案在测试数据集中与完整文本答案匹配的频率。还应跟踪处理时间和成本等实际因素。如果无法进行全文处理,则人工评估可以评估缩减后的内容是否仍然支持正确答案。例如,使用摘要的医疗聊天机器人可能在药物剂量问题上显示 95% 的准确率,但在复杂诊断查询中降至 80%,表明上下文丢失会损害性能。迭代测试有助于平衡简洁性和准确性。