LangGraph

LangGraph 是一个用于构建有状态、多参与者应用程序的库,非常适合创建 agentic 工作流。它提供了对应用程序流程和状态的精细控制,这对于创建可靠的 agent 至关重要。

您可以定义包含循环的流程,这对于大多数 agentic 架构至关重要,使其有别于基于 DAG 的解决方案。此外,LangGraph 包括内置的持久性,支持高级的人类参与循环和记忆功能。

LangGraph 与 LangChain 的所有组件无缝协作。这意味着我们可以利用 Qdrant 的 Langchain 集成 在 LangGraph 中创建检索节点,支持 Python 和 Javascript!

用法

  • 安装所需的依赖项
$ pip install langgraph langchain_community langchain_qdrant fastembed
$ npm install @langchain/langgraph langchain @langchain/qdrant @langchain/openai
  • 创建一个检索工具以添加到 LangGraph 工作流中。

from langchain.tools.retriever import create_retriever_tool
from langchain_community.embeddings import FastEmbedEmbeddings

from langchain_qdrant import FastEmbedSparse, QdrantVectorStore, RetrievalMode

# We'll set up Qdrant to retrieve documents using Hybrid search.
# Learn more at https://qdrant.org.cn/articles/hybrid-search/
retriever = QdrantVectorStore.from_texts(
    url="http://localhost:6333/",
    collection_name="langgraph-collection",
    embedding=FastEmbedEmbeddings(model_name="BAAI/bge-small-en-v1.5"),
    sparse_embedding=FastEmbedSparse(model_name="Qdrant/bm25"),
    retrieval_mode=RetrievalMode.HYBRID,
    texts=["<SOME_KNOWLEDGE_TEXT>", "<SOME_OTHER_TEXT>", ...]
).as_retriever()

retriever_tool = create_retriever_tool(
    retriever,
    "retrieve_my_texts",
    "Retrieve texts stored in the Qdrant collection",
)
import { QdrantVectorStore } from "@langchain/qdrant";
import { OpenAIEmbeddings } from "@langchain/openai";
import { createRetrieverTool } from "langchain/tools/retriever";

const vectorStore = await QdrantVectorStore.fromTexts(
    ["<SOME_KNOWLEDGE_TEXT>", "<SOME_OTHER_TEXT>"],
    [{ id: 2 }, { id: 1 }],
    new OpenAIEmbeddings(),
    {
        url: "http://localhost:6333/",
        collectionName: "goldel_escher_bach",
    }
);

const retriever = vectorStore.asRetriever();

const tool = createRetrieverTool(
  retriever,
  {
    name: "retrieve_my_texts",
    description:
      "Retrieve texts stored in the Qdrant collection",
  },
);
  • 在 LangGraph 中添加检索工具作为节点
from langgraph.graph import StateGraph
from langgraph.prebuilt import ToolNode

workflow = StateGraph()

# Define other the nodes which we'll cycle between.
workflow.add_node("retrieve_qdrant", ToolNode([retriever_tool]))

graph = workflow.compile()
import { StateGraph } from "@langchain/langgraph";
import { ToolNode } from "@langchain/langgraph/prebuilt";

// Define the graph
const workflow = new StateGraph(SomeGraphState)
  // Define the nodes which we'll cycle between.
  .addNode("retrieve", new ToolNode([tool]));

const graph = workflow.compile();

延伸阅读

此页面是否有帮助?

感谢您的反馈!🙏

得知此情况我们很抱歉。😔 您可以在 GitHub 上 编辑 此页面,或 创建 一个 GitHub issue。