赞
踩
原文地址:building-a-mental-health-qa-chatbot-using-falkordb-knowledge-graph-and-llamaindex
知识图谱是一种将数据转换为机器可以理解的知识的模型,它比传统数据管理系统更能够捕获数据的语义性质和含义。知识图谱通过结构化地表示实体、属性和它们之间的关系,使得应用程序能够更好地理解和推理现实世界。
在现实世界中,知识是情境化的,可以根据时间和情况而变化;它是有层级的,概念之间的关联可能因性别、地区、方言等而异;而且它是变化的,含义不固定,随着新想法和关联的发现而改变。相比之下,传统的数据管理系统没有经过训练,无法以结构化方式捕获含义或关系。
知识图谱在自然语言处理(NLP)和其他人工智能应用程序中经常被使用,因为它为应用程序提供了知识的结构化表示,从而构建能够更好地理解文本含义的系统。
总的来说,知识图是一个灵活的数据层,用于回答跨数据孤岛的复杂查询,并允许与以图表形式表示和组织的情境化数据相连接。企业知识图谱就是企业数据的知识图谱。
知识图谱在可靠性方面相对于矢量数据库具有一些优势,这使得它们在实现 RAG 时更为可靠。以下是几个关键点:
因此,知识图谱在RAG应用中越来越受欢迎,因为它们能够提供可靠且可解释的数据基础,这对于构建能够处理复杂查询和提供准确答案的应用程序至关重要。
FalkorDB 是专门为需要快速响应时间和高吞吐量场景设计的超快图数据库。它以超低延迟而著称,并支持通过 Docker 进行部署。选择 FalkorDB 的原因主要包括:
总的来说,FalkorDB 是一个专为快速响应和高吞吐量设计的知识图谱数据库,它能够高效地处理和查询结构化数据,并能够与LLMs集成,提供更加智能和准确的服务。
- 安装依赖项
pip install openai
pip install llama-index
pip install llama-index-llms-openai
pip install llama-index-graph-stores-falkordb
- 启动falkordb
docker run -p 6379:6379 -p 3000:3000 -it --rm falkordb/falkordb:latest
- 资源文件
https://www.slhd.nsw.gov.au/mentalhealth/pdf/what_is_mental_illness.pdf
https://www.hhs.gov/sites/default/files/sg-youth-mental-health-social-media-advisory.pdf
https://files.eric.ed.gov/fulltext/EJ1154566.pdf
- from llama_index.core import Settings
- from llama_index.core import StorageContext
- from IPython.display import Markdown, display
- from llama_index.core import SimpleDirectoryReader, KnowledgeGraphIndex
- from llama_index.graph_stores.falkordb import FalkorDBGraphStore
- import os
- from langchain.chat_models import AzureChatOpenAI
-
- os.environ["OPENAI_API_TYPE"] = "azure"
- os.environ["OPENAI_API_VERSION"] = "2023-03-15-preview"
- os.environ["OPENAI_API_BASE"] = "https://xxxxxx.openai.azure.com/"
- os.environ["OPENAI_API_KEY"] = "xxxxxx"
-
- graph_store = FalkorDBGraphStore(
- "redis://localhost:6379", decode_responses=True
- )
-
- documents = SimpleDirectoryReader("./data").load_data()
-
- llm = AzureChatOpenAI(deployment_name="dev", temperature=0)
-
- Settings.llm = llm
- Settings.chunk_size = 512
- storage_context = StorageContext.from_defaults(graph_store=graph_store)
-
- index = KnowledgeGraphIndex.from_documents(
- documents,
- max_triplets_per_chunk=20,
- storage_context=storage_context
- )
-
- query_engine = index.as_query_engine(
- include_text=True, response_mode="tree_summarize", verbose=True
- )
-
- response = query_engine.query(
- "What is mental health?"
- )
- display(Markdown(f"<b>{response}</b>"))
要可视化图表,只需在浏览器中加载网址:http://localhost:3000。
pip install --upgrade gradio
- import gradio as gr
- def response_function(message, history):
- resp = query_engine.query(message)
- resp = f"{resp}"
- print(resp)
- return resp
- gr.ChatInterface(
- response_function,
- chatbot=gr.Chatbot(height=500),
- textbox=gr.Textbox(placeholder="Ask any question related to mental health", container=False, scale=7),
- title="Mental Health Chatbot",
- description="You can ask this chatbot any question related to mental health",
- theme="soft",
- examples=["What is mental health?", "What is mental health a challenging topic?", "Where should you go to seek help?"],
- cache_examples=True,
- retry_btn=None,
- undo_btn="Delete Previous",
- clear_btn="Clear",
- ).launch(share=True)
不依赖 KnowledgeGraphIndex() 函数,添加三元组来操作图表。
- MERGE (depression:MentalIllnessType {name: "Depression"})"Depression"})
- MERGE (anxiety:MentalIllnessType {name: "Anxiety"})
- MERGE (schizophrenia:MentalIllnessType {name: "Schizophrenia"})
- MERGE (bipolar:MentalIllnessType {name: "Bipolar Mood Disorder"})
- MERGE (personalityDisorders:MentalIllnessType {name: "Personality Disorders"})
- MERGE (eatingDisorders:MentalIllnessType {name: "Eating Disorders"})
- MERGE (mi)-[:IS_A_TYPE_OF]->(mhp)
- MERGE (mhp)-[:CAN_DEVELOP_INTO]->(mi)
- MERGE (depression)-[:IS_A]->(mi)
- MERGE (anxiety)-[:IS_A]->(mi)
- MERGE (schizophrenia)-[:IS_A]->(mi)
- MERGE (bipolar)-[:IS_A]->(mi)
- MERGE (personalityDisorders)-[:IS_A]->(mi)
- MERGE (eatingDisorders)-[:IS_A]->(mi)
- """
- graph_store.query(cypher_query)
通过将知识图谱整合到检索增强生成(RAG)流程中,我们能够实现大型语言模型(LLM)的实际应用。在医疗保健等行业,这一点尤为关键,因为LLM的潜在幻觉可能导致严重的问题。在本篇文章中,我们展示了如何利用FalkorDB知识图谱、OpenAI以及LlamaIndex来构建一个基础的医疗聊天机器人。我们还介绍了如何操作知识图谱,并展示了如何使用Gradio启动一个简单的聊天机器人用户界面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。