CPO Query Generator
class CPOQueryGenerator(dspy.Module):
def __init__(self, model_name="mistralai/Mistral-7B"):
super().__init__()
self.query_generator = dspy.Predict(
"""Generate diverse, relevant search queries based on the document.
Document: {document}
Generate {num_queries} unique queries that would retrieve this document."""
)
def generate_queries(self, document, num_queries=5):
result = self.query_generator(document=document, num_queries=num_queries)
queries = self._parse_queries(result.queries)
return self._ensure_diversity(queries)