graph LR A["节点 A (标签: Person)"] -- "关系 X (属性: 日期)" --> B["节点 B (标签: City)"] C["节点 C (标签: Organization)"] -- "关系 Y" --> D["节点 D (标签: Product)"] B -- "关系 Z" --> C
# Set example text input text_example =""" 在一个风和日丽的下午,小明和小红在图书馆邂逅了。 小明是一名对历史充满热情的大学生,而小红则是一位热衷于现代艺术的画家。 两人因为一本关于古代文明与现代艺术融合的书籍而结缘。 在接下来的几个月里,他们一起参观了许多博物馆和艺术展览,从小明对古代文化深厚的理解中,小红获得了许多创作灵感;而小红对色彩和形式的敏锐感知,也让小明对历史有了更生动的认识。 他们的友谊逐渐加深,最终决定合作创建一个项目,旨在通过现代艺术的形式展现历史文化的魅力,旨在连接过去与未来,传统与创新。 这个项目不仅加深了他们之间的关系,也使得周围的人开始对历史与艺术的结合产生了浓厚的兴趣。 ""
从给定的文本创建一个元素,并让知识图谱代理提取节点和关系信息,然后再检查一下。
# Create an element from given text element_example = uio.create_element_from_text( text=text_example, element_id="0" )
# Let Knowledge Graph Agent extract node and relationship information ans_element = kg_agent.run(element_example, parse_graph_elements=False) print(ans_element)
# Check graph element graph_elements = kg_agent.run(element_example, parse_graph_elements=True) print(graph_elements)
查看效果:
保存至图数据库:
# Add the element to neo4j database n4j.add_graph_elements(graph_elements=[graph_elements])
# Set instance uio = UnstructuredIO() kg_agent = KnowledgeGraphAgent(model=siliconcloud_model)
# Create an element from user query query_element = uio.create_element_from_text( text=query, element_id="1" )
# Let Knowledge Graph Agent extract node and relationship information from the qyery ans_element = kg_agent.run(query_element, parse_graph_elements=True)
# Match the entity got from query in the knowledge graph storage content kg_result = [] fornodeinans_element.nodes: n4j_query =f""" MATCH (n {{id: '{node.id}'}})-[r]->(m) RETURN 'Node ' + n.id + ' (label: ' + labels(n)[0] + ') has relationship ' + type(r) + ' with Node ' + m.id + ' (label: ' + labels(m)[0] + ')' AS Description UNION MATCH (n)<-[r]-(m {{id: '{node.id}'}}) RETURN 'Node ' + m.id + ' (label: ' + labels(m)[0] + ') has relationship ' + type(r) + ' with Node ' + n.id + ' (label: ' + labels(n)[0] + ')' AS Description """ result = n4j.query(query=n4j_query) kg_result.extend(result)
# Set example text input text_example =""" 在一个风和日丽的下午,小明和小红在图书馆邂逅了。 小明是一名对历史充满热情的大学生,而小红则是一位热衷于现代艺术的画家。 两人因为一本关于古代文明与现代艺术融合的书籍而结缘。 在接下来的几个月里,他们一起参观了许多博物馆和艺术展览,从小明对古代文化深厚的理解中,小红获得了许多创作灵感;而小红对色彩和形式的敏锐感知,也让小明对历史有了更生动的认识。他们的友谊逐渐加深,最终决定合作创建一个项目,旨在通过现代艺术的形式展现历史文化的魅力,旨在连接过去与未来,传统与创新。 这个项目不仅加深了他们之间的关系,也使得周围的人开始对历史与艺术的结合产生了浓厚的兴趣。 """
# Set one user query query="小明与小红在哪里邂逅的?"
# Get related content by using vector retriever vector_result = auto_retriever.run_vector_retriever( query=query, contents=text_example, similarity_threshold=0.6 )
# Show the result from vector search print(vector_result)
# Parse content from mistral website and create knowledge graph data by using # the Knowledge Graph Agent, store the information into graph database.
# Set instance uio = UnstructuredIO() kg_agent = KnowledgeGraphAgent(model=siliconcloud_model)
# Create an element from user query query_element = uio.create_element_from_text( text=query, element_id="1" )
# Let Knowledge Graph Agent extract node and relationship information from the qyery ans_element = kg_agent.run(query_element, parse_graph_elements=True)
# Match the entity got from query in the knowledge graph storage content kg_result = [] fornodeinans_element.nodes: n4j_query =f""" MATCH (n {{id: '{node.id}'}})-[r]->(m) RETURN 'Node ' + n.id + ' (label: ' + labels(n)[0] + ') has relationship ' + type(r) + ' with Node ' + m.id + ' (label: ' + labels(m)[0] + ')' AS Description UNION MATCH (n)<-[r]-(m {{id: '{node.id}'}}) RETURN 'Node ' + m.id + ' (label: ' + labels(m)[0] + ') has relationship ' + type(r) + ' with Node ' + n.id + ' (label: ' + labels(n)[0] + ')' AS Description """ result = n4j.query(query=n4j_query) kg_result.extend(result)