dspy.KNNFewShot
dspy.KNNFewShot(k: int, trainset: list[Example], vectorizer: Embedder, **few_shot_bootstrap_args)
Bases: Teleprompter
KNNFewShot is an optimizer that uses an in-memory KNN retriever to find the k nearest neighbors in a trainset at test time. For each input example in a forward call, it identifies the k most similar examples from the trainset and attaches them as demonstrations to the student module.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
k
|
int
|
The number of nearest neighbors to attach to the student model. |
required |
trainset
|
list[Example]
|
The training set to use for few-shot prompting. |
required |
vectorizer
|
Embedder
|
The |
required |
**few_shot_bootstrap_args
|
Additional arguments for the |
{}
|
Example
import dspy from sentence_transformers import SentenceTransformer
qa = dspy.ChainOfThought("question -> answer") trainset = [dspy.Example(question="What is the capital of France?", answer="Paris").with_inputs("question"), ...] knn_few_shot = KNNFewShot(k=3, trainset=trainset, vectorizer=dspy.Embedder(SentenceTransformer("all-MiniLM-L6-v2").encode)) compiled_qa = knn_few_shot.compile(qa) compiled_qa("What is the capital of Belgium?")