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 提供支持的上下文检索驱动。

下一步

此页面有用吗?

感谢您的反馈!🙏

很抱歉听到您这么说。😔 您可以在 GitHub 上编辑此页面,或创建一个 GitHub Issue。