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])
输出如下:

4000

被折叠的 条评论
为什么被折叠?



