LangChain + Neo4j 集成
概述
LangChain 是一个用于构建由大型语言模型驱动的应用程序的 Python 工具包。它提供可组合的链和代理、庞大的集成生态系统、记忆和检索系统,以及生产必备的回调、追踪和评估工具等功能。
安装
pip install langchain langchain-neo4j langchain-mcp-adapters
核心功能
-
可组合的链和 ReAct 风格的代理
-
通过
langchain-neo4j包实现原生 Neo4j 集成 -
通过
langchain-mcp-adapters支持 MCP 服务器 -
使用
@tool装饰器创建自定义工具 -
几乎支持所有主要的 LLM 提供商(OpenAI、Anthropic、Google、Cohere、Mistral、AWS Bedrock、Azure 等)
扩展点
1. MCP 集成
LangChain 通过 langchain-mcp-adapters 包支持 MCP 服务器。使用 MultiServerMCPClient 连接到 MCP 服务器并检索工具。
-
Neo4j MCP 服务器: 利用
mcp-neo4j-cypher进行模式读取和 Cypher 查询执行
2. 直接 Neo4j 集成
langchain-neo4j 包提供原生集成,以获得更高的控制力
-
Neo4jGraph: 直接连接 Neo4j,在自定义工具中执行 Cypher 查询
-
Neo4jVector: 向量存储集成,用于对图数据进行语义搜索,支持混合搜索和自定义检索查询
3. 自定义工具/函数
使用 @tool 装饰器定义自定义 Neo4j 工具
-
通过文档字符串指定工具名称和描述
-
实现使用
Neo4jGraph或Neo4jVector执行 Cypher 查询的函数 -
将结果以结构化 JSON 返回
-
在单一代理中将 MCP 工具与自定义工具结合
4. Neo4j 检查点保存器
langchain-neo4j 包提供检查点保存器,用于将代理状态持久化到 Neo4j
-
Neo4jSaver: 同步检查点,用于存储对话历史和代理状态
-
AsyncNeo4jSaver: 异步变体,用于非阻塞的检查点操作
from langgraph.checkpoint.neo4j import AsyncNeo4jSaver
async with await AsyncNeo4jSaver.from_conn_string(
uri=NEO4J_URI,
user=NEO4J_USERNAME,
password=NEO4J_PASSWORD,
database=NEO4J_DATABASE
) as checkpointer:
await checkpointer.setup()
agent = create_agent(
model,
tools,
system_prompt=prompt,
checkpointer=checkpointer,
)
MCP 身份验证
支持的机制
✅ 环境变量(STDIO 传输) - 对于本地 MCP 服务器(如 mcp-neo4j-cypher),凭证通过生成时的 env 参数传递。
✅ HTTP Header(HTTP/SSE 传输) - 对于远程 MCP 服务器,通过 headers 参数传递 API 密钥或 Bearer 令牌(例如 Authorization: Bearer ${API_TOKEN})。
❌ OAuth 2.0(客户端内部) - 当前 Python SDK 不支持在客户端内部进行 OAuth2 MCP 认证。
配置示例(STDIO 传输)
cypher_mcp_config = {
"neo4j-database": {
"transport": "stdio",
"command": "uvx",
"args": ["mcp-neo4j-cypher"],
"env": {
"NEO4J_URI": os.environ.get("NEO4J_URI"),
"NEO4J_USERNAME": os.environ.get("NEO4J_USERNAME"),
"NEO4J_PASSWORD": os.environ.get("NEO4J_PASSWORD"),
"NEO4J_DATABASE": os.environ.get("NEO4J_DATABASE", "neo4j")
}
}
}