科学工具
科学工具让世界更美好
让世界更美好

VeritasGraph 企业级图谱增强生成(Graph RAG)框架

VeritasGraph 是一个专为私有基础设施设计的企业级图谱增强生成(Graph RAG)框架,目标是构建安全、可验证归因的先进问答和摘要系统。VeritasGraph利用知识图谱进行复杂的多跳推理,克服了传统基于向量搜索的RAG系统的局限性,能够提供具有完整来源归因的透明、可审计的推理路径,能显著提升企业AI的信任度和可靠性。VeritasGraph拥有强大的多跳图推理能力、采用LoRA调优的本地大型语言模型以实现高效部署、端到端的来源归因机制,确保数据主权的安全私有化本地部署架构。VeritasGraph通过将非结构化文档转化为结构化知识图谱,结合混合检索引擎(包括向量搜索和多跳图遍历)与本地LLM推理核心,有效解决了复杂查询中信息关联和深层理解的挑战。VeritasGraph强调AI系统的透明性、安全性与可控性,赋能企业自主构建和管理知识资产,减少对外部云服务的依赖,支持本地LLM运行并需要一定的硬件资源配置。

VeritasGraph将四大关键功能整合为统一系统,覆盖从数据处理到结果输出的全流程需求:

多跳图推理:突破语义相似性局限,深入挖掘数据间复杂关联,应对需要串联多个信息点的查询场景。

高效LoRA微调LLM:采用低秩自适应技术对大语言模型进行微调,在保证推理能力的同时,降低本地部署的资源消耗。

端到端来源追溯:生成的每一条结论都可关联至具体源文档及推理路径,避免AI生成内容的“黑箱”问题。

安全本地部署架构:能完全部署在企业自有基础设施内,确保数据不脱离管控,符合数据主权要求。

VeritasGraph的 pipeline 分四个阶段,将非结构化文档转化为结构化知识图谱,最终输出带追溯信息的推理结果。

阶段1:自动化知识图谱构建

1、文档分块:将输入文档分割为细粒度的“文本单元”(TextUnits),为后续处理打下基础。

2、实体与关系提取:通过大语言模型提取结构化三元组(头实体,关系,尾实体),捕捉数据中的核心关联。

3、图谱组装:将提取的节点(实体)与边(关系)存储到图数据库(如Neo4j)中,形成结构化知识图谱。

阶段2:混合检索引擎

1、查询分析与入口识别:借助向量搜索找到与用户查询相关的“入口节点”,确定推理的起始点。

2、多跳遍历扩展上下文:通过图谱遍历挖掘隐藏的关联关系,扩展查询相关的上下文范围,覆盖更多潜在相关信息。

3、剪枝与重排序:去除冗余、无关的信息,保留对推理最有价值的事实,提升后续步骤的效率。

阶段3:LoRA微调推理核心

1、增强提示工程:将查询、来源信息及指令整合为格式化上下文,为模型生成提供清晰引导。

2、LLM生成:基于本地部署的开源模型(经LoRA微调)生成带追溯信息的答案,无需依赖外部API。

3、LoRA微调:针对推理任务与来源追溯需求优化模型,在提升专项能力的同时,保持高效运行。

阶段4:追溯与溯源层

1、元数据传播:跟踪每个结论对应的源文档ID、文本块及图谱节点,建立完整的数据链路。

2、可追踪生成:模型在生成答案时明确引用来源,用户可直接查看结论的依据。

3、结构化追溯输出:以JSON格式输出包含溯源信息与推理轨迹的结果,方便后续分析与验证。

传统RAG系统在处理复杂问题时(例如,关联某工程师参与的项目与相关专利)常显乏力,VeritasGraph通过三步协同机制攻克这一难题:

1、利用语义搜索确定推理的“入口点”,找到与查询最直接相关的初始信息;2、通过图谱遍历串联分散的信息点,构建完整的逻辑链条;3、借助大语言模型综合所有信息,生成带引用的最终答案,确保推理过程可验证。

VeritasGraph本地部署指南

硬件要求

• CPU:16核及以上 • 内存:64GB及以上(推荐128GB) • GPU:NVIDIA显卡,显存24GB及以上(如A100、H100、RTX 4090)

软件要求

• Docker与Docker Compose • Python 3.10及以上版本 • NVIDIA Container Toolkit

配置步骤

1、将 .env.example 文件复制并重命名为 .env

2、在 .env 中填入与部署环境匹配的具体参数。

GraphRAG搭建与使用

以Windows系统下使用Ollama(llama3.1模型)与nomic-text-embed(文本嵌入)为例,完整流程如下:

1、模型准备

首先启动Ollama服务,在不同终端执行以下命令:

ollama serve
# 另一个终端中
ollama pull llama3.1
ollama pull nomic-embed-text

然后通过仓库中的Modelfile构建模型:

ollama create llama3.1-12k -f ./Modelfile

注意:Ollama默认上下文长度为2048,可能导致索引时输入输出被截断,建议调整为12k(12288);若在settings.yaml中更换模型后重新索引,会重启整个索引过程。

2、环境搭建与项目初始化

创建并激活conda环境:

conda create -n rag python=<3.12以下任意版本>
conda activate rag

克隆项目并进入指定目录:

cd graphrag-ollama-config

拉取graphrag代码并安装相关包(若使用本仓库可跳过部分步骤,此步骤用于初始化graphrag文件夹):

cd graphrag-ollama
pip install -e ./
pip install sympy
pip install future
pip install ollama
python -m graphrag.index --init --root .

3、配置与数据准备

创建.env文件:

cp .env.example .env

将输入文本移至 ./input/ 目录,仔细检查 .envsettings.yaml 中的参数,确保 settings.yaml 中配置为“community_reports”而非“community_report”。

4、提示微调与索引启动

微调提示(此步骤对结果质量影响较大):

python -m graphrag.prompt_tune --root 、--domain "Christmas" --method random --limit 20 --language English --max-tokens 2048 --chunk-size 256  --no-entity-types --output ./prompts

启动索引,可在 ./output/<时间戳>/reports/indexing-engine.log 中查看日志排查错误:

python -m graphrag.index --root .

5、测试查询与UI使用

测试全局查询:

python -m graphrag.query \
--root 、\
--method global \
"What are the top themes in this story?"

启动UI界面:

# 安装依赖
pip install -r requirements.txt
# 运行应用
gradio app.py

访问 http://127.0.0.1:7860/ 即可使用UI功能,支持全局(基于社区的搜索)与本地(基于实体的搜索)两种查询类型,可调节温度参数(Temperature)与结果预设(如详细、简洁、要点式等)。