Graph RAG

Task 06 Graph RAG

配置Neo4J

使用docker版本安装:安装命令如下:

docker run \
    --name neo4j \
    -p 7474:7474 -p 7687:7687 \
    -d \
    -e NEO4J_AUTH=neo4j/test123 \
    neo4j

问题 1:使用这个命令安装,容器无法启动,做如下修改。

docker logs neo4j

查看log:报错是密码太简单,可以增加密码的复杂度,修改为。

docker run \
    --name neo4j \
    -p 7474:7474 -p 7687:7687 \
    -d \
    -e NEO4J_AUTH=neo4j/Test@123 \
    neo4j

问题 2:ValueError: Could not use APOC procedures. Please ensure the APOC plugin is installed in Neo4j and that ‘apoc.meta.data()’ is allowed in Neo4j configuration
少安装插件,做如下修改,打开插件

docker run --name neo4j \
    -p 7474:7474 -p 7687:7687 \
    -d -e NEO4J_AUTH=neo4j/Test@123 \
    -e NEO4JLABS_PLUGINS='["apoc", "graph-data-science"]' \
    -e "NEO4J_dbms_security_procedures_unrestricted=apoc.*" \
    neo4j

Graph RAG 实现

import os

from camel.models import ModelFactory
from camel.storages import Neo4jGraph
from camel.types import ModelPlatformType
from camel.loaders import UnstructuredIO
from camel.agents import ChatAgent, KnowledgeGraphAgent
from datetime import datetime
from dotenv import load_dotenv

load_dotenv()

timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
log_file = f'role_playing_{timestamp}.log'
def write_to_log(content, log_file=log_file):
    with open(log_file, 'a', encoding='utf-8') as f:
        timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        f.write(f"[{timestamp}] {content}\n")
api_key = os.getenv('API_KEY')
base_url = os.getenv('BASE_URL')
chat_model = os.getenv('CHAT_MODEL')
chat2pic_model = os.getenv('CHAT2PIC_MODEL')
write_to_log("used model:" + chat_model)
neo4j_user = os.getenv('NEO4J_USER')
neo4j_password = os.getenv('NEO4J_PASSWORD')

model = ModelFactory.create(
    model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,
    model_type=chat_model,
    url=base_url,
    api_key=api_key,
    #model_config_dict={'response_format': {'type': 'json_object'}}
)

text_example = """
CAMEL和DATAWHALE是两个活跃的AI开源社区。
CAMEL致力于推动人工智能技术的发展,帮助开发者更好地进行AI研究和应用。
DateWhale通过开源项目和社区活动,促进知识分享和技术交流。这两个社区都为AI领域的创新和进步做出了重要贡献。
"""

n4j = Neo4jGraph(
    url="neo4j://127.0.0.1:7687",
    username=neo4j_user,
    password=neo4j_password,
)

uio = UnstructuredIO()
kg_agent = KnowledgeGraphAgent(model=model)

# 从给定文本创建一个元素
element_example = uio.create_element_from_text(
    text=text_example, element_id="0"
)

# 让知识图谱Agent提取节点和关系信息
graph_elements = kg_agent.run(element_example, parse_graph_elements=True)
print(graph_elements)
write_to_log(graph_elements)
n4j.add_graph_elements(graph_elements=[graph_elements])

输出如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值