LightRAG
LightRAG is a retrieval-augmented generation (RAG) framework that extracts entities and relationships from your documents into a knowledge graph and retrieves from it to answer questions. It supports Memgraph as its graph storage. Unstructured2Graph can use LightRAG as its extraction backend to build knowledge graphs in Memgraph.
Installation
Install LightRAG:
pip install lightrag-hkuEnvironment setup
Start Memgraph, for example in Docker:
docker run -p 7687:7687 memgraph/memgraph:latestSet the connection details. These are the defaults for a local Memgraph without authentication:
export MEMGRAPH_URI="bolt://localhost:7687"
export MEMGRAPH_USERNAME=""
export MEMGRAPH_PASSWORD=""
export MEMGRAPH_DATABASE="memgraph"The example uses OpenAI, so also set OPENAI_API_KEY.
Basic usage
This script inserts text, builds the graph in Memgraph and runs a hybrid
query. graph_storage="MemgraphStorage" tells LightRAG to store the graph in
Memgraph:
import os
import asyncio
from lightrag import LightRAG, QueryParam
from lightrag.llm.openai import gpt_4o_mini_complete, gpt_4o_complete, openai_embed
from lightrag.kg.shared_storage import initialize_pipeline_status
from lightrag.utils import setup_logger
setup_logger("lightrag", level="INFO")
WORKING_DIR = "./rag_storage"
if not os.path.exists(WORKING_DIR):
os.mkdir(WORKING_DIR)
async def initialize_rag():
rag = LightRAG(
working_dir=WORKING_DIR,
embedding_func=openai_embed,
llm_model_func=gpt_4o_mini_complete,
graph_storage="MemgraphStorage", # store the graph in Memgraph
)
# Both initialization calls are required
await rag.initialize_storages()
await initialize_pipeline_status()
return rag
async def main():
rag = None
try:
rag = await initialize_rag()
rag.insert("Your text")
print(
await rag.query(
"What are the top themes in this story?",
param=QueryParam(mode="hybrid")
)
)
except Exception as e:
print(f"An error occurred: {e}")
finally:
if rag:
await rag.finalize_storages()
if __name__ == "__main__":
asyncio.run(main())Configuration
Workspace isolation: to keep the data of several LightRAG instances
apart, set the MEMGRAPH_WORKSPACE environment variable:
export MEMGRAPH_WORKSPACE="project_a"Configuration file: instead of environment variables, you can set the
connection in a config.ini file:
[memgraph]
uri = bolt://localhost:7687
username =
password =
database = memgraphFor more, see the LightRAG integration in the Memgraph AI Toolkit, the Jupyter notebook example and the LightRAG repository.