DSPy is a programming framework for building language-model applications without tying task logic to one model, database, vectorization method, or prompt design. It hides routine integration and prompting details, making components easier to replace and maintain. section 5.5.2 section 5.6
A DSPy program can separate:
- The default language model, such as GPT-3.5 or a local model such as Llama. section 5.5.2
- The searchable database and vectorized-document method, such as ColBERTv2 over Wikipedia abstracts. section 5.5.2
- The task pipeline: retrieve relevant passages, then generate an answer from the question and passages. section 5.5.2
Listing 5.1 Simplest RAG in DSPy
import dspy
llm = dspy.OpenAI(model='gpt-3.5-turbo') #1
similarity_and_database = dspy.ColBERTv2( #2
'wiki17_abstracts'
)
dspy.settings.configure( #3
lm=llm,
rm=similarity_and_database
)
class RAG(dspy.Module):
def __init__(self, num_passages=3):
super().__init__()
self.retrieve = dspy.Retrieve( #4
k=num_passages
)
self.generate_answer = dspy.Prediction( #5
"question,relevant_documents -> answer"
)
def forward(self, question): #6
documents = self.retrieve(
question
).passages
return self.generate_answer(
question=question,
relevant_documents=documents
).answer
The smallest RAG example configures a language model and retrieval database, retrieves three passages, and passes them to an answer-generation module. section 5.5.2


