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 准备工作
- 启动HugeGraph数据库,可以通过 Docker/Binary Package 运行它。 请参阅详细文档以获取更多指导
- 克隆项目
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” 来更新索引

4.1.2 通过代码构建知识图谱
KgBuilder 类用于构建知识图谱。下面是使用过程:
- 初始化:
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
- TEXT = ""
- builder = KgBuilder(LLMs().get_llm())
- (
- builder
- .import_schema(from_hugegraph="talent_graph").print_result()
- .chunk_split(TEXT).print_result()
- .extract_info(extract_type="property_graph").print_result()
- .commit_to_hugegraph()
- .run()
- ) ```
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. 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)
