文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
文档

TopPSampler

使用 Top-p 采样来过滤文档。

pipeline 中的最常见位置Ranker 之后
必需的初始化变量"top_p": 一个介于 0 和 1 之间的浮点数,表示文档选择的累积概率阈值。
强制运行变量“documents”:文档列表
输出变量“documents”:文档列表
API 参考Samplers (采样器)
GitHub 链接https://github.com/deepset-ai/haystack/blob/main/haystack/components/samplers/top_p.py

概述

Top-P(核)采样是一种根据文档的累积概率来识别和选择文档子集的方法。这种方法不是选择固定数量的文档,而是关注列表中具有最高累积概率的指定百分比。简而言之,TopPSampler 提供了一种根据文档与给定查询的相似性来有效选择最相关文档的方法。

的实际目标是TopPSampler 返回一个文档列表,这些文档的总得分大于 top_p 值。例如,当 top_p 设置为较高值时,将返回更多文档,这可能导致输出更加多样化。该值通常设置为 0 到 1 之间。默认情况下,该组件使用文档的score 字段来查看相似度得分。

该组件的 run() 方法接收一组文档,计算查询与文档之间的相似度得分,然后根据这些得分的累积概率过滤文档。

用法

单独使用

from haystack import Document
from haystack.components.samplers import TopPSampler

sampler = TopPSampler(top_p=0.99, score_field="similarity_score")
docs = [
    Document(content="Berlin", meta={"similarity_score": -10.6}),
    Document(content="Belgrade", meta={"similarity_score": -8.9}),
    Document(content="Sarajevo", meta={"similarity_score": -4.6}),
]
output = sampler.run(documents=docs)
docs = output["documents"]
print(docs)

在 pipeline 中

要最好地理解如何使用TopPSampler 以及可以将其与哪些组件配对,请查看此食谱


相关链接

在我们的 API 参考中查看参数详情