dspy.KNNFewShot
dspy.KNNFewShot(k: int, trainset: list[Example], vectorizer: Embedder, **few_shot_bootstrap_args)
继承自: Teleprompter
KNNFewShot 是一个优化器,它使用内存中的 KNN 检索器在测试时找到训练集中的 k 个最近邻。对于前向调用中的每个输入示例,它会从训练集中识别出 k 个最相似的示例,并将它们作为示例附加到学生模块。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
k
|
int
|
附加到学生模型的最近邻居数量。 |
必需 |
trainset
|
list[Example]
|
用于少量样本提示的训练集。 |
必需 |
vectorizer
|
Embedder
|
用于向量化的 |
必需 |
**few_shot_bootstrap_args
|
|
{}
|
Example
import dspy
from sentence_transformers import SentenceTransformer
# Define a QA module with chain of thought
qa = dspy.ChainOfThought("question -> answer")
# Create a training dataset with examples
trainset = [
dspy.Example(question="What is the capital of France?", answer="Paris").with_inputs("question"),
# ... more examples ...
]
# Initialize KNNFewShot with a sentence transformer model
knn_few_shot = KNNFewShot(
k=3,
trainset=trainset,
vectorizer=dspy.Embedder(SentenceTransformer("all-MiniLM-L6-v2").encode)
)
# Compile the QA module with few-shot learning
compiled_qa = knn_few_shot.compile(qa)
# Use the compiled module
result = compiled_qa("What is the capital of Belgium?")