HugeGraph-AI Quick Start

1 HugeGraph-AI 概述

hugegraph-ai 旨在探索 HugeGraph 与人工智能(AI)的融合,包括与大模型结合的应用,与图机器学习组件的集成等,为开发者在项目中利用 HugeGraph 的 AI 能力提供全面支持。

2 环境要求

  • python 3.9+ (better to use 3.10)
  • hugegraph-server 1.3+

3 准备工作

  1. 启动HugeGraph数据库,可以通过 Docker/Binary Package 运行它。 请参阅详细文档以获取更多指导
  2. 克隆项目

1. git clone https://github.com/apache/incubator-hugegraph-ai.git 3. 安装 hugegraph-python-client 和 hugegraph_llm

1. cd ./incubator-hugegraph-ai # better to use virtualenv (source venv/bin/activate) 2. pip install ./hugegraph-python-client 3. pip install -r ./hugegraph-llm/requirements.txt 4. 进入项目目录

1. cd ./hugegraph-llm/src 5. 启动 Graph RAG 的 gradio 交互 demo,可以使用以下命令运行,启动后打开 <http://127.0.0.1:8001>

1. python3 -m hugegraph_llm.demo.rag_demo.app

默认主机为 0.0.0.0 ,端口为 8001 。您可以通过传递命令行参数 --host 和 --port 来更改它们。

1. python3 -m hugegraph_llm.demo.rag_demo.app --host 127.0.0.1 --port 18001 6. 启动 Text2Gremlin 的 gradio 交互演示,可以使用以下命令运行,启动后打开 <http://127.0.0.1:8002> ,您还可以按上述方式更改默认主机 0.0.0.0 和端口 8002 。(🚧ing)

1. python3 -m hugegraph_llm.demo.gremlin_generate_web_demo 7. 在运行演示程序后,配置文件文件将被删除。.env 将自动生成在 hugegraph-llm/.env 路径下。此外,还有一个与 prompt 相关的配置文件 config_prompt.yaml 。也会在hugegraph-llm/src/hugegraph_llm/resources/demo/config_prompt.yaml路径下生成。 您可以在页面上修改内容,触发相应功能后会自动保存到配置文件中。你也可以直接修改文件而无需重启应用程序;只需刷新页面即可加载最新的更改。 (可选)要重新生成配置文件,您可以将 config.generate 与 -u 或 --update 一起使用。

1. python3 -m hugegraph_llm.config.generate --update 8. (可选)您可以使用 hugegraph-hubble 来访问图形数据,可以通过 Docker/Docker-Compose 运行它以获得指导。 (Hubble 是一个图形分析仪表板,包括数据加载/模式管理/图形遍历/显示)。 9. (可选)离线下载 NLTK 停用词

1. python ./hugegraph_llm/operators/common_op/nltk_helper.py

4 示例

4.1 通过 LLM 在 HugeGraph 中构建知识图谱

4.1.1 通过 gradio 交互式界面构建知识图谱

参数描述:

  • Docs:
  • text: 从纯文本建立 rag 索引
  • file: 上传文件:TXT 或 .docx(可同时选择多个文件)
  • Schema:(接受2种类型)
  • 用户定义模式( JSON 格式,遵循模板来修改它)
  • 指定 HugeGraph 图实例的名称,它将自动从中获取模式(如 “hugegraph”)
  • Graph extract head: 用户自定义的图提取提示
  • 如果已经存在图数据,你应该点击 “Rebuild vid Index” 来更新索引

gradio-config

4.1.2 通过代码构建知识图谱

KgBuilder 类用于构建知识图谱。下面是使用过程:

  1. 初始化: KgBuilder 类使用语言模型的实例进行初始化。这可以从 LLMs 类中获得。 初始化 LLMs实例,获取 LLM,然后创建一个任务实例 KgBuilder 用于图的构建。KgBuilder 定义了多个运算符,用户可以根据需要自由组合它们。(提示:print_result() 可以在控制台中打印出每一步的结果,而不会影响整个执行逻辑)

``` 1. from hugegraph_llm.models.llms.init_llm import LLMs 2. from hugegraph_llm.operators.kg_construction_task import KgBuilder

  1. TEXT = ""
  2. builder = KgBuilder(LLMs().get_llm())
  3. (
  4. builder
  5. .import_schema(from_hugegraph="talent_graph").print_result()
  6. .chunk_split(TEXT).print_result()
  7. .extract_info(extract_type="property_graph").print_result()
  8. .commit_to_hugegraph()
  9. .run()
  10. ) ```

gradio-config 2. 导入架构: import_schema 方法用于从源导入架构。源可以是 HugeGraph 实例、用户定义的模式或提取结果。可以链接 print_result 方法来打印结果。

1. # Import schema from a HugeGraph instance 2. builder.import_schema(from_hugegraph="xxx").print_result() 3. # Import schema from an extraction result 4. builder.import_schema(from_extraction="xxx").print_result() 5. # Import schema from user-defined schema 6. builder.import_schema(from_user_defined="xxx").print_result() 3. Chunk Split : chunk_split 方法用于将输入文本分割为块。文本应该作为字符串参数传递给方法。

1. # Split the input text into documents 2. builder.chunk_split(TEXT, split_type="document").print_result() 3. # Split the input text into paragraphs 4. builder.chunk_split(TEXT, split_type="paragraph").print_result() 5. # Split the input text into sentences 6. builder.chunk_split(TEXT, split_type="sentence").print_result() 4. 信息抽取:extract_info 方法用于从文本中提取信息。文本应该作为字符串参数传递给方法。

1. TEXT = "Meet Sarah, a 30-year-old attorney, and her roommate, James, whom she's shared a home with since 2010." 2. # extract property graph from the input text 3. builder.extract_info(extract_type="property_graph").print_result() 4. # extract triples from the input text 5. builder.extract_info(extract_type="property_graph").print_result() 5. Commit to HugeGraph : commit_to_hugegraph 方法用于将构建的知识图谱提交到 HugeGraph 实例。

1. builder.commit_to_hugegraph().print_result() 6. Run : run 方法用于执行链式操作。

1. builder.run()

KgBuilder 类的方法可以链接在一起以执行一系列操作。

4.2 基于 HugeGraph 的检索增强生成(RAG)

RAGPipeline 类用于将 HugeGraph 与大型语言模型集成,以提供检索增强生成功能。下面是使用过程:

  1. 提取关键字:提取关键字并扩展同义词。

1. from hugegraph_llm.operators.graph_rag_task import RAGPipeline 2. graph_rag = RAGPipeline() 3. graph_rag.extract_keywords(text="Tell me about Al Pacino.").print_result() 2. 根据关键字匹配 Vid::将节点与图中的关键字匹配。

1. graph_rag.keywords_to_vid().print_result() 3. RAG 的查询图:从 HugeGraph 中检索对应的关键词及其多度关联关系。

1. graph_rag.query_graphdb(max_deep=2, max_items=30).print_result() 4. 重新排序搜索结果:根据问题与结果之间的相似性对搜索结果进行重新排序。

1. graph_rag.merge_dedup_rerank().print_result() 5. 合成答案:总结结果并组织语言来回答问题。

1. graph_rag.synthesize_answer(vector_only_answer=False, graph_only_answer=True).print_result() 6. 运行:run 方法用于执行上述操作。

1. graph_rag.run(verbose=True)

Last modified November 6, 2024: docs(hg-ai): fix img link (#378) (79fc8635)