跳转到内容

FalkorDB 图数据库存储

本笔记本将指导如何配置 FalkorDB 作为 LlamaIndex 中图存储的后端。

%pip install llama-index-llms-openai
%pip install llama-index-graph-stores-falkordb
# My OpenAI Key
import os
os.environ["OPENAI_API_KEY"] = "API_KEY_HERE"
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.INFO)

启动FalkorDB作为图数据库的最简单方法是使用falkordb docker镜像。

要跟随本教程的每一步,请按如下方式启动镜像:

Terminal window
docker run -p 6379:6379 -it --rm falkordb/falkordb:edge
from llama_index.graph_stores.falkordb import FalkorDBGraphStore
graph_store = FalkorDBGraphStore(
"redis://localhost:6379", decode_responses=True
)
INFO:numexpr.utils:NumExpr defaulting to 8 threads.
from llama_index.core import SimpleDirectoryReader, KnowledgeGraphIndex
from llama_index.llms.openai import OpenAI
from llama_index.core import Settings
from IPython.display import Markdown, display
documents = SimpleDirectoryReader(
"../../../../examples/paul_graham_essay/data"
).load_data()
# define LLM
llm = OpenAI(temperature=0, model="gpt-3.5-turbo")
Settings.llm = llm
Settings.chunk_size = 512
from llama_index.core import StorageContext
storage_context = StorageContext.from_defaults(graph_store=graph_store)
# NOTE: can take a while!
index = KnowledgeGraphIndex.from_documents(
documents,
max_triplets_per_chunk=2,
storage_context=storage_context,
)

首先,我们可以仅查询并将三元组发送给LLM。

query_engine = index.as_query_engine(
include_text=False, response_mode="tree_summarize"
)
response = query_engine.query(
"Tell me more about Interleaf",
)
display(Markdown(f"<b>{response}</b>"))

Interleaf 是一家软件公司,成立于1981年。该公司专注于开发和销售桌面出版软件。其旗舰产品名为 Interleaf,这是一款用于创建和发布复杂文档的强大工具。Interleaf 的软件广泛应用于航空航天、国防和政府等行业,这些领域需要创建技术文档和手册。该公司于2000年被 BroadVision 收购。

为了获取更详细的答案,我们还可以发送从中提取检索到的三元组的原始文本。

query_engine = index.as_query_engine(
include_text=True, response_mode="tree_summarize"
)
response = query_engine.query(
"Tell me more about Interleaf",
)
display(Markdown(f"<b>{response}</b>"))

Interleaf 是一家拥有优秀人才并开发了令人印象深刻技术的公司。然而,它面临挑战并最终被摩尔定律击垮。20世纪90年代,商用处理器(尤其是英特尔处理器)性能的指数级增长导致高端专用硬件和软件公司被整合淘汰。Interleaf 正是这一趋势的牺牲品之一。尽管该公司拥有才华横溢的员工和先进技术,却无法与处理器性能的飞速发展相抗衡。

%pip install pyvis
## create graph
from pyvis.network import Network
g = index.get_networkx_graph()
net = Network(notebook=True, cdn_resources="in_line", directed=True)
net.from_nx(g)
net.show("falkordbgraph_draw.html")