Stanford DSPy
DSPy 是一个用于解决语言模型 (LM) 和检索模型 (RM) 高级任务的框架。它统一了提示和微调 LM 的技术,以及推理、自我改进以及使用检索和工具进行增强的方法。
提供可组合和声明式模块,用于以熟悉的 Pythonic 语法指导 LM。
引入了一个自动编译器,用于教导 LM 如何执行程序中的声明式步骤。
Qdrant 可用作 DSPy 工作流中的检索机制。
安装
对于 Qdrant 检索集成,请包含带有 qdrant
额外选项的 dspy-ai
pip install dspy-ai dspy-qdrant
用法
我们可以配置 DSPy
设置,像这样使用 Qdrant 检索器模型:
import dspy
from dspy_qdrant 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 蓝图,您就可以利用 DSPy 提供的众多交互,这些交互由 Qdrant 提供支持的上下文检索驱动。