用途:指导在 DSPy 程序中接入检索能力,完成文档搜索、嵌入计算与 RAG(检索增强生成)管道构建。
主要能力:dspy.Retrieve 是检索基类,可包装 Elasticsearch、Pinecone 等后端,返回含 passages 列表的 dspy.Prediction;dspy.ColBERTv2 是查询托管 ColBERTv2 服务的客户端;dspy.Embedder 用 LiteLLM 支持的模型把文本转为向量;dspy.retrievers.Embeddings 基于 FAISS 做本地向量检索,支持 save 与 from_saved 避免重复嵌入。
使用方式:可全局配置 dspy.configure(lm=lm, rm=colbert) 后使用 dspy.Retrieve(k=5),或直接把检索器传入模块。自定义后端需继承 dspy.Retrieve 并实现 forward(),返回 dspy.Prediction(passages=[...])。k 可在初始化或调用时设置。RAG 常见模式为检索 passages 后交给 dspy.ChainOfThought 生成答案,也可用 dspy.Refine 做来源约束、链式检索做多跳问答。
适用场景:小中型语料快速原型用 Embeddings;需要托管可扩展检索服务用 ColBERTv2;已有向量库则继承 Retrieve;需要完全控制嵌入时用 Embedder 搭配自有向量库。
限制与注意:未配置 rm 就调用 dspy.Retrieve 会报错;大语料每次重嵌入浪费资源,应保存索引;RAG 训练样本需调用 .with_inputs();自定义检索器必须返回 dspy.Prediction;k 过大会挤占上下文并降低质量,建议从 3 到 5 起并用评估调优。dspy.experimental.Citations 属实验 API,可能变动。安装命令:npx skills add lebsral/DSPy-Programming-not-prompting-LMs-skills --skill <name>。