解锁 AI 代理的力量:使用 Google 的 Gen AI 工具箱与 Neo4j 知识图谱的 5 大关键优势
- Rifx.Online
- Machine Learning , AI Applications , Data Science
- 08 Mar, 2025
Neo4j 和 Google 的 GenAI Toolbox
上个月,Google 宣布了 Gen AI Toolbox for Databases 的 公开 Beta 版发布。今天,我们很高兴地宣布 Toolbox 对 Neo4j(一个图数据库管理系统)的支持。Neo4j 一直是 Toolbox 支持和开发的关键合作伙伴。他们的加入使使用 Neo4j 的开发人员和组织能够创建使用流行的 GraphRAG 技术访问其数据的代理工具,从而扩大了 Toolbox 在 Gen AI 应用中的实用性。
Neo4j — 图数据库管理系统
Neo4j 是领先的开源图数据库 — 它不是将信息作为表格管理,而是将其作为实体(节点)及其之间的关系管理,从而实现对连接信息的灵活而强大的表示。图为许多领域增加了独特的功能,如生物医学、供应链、制造、欺诈检测和运输物流。知识图谱,您可以将其视为您组织的数字孪生(人员、流程、产品、合作伙伴等),是 LLM 语言技能的绝佳“事实记忆”伴侣。GraphRAG 的使用提高了 GenAI 应用程序的准确性、可靠性和可解释性。
Gen AI Toolbox
在创建访问数据库的工具时,开发人员在构建生产环境中的 AI 代理时会很快遇到许多挑战:身份验证、授权、清理、连接池等等。这些挑战可能会成为一种负担,减慢开发速度,并在反复实现相同的样板代码时留下出错的空间。
进入 Gen AI Toolbox — 这是一个开源服务器,可以帮助您更轻松、更快速、更安全地开发工具。Toolbox 位于您的应用程序和数据库之间 — 处理诸如连接池、身份验证等复杂问题。Toolbox 使您可以在集中位置定义工具,并以少于 3 行代码的方式与您的代理集成:
from toolbox_langchain import ToolboxClient
## update the url to point to your server
client = ToolboxClient("http://127.0.0.1:5000")
## these tools can be passed to your agent!
tools = await client.aload_toolset()
Toolbox 确实是开源的:作为发布的一部分,Google Cloud 与其他数据库供应商(如 Neo4j)合作,为大量开源和专有数据库构建支持:
- PostgresSQL (包括 AlloyDB 和 Cloud SQL for MySQL)
- MySQL (包括 Cloud SQL for MySQL)
- SQL Server (包括 Cloud SQL for SQL Server)
- Spanner
- Neo4j
使用 Toolbox 访问 Neo4j
在您安装了 Toolbox 服务器之后,您就可以配置您的 tools.yaml了。要创建一个查询 Neo4j 的工具,您需要配置 2 件事:
一个 Neo4j source,它定义了如何连接到您的 Neo4j 实例并对其进行身份验证。这是我们示例的 Neo4j source:
sources:
companies-graph:
kind: "neo4j"
uri: "neo4j+s://demo.neo4jlabs.com"
user: "companies"
password: "companies"
database: "companies"
定义了 source 之后,就可以定义工具了。neo4j-cypher tool 定义了当您的代理调用该工具时应运行的 cypher 查询。工具可以执行您可以用 cypher 语句表达的任何操作 — 包括读取或写入!为了与代理设置一起使用,详细描述工具、参数和结果非常重要,以便 LLM 可以推理其适用性。
这是我们示例的工具配置的一部分,包括 source、statement、description 和 parameters:
tools:
articles_in_month:
kind: neo4j-cypher
source: companies-graph
statement: |
MATCH (a:Article)
WHERE date($date) <= date(a.date) < date($date) + duration('P1M')
RETURN a.id as article_id, a.author as author, a.title as title, toString(a.date) as date, a.sentiment as sentiment
LIMIT 25
description: List of Articles (article_id, author, title, date, sentiment) in a month timeframe from the given date
parameters:
- name: date
type: string
description: Start date in yyyy-mm-dd format
companies_in_articles:
kind: neo4j-cypher
source: companies-graph
statement: |
MATCH (a:Article)-[:MENTIONS]->(c)
WHERE a.id = $article_id AND not exists { (c)<-[:HAS_SUBSIDARY]-() }
RETURN c.id as company_id, c.name as name, c.summary as summary
description: Companies (company_id, name, summary) mentioned in articles by article id
parameters:
- name: article_id
type: string
description: Article id to find companies mentioned in
投资研究代理
这是一个代理 LangChain 应用程序的演示,它使用结合全文和图搜索的 GraphRAG 模式的工具。
该示例代表一个投资研究代理,可用于查找有关公司、其投资者、竞争对手、合作伙伴和行业的最新新闻。它由从导入到 Neo4j 的 diffbot 知识图谱中的数据提供支持。它通过一组基本实体之间的关系来捕捉该领域的复杂性。
该示例的代码可以在此存储库中找到:
[## neo4j-gcp-vertex-ai-langchain/toolbox-companies at main ·…
Neo4j 扩展和与 Vertex AI 和 LangChain 的集成 - neo4j-gcp-vertex-ai-langchain/toolbox-companies at…
github.com](https://github.com/neo4j-examples/neo4j-gcp-vertex-ai-langchain/tree/main/toolbox-companies)
探索公共图数据集
该数据集是一个关于公司、相关行业、在这些公司工作或投资的人员以及报道这些公司的文章的图。
新闻文章被分块,这些块也存储在图中。
该数据库可供公众使用,有一个只读用户,您可以在以下 URL 探索数据:https://demo.neo4jlabs.com:7473/browser/
- URI:neo4j+s://demo.neo4jlabs.com
- 用户:companies
- 密码:companies
- 公司:companies
在我们的配置中,我们提供了使用全文索引以及图检索查询的工具,这些查询提取以下附加信息:
- Chunk 的父文章(聚合单个文章的所有块)
- 提及的组织
- 该组织的行业类别
- 与该组织相关联的人及其角色(例如,投资者、董事长、首席执行官)
我们利用了代理 LangChain 与 Vertex AI 的集成,这使我们能够将我们使用 Toolbox 注册的工具自动传递给 LLM 进行工具调用。我们将同时使用混合搜索和 GraphRAG 检索器。
将我们的代理连接到 Toolbox
我们现在可以将 LangChain 与 Vertex AI Gemini 2.0 Flash 模型一起使用,并将我们的工具定义提供给该模型并进行快速测试。我们可以按照工具箱文档中的 快速入门示例。
import asyncio
import os
from langgraph.prebuilt import create_react_agent
from langchain_google_vertexai import ChatVertexAI
from langgraph.checkpoint.memory import MemorySaver
from toolbox_langchain import ToolboxClient
prompt = """
You're a helpful investment research assistant.
You can use the provided tools to search for companies,
people at companies, industries, and news articles from 2023.
Don't ask for confirmations from the user.
User:
"""
queries = [
"What industries deal with computer manufacturing?",
"List 5 companies in the computer manufacturing industry with their description.",
]
def main():
model = ChatVertexAI(model_name="gemini-1.5-pro")
client = ToolboxClient("http://127.0.0.1:5000")
tools = client.load_toolset()
agent = create_react_agent(model, tools, checkpointer=MemorySaver())
config = {"configurable": {"thread_id": "thread-1"}}
for query in queries:
inputs = {"messages": [("user", prompt + query)]}
response = agent.invoke(inputs, stream_mode="values", config=config)
print(response["messages"][-1].content)
main()
The industries that deal with computer manufacturing are: Computer Hardware Companies, Electronic Products Manufacturers, and Computer Storage Companies.
Here are 5 companies in the computer hardware industry along with their descriptions:
1. **Microsoft Egypt:** Microsoft branch in Egypt
2. **Apigee:** Software company based in San Jose, California, United States and owned by Google
3. **Microsemi:** Communications corporation
4. **Intermec:** American electronics manufacturing company
5. **Elitegroup Computer Systems:** No summary available
示例对话
为代理提供检查数据不同方面的工具,使它能够回答甚至复杂和后续的问题,正如我们在下面的示例中所示。
哪些公司在 2023 年 1 月的新闻中被提及,并且情绪积极?
这个问题需要调用多个工具并进行适当的参数转换。我们给出了一个部分日期 2023 年 1 月,该日期必须转换为工具调用的 yyyy-mm-dd 格式。代理必须理解“良好情绪”是指数值分数,并且它需要对文章结果进行后过滤。然后,这些结果必须单独提供给 companies_in_article 工具,以检索公司。
以下是 2023 年 1 月情绪积极的文章,以及它们提到的公司:
Mozilla 的 Pocket App 刚刚获得重大更新 (0.838, 0.83): Mozilla
Onapsis 宣布与 Wipro 合作,将安全问题从数字化转型障碍中移除 (0.804, 0.735): Onapsis, Wipro, SAP
….
谁在那里担任董事会成员?
在这里,我们使用“那里”指回了上一个答案中的公司,并且仅模糊地指定了 API 调用选择的角色要求。代理需要多次调用 people_at_company 端点,使用先前在代理内存中检索到的公司的 ID,然后将信息聚合并过滤到响应中。
我无法检索所有公司的董事会成员。以下是我找到的信息:
Wipro:
- Azim Premji (BOARD_MEMBER)
- Rishad Premji (BOARD_MEMBER)
SAP:
- Hasso Plattner (BOARD_MEMBER)
- Jennifer Morgan (BOARD_MEMBER) …
后续步骤
在本文中,我们演示了如何构建基于代理的应用程序,该应用程序可以轻松地将基于数据库的工具与 Google 的 Gen AI Toolbox 集成。虽然我们专注于 Neo4j 中知识图谱的 GraphRAG 用例,但您可以在同一个基于代理的应用程序中组合不同的数据源和数据库类型。
如果您有兴趣使用 Toolbox 和 Neo4j 进行更多探索,我们建议您查看以下资源:
- Quickstart for running Toolbox locally
- Get Started with GraphRAG with Neo4j
- Deploying Toolbox to Cloud Run
由于 Toolbox 与不同的代理框架集成,您可以定义一次工具,并在多个用例中重复使用它们。Neo4j 发现很容易为 Toolbox 做出贡献,我们希望您能利用 反馈和讨论机制 来添加您自己的数据源并提供反馈和改进。