斯坦福 DSPy
DSPy 是一个用于解决高级任务的框架,结合了语言模型(LMs)和检索模型(RMs)。它统一了提示和微调语言模型的技术,以及推理、自我改进和通过检索与工具进行增强的方法。
提供可组合和声明式的模块,用于以熟悉的Python语法指导LMs。
介绍了一个自动编译器,它教会语言模型如何执行程序中的声明性步骤。
Qdrant 可以用作 DSPy 流程中的检索机制。
安装
对于Qdrant检索集成,请包含dspy-ai与qdrant额外内容:
pip install dspy-ai[qdrant]
用法
我们可以这样配置DSPy设置以使用Qdrant检索模型:
import dspy
from dspy.retrieve.qdrant_rm import QdrantRM
from qdrant_client import QdrantClient
turbo = dspy.OpenAI(model="gpt-3.5-turbo")
qdrant_client = QdrantClient() # Defaults to a local instance at http://localhost:6333/
qdrant_retriever_model = QdrantRM("collection-name", qdrant_client, k=3)
dspy.settings.configure(lm=turbo, rm=qdrant_retriever_model)
使用检索器非常简单。dspy.Retrieve(k)模块将搜索与给定查询匹配的前k个段落。
retrieve = dspy.Retrieve(k=3)
question = "Some question about my data"
topK_passages = retrieve(question).passages
print(f"Top {retrieve.k} passages for question: {question} \n", "\n")
for idx, passage in enumerate(topK_passages):
print(f"{idx+1}]", passage, "\n")
将Qdrant配置为上下文的检索器后,您可以像这样设置一个DSPy模块:
class RAG(dspy.Module):
def __init__(self, num_passages=3):
super().__init__()
self.retrieve = dspy.Retrieve(k=num_passages)
...
def forward(self, question):
context = self.retrieve(question).passages
...
现在有了通用的RAG蓝图,您可以通过Qdrant支持的上下文检索添加DSPy提供的许多交互。
