2026年7月9日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

基于GraphRAG的SEO智能助手实战案例 - 解锁大模型和知识图谱结合的力量

发布日期:2024-07-16 19:23:22 浏览次数: 3176
作者:知识图谱科技

微信搜一搜,关注“知识图谱科技”

摘要

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

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅