AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


基于GraphRAG的SEO智能助手实战案例 - 解锁大模型和知识图谱结合的力量
发布日期:2024-07-16 19:23:22 浏览次数: 2014 来源:知识图谱科技


摘要

Unlocking The Power Of LLM And Knowledge Graph (An Introduction),by Sylvain Peyronnet ,CEO at Babbar / yourtextguru

本文介绍了如何利用LLM和知识图谱的强大功能制作AI助手,并详细解释了RAG和GraphRAG的应用。

通过整合外部API,构建了名为VictorIA的SEO助手,该助手不仅能生成内容、传递SEO行业知识,还能与SaaS工具互动,展示了未来SEO自动化的潜力。

知识图谱的应用与LMI框架的结合为助手的开发提供了重要支持。通过向LLM输入自然语言问题并与API进行交互,构建了一个信息丰富、有结构性的助手。GraphRAG方法虽然提高了答案的完整性,但也带来了一定的延迟。

最终,展示了如何在Jupyter Notebook中逐步构建GraphRAG对话代理。这一工作为助手的未来发展指明了方向,表明辅助工具可能会在SEO领域产生深远影响。

Source:

https://www.searchenginejournal.com/unlocking-the-power-of-llm-knowledge-graph-introduction/518343/

正文

我们正处在一个激动人心的时代,AI 的进步正在改变专业实践。

自发布以来,GPT-3 已经在 SEM 领域的专业人士在他们的与内容相关的任务中“辅助”。

然而,ChatGPT 在 2022 年底的推出引发了朝着创建 AI 助手的运动。

到 2023 年底,OpenAI 推出了 GPTs,结合了指令、额外知识和任务执行。

GPTs的未来

GPT 为实现个人助理的梦想铺平了道路,现在看来这一目标已经是可以实现的。会话式 LLM 代表了人机界面的理想形式。要开发强大的 AI 助手,必须解决许多问题:模拟推理、避免幻觉,以及增强使用外部工具的能力。

我们开发SEO助手的旅程

过去几个月里,我和我的两位长期合作伙伴Guillaume和Thomas一直在研究这个课题。我在这里展示我们的第一个原型SEO助手的开发过程。

为什么做SEO 助手?

我们的目标是创建一款助手,能够:

  • 根据简要说明生成内容。

  • 提供关于SEO的行业知识。它应该能够细致回答诸如“每页应该有多个H1标签吗?”或“TTFB是排名因素吗?”这样的问题。

  • 与SaaS工具互动。我们都使用各种复杂程度的图形用户界面工具。通过对话来使用它们可以简化它们的使用。

  • 规划任务(例如,管理一个完整的编辑日历)并执行定期的报告任务(例如创建仪表板)。


对于第一个任务,只要我们能约束它们使用准确的信息,LLM已经非常先进了。

关于规划的最后一点仍然在科幻领域里。

因此,我们专注于将数据整合到助手中,使用RAG和GraphRAG方法以及外部API。

RAG 方法

我们首先将基于检索增强生成(RAG)方法创建一个助手。

RAG是一种技术,通过提供外部信息而不是内部结构(其训练)来减少模型的幻觉。直觉上,这就像与一个有搜索引擎访问权限的聪明但失忆的人进行交流。

图像来自作者,2024年6月

为了构建这个助手,我们将使用向量数据库。有许多可用的选项:Redis、Elasticsearch、OpenSearch、Pinecone、Milvus、FAISS 等。我们选择了 LlamaIndex 提供的向量数据库用于我们的原型。

我们还需要一个语言模型集成(LMI)框架。该框架旨在将 LLM 与数据库(和文档)链接起来。在这方面,也有许多选项:LangChain、LlamaIndex、Haystack、NeMo、Langdock、Marvin 等。我们在项目中使用了 LangChain 和 LlamaIndex。

一旦您选择了软件堆栈,实施就相当简单。我们提供文档,框架将其转换为编码了内容的矢量。

有许多技术参数可以改善结果。然而,像 LlamaIndex 这样的专门搜索框架在本机上表现相当出色。

对于我们的概念验证,我们提供了一些法语 SEO 书籍和一些著名 SEO 网站的网页。

使用 RAG 可以减少幻觉并获得更完整的答案。您可以在下一张图片中看到一个本地 LLM 答案的示例以及使用我们的 RAG 的相同 LLM 的答案。

作者提供的图片,2024年6月

我们在这个例子中看到,由RAG提供的信息要比仅由LLM提供的信息稍微完整一些。

GraphRAG方法

RAG 模型通过整合外部文档来增强 LLM,但仍然有困难将这些来源整合在一起,并从大语料库中高效提取最相关的信息。

如果一个答案需要结合来自多个文档的多个信息片段,RAG 方法可能不够有效。为了解决这个问题,我们预处理文本信息以提取其携带的语义底层结构。

这意味着创建一个知识图谱,这是一种数据结构,以图中实体之间的关系进行编码。这种编码以主语-关系-客体三元组形式完成。

在下面的例子中,我们有几个实体及其关系的表示。

图像来自作者,2024年6月

图中描绘的实体是“水獭鲍勃”(命名实体),还有“河流”、“水獭”、“毛皮宠物”和“鱼”。关系显示在图的边缘。

这些数据是有结构的,并表明水獭鲍勃是一只水獭,水獭生活在河流中,吃鱼,并且是毛皮宠物。知识图非常有用,因为它们允许进行推理:我可以从这个图推断出水獭鲍勃是一只毛皮宠物!

构建知识图谱是使用NLP技术长期以来一直在进行的任务。然而,LLM通过其处理文本的能力有助于创建这样的图谱。因此,我们将要求一个LLM创建知识图谱。

作者提供的图片,2024年6月

当然,正是LMI框架有效地引导LLM执行这项任务。我们在项目中使用了LlamaIndex。

此外,使用GraphRAG方法时,我们助手的结构变得更加复杂(请参见下图)。

作者提供的图片,2024年6月

稍后我们将回到工具API集成,但其他方面,我们看到了一个RAG方法的要素,以及知识图谱。请注意“提示处理”组件的存在。

这是助手代码的一部分,它首先将提示转换为数据库查询。然后,它通过从知识图谱输出中制作人类可读的响应来执行相反的操作。

下图显示了我们用于提示处理的实际代码。您可以在这张图片中看到,我们使用了NebulaGraph,这是第一个部署GraphRAG方法的项目之一。

作者提供的图片,2024年6月

可以看到提示非常简单。事实上,大部分工作都是由LLM本地完成的。LLM越好,结果也就越好,即使是开源的LLM也能提供高质量的结果。我们已经使用了在RAG中使用的相同信息来供给知识图谱。答案的质量更好了吗?让我们以同一个例子来看一下。

作者提供的图片,2024年6月

我让读者来判断这里提供的信息是否比以前的方法更好,但我觉得它更有结构和完整性。然而,GraphRAG的缺点是获取答案的延迟(稍后我会再谈到这个用户体验问题)。

整合SEO工具数据

在这一点上,我们有一个助手可以更准确地撰写和传递知识。但我们也希望让助手能够从 SEO 工具中传递数据。为了实现这一目标,我们将使用 LangChain 以自然语言交互 API。

这是通过向 LLM 解释如何使用给定的 API 的函数来完成的。对于我们的项目,我们使用了 babbar.tech 工具的 API(完全披露:我是开发该工具的公司的首席执行官)。

作者提供的图片,2024年6月

上面的图片展示了助手如何收集关于特定URL的链接度量信息。然后,我们在框架级别(这里是LangChain)指出该功能是可用的。

tools = [StructuredTool.from_function(get_babbar_metrics)]
agent = initialize_agent(tools, ChatOpenAI(temperature=0.0, model_name="gpt-4"),
agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION, verbose=False, memory=memory)

这三行代码将从上述功能中设置一个LangChain工具,并初始化一个用于制作有关数据答案的对话。请注意,温度为零。这意味着GPT-4将输出直接的答案,没有创造力,这对于从工具传递数据更好。

再次,LLM在这里大部分工作都是它将自然语言问题转换为API请求,然后从API输出返回到自然语言。

作者提供的图片,2024年6月

您可以下载Jupyter Notebook文件,按照逐步说明,在您的本地环境上构建GraphRAG对话代理。

在实施上述代码后,您可以在Jupyter笔记本中使用下面的Python代码与新创建的代理进行交互。在代码中设置您的提示并运行它。

import requests
import json

# Define the URL and the query
url = "http://localhost:5000/answer"

# prompt
query = {"query": "what is seo?"}

try:
# Make the POST request
response = requests.post(url, json=query)

# Check if the request was successful
if response.status_code == 200:
# Parse the JSON response
response_data = response.json()

# Format the output
print("Response from server:")
print(json.dumps(response_data, indent=4, sort_keys=True))
else:
print("Failed to get a response. Status code:", response.status_code)
print("Response text:", response.text)
except requests.exceptions.RequestException as e:
print("Request failed:", e)

总结分析

使用LLM(例如GPT-4)与RAG和GraphRAG方法,并添加对外部API的访问,我们已经构建了一个概念验证,展示了SEO自动化未来可能的样子。

它为我们提供了对我们领域所有知识的平稳访问,以及与最复杂工具互动的简便方式(谁从未抱怨过即使是最好的SEO工具的GUI呢?)。

仅剩下两个问题要解决:答案的延迟和与机器人讨论的感觉。

第一个问题是由于需要在LLM和图形或向量数据库之间来回进行计算所需的时间。在我们的项目中,要回答非常复杂的问题可能需要长达10秒的时间。

这个问题只有几个解决方案:增加硬件或等待我们正在使用的各种软件模块的改进。

第二个问题更棘手。虽然LLM模拟了实际人类的语气和写作风格,但界面是专有的这一事实说明了一切。

这两个问题都可以用一个聪明的技巧来解决:使用一个众所周知,大多数人使用,且延迟通常的文本界面(因为人类以异步方式使用)。

我们选择了WhatsApp作为与我们的SEO助手的通信渠道。这是我们工作中最容易的部分,通过Twilio的消息API使用WhatsApp业务平台完成。

最终,我们获得了一个名为VictorIA的SEO助手(这个名字结合了Victor - 著名法国作家维克多·雨果的名字和IA - 意为"人工智能"的法语首字母缩写),您可以在下面的图片中看到。

作者提供的图片,2024年6月

结论

我们的工作只是激动人心旅程的第一步。助手可能塑造我们领域的未来。GraphRAG(+API)促进了LLMs,使公司能够建立自己的平台能力。

这样的助手可以帮助新入职的初级合作者(减少他们向高级员工提问简单问题的需求)或为客户支持团队提供知识库。

我们已经包含了源代码,供有足够经验直接使用的任何人使用。这段代码的大多数元素都很简单,关于Babbar工具的部分可以跳过(或者替换为其他工具的API)。

然而,了解如何设置Nebula图存储实例是至关重要的,最好是在本地进行设置,因为在Docker中运行Nebula会导致性能不佳。这一设置已经有文档记录,但乍一看可能看起来复杂。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询