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-clienthugegraph_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
    3. TEXT = ""
    4. builder = KgBuilder(LLMs().get_llm())
    5. (
    6. builder
    7. .import_schema(from_hugegraph="talent_graph").print_result()
    8. .chunk_split(TEXT).print_result()
    9. .extract_info(extract_type="property_graph").print_result()
    10. .commit_to_hugegraph()
    11. .run()
    12. )

    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 Splitchunk_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 HugeGraphcommit_to_hugegraph 方法用于将构建的知识图谱提交到 HugeGraph 实例。

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

    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)