斯坦福 DSPy

DSPy 是一个用于解决高级任务的框架,结合了语言模型(LMs)和检索模型(RMs)。它统一了提示和微调语言模型的技术,以及推理、自我改进和通过检索与工具进行增强的方法。

  • 提供可组合和声明式的模块,用于以熟悉的Python语法指导LMs。

  • 介绍了一个自动编译器,它教会语言模型如何执行程序中的声明性步骤。

Qdrant 可以用作 DSPy 流程中的检索机制。

安装

对于Qdrant检索集成,请包含dspy-aiqdrant额外内容:

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提供的许多交互。

下一步

这个页面有用吗?

感谢您的反馈!🙏

我们很抱歉听到这个消息。😔 你可以在GitHub上编辑这个页面,或者创建一个GitHub问题。