从RAG到GraphRAG:企业知识库问答系统搭建实战

技术开发RAGGraphRAG知识库向量数据库Neo4j2026-09-06

从RAG到GraphRAG:企业知识库问答系统搭建实战

在企业知识库应用中,传统 RAG 已能回答事实型问题,可是当问题涉及跨文档、多跳关系时,答案往往支离破碎。GraphRAG 通过引入知识图谱,让检索器在实体关系上行走,从而支持复杂问答。本文从文档清洗切片、向量库选型、RAG 问题分析,到 GraphRAG 开源实现,一步步带您搭建生产可用的知识库问答系统。

1. 企业文档清洗与切片策略

1.1 清洗

  • 移除页眉页脚、页码、水印、超链接。
  • 对扫描件做 OCR 和版面分析,防止表格错乱。
  • 用正则排除乱码与重复内容,统一编码并转为 UTF-8。

1.2 结构解析

用标题层级切分文档树,必要时抽取标题-正文-表格的最小单元。可用 `unstructured` 或 `pdfplumber`,对复杂版面用 OCR 服务。

1.3 切片策略对比

切片策略优点缺点适用场景
固定大小切片实现简单,token 可控切断语义说明文档
段落切片保持段落完整长度不均匀通常文档
章节切片语义边界清晰章节过长需拆分子块技术手册、规范
语义切片利用 embedding 相似聚类计算成本高复杂长文档
切片时需要保留上下文元数据,例如标题、页码、章节路径,供后续引用。推荐重叠比例为 10% 至 20%。

2. 向量数据库选型及对比

常见向量库有 Dedicated 产品(Pinecone)、开源分布式(Milvus)、轻量级(Chroma)、扩展自 PostgreSQL(pgvector)等。
名称开源分布式混合搜索性能易用性
Milvus✅✅✅高中
Qdrant✅部分✅高高
Weaviate✅部分✅中中
Chroma✅❌部分低高
pgvector✅✅需配合中高
Pinecone❌✅✅高高
选型建议:如果已有 PostgreSQL 且数据量不大,先用 pgvector;若需大规模多租户,选 Milvus 或 Qdrant;平台工程团队缺失时用云服务。

3. 传统RAG问题与GraphRAG改进方案

3.1 传统 RAG 痛点

  • 文本切片导致实体关系被切割;
  • 向量检索只找相似片段,无法做多跳推理;
  • 回答孤立事实,缺乏全局总结;
  • 用户意图复杂时,召回片段不完整。

3.2 GraphRAG 的改进

将实体与关系显式建图,检索时先向量召回可能节点,再沿图扩充邻域,把相关子图作为上下文交给大模型,实现多跳推理和全局概览。
graph TD A[文档清洗与切片] --> B[实体与关系抽取] B --> C[(知识图谱)] B --> D[向量化] C --> E[GraphRAG 检索器] D --> E E --> F[大模型生成答案]
GraphRAG 可以回答如“某产品线去年的营收增长与哪些部门有关?”这类关联性问题,而传统 RAG 通常只给出相似片段。

4. 基于开源框架或云厂商平台实现

4.1 开源组合

  • 知识图谱:Neo4j
  • 向量存储:Qdrant(或 Milvus)
  • 抽取链路:LlamaIndex 或 微软 GraphRAG
  • 大模型:GPT-4 或 Qwen
简单伪代码:
from graph_rag import GraphRAG
rag = GraphRAG(
 graph_db='neo4j://localhost:7687',
 vector_db='qdrant://localhost:6333',
 llm='qwen-plus'
)
rag.ingest_documents(file_name)
answer = rag.query('公司去年营收是多少?')
print(answer)

4.2 云厂商平台

  • 阿里云:使用知识图谱 + 阿里云 OpenSearch 与百炼应用。
  • AWS:用 Neptune / Kendra 组合。
  • 微软 Azure:使用 Neo4j Marketplace + Azure OpenAI。
云平台可快速建立基础设施,但需要注意数据出口合规和 token 费用。

推荐视频

(以下为视频搜索入口,点击可直接跳转到对应平台查找课程,出处为对应平台)

操作清单

  • 确定知识库范围与文件种类,建立清洗流程
  • 试用至少 2 种切片策略,抽样验证召回质量
  • 构建小型图谱(500 条文档)进行概念验证
  • 比较 RAG 与 GraphRAG 在测试集上的准确率
  • 设计权限与文档更新机制
  • 增加日志、追踪和评估指标
  • 上线前测试:崩溃、限流、隐私泄漏

避坑指南

  • 清洗时忽略表格会造成严重信息丢失,务必启用表格抽取。
  • 切片重叠过多会让向量库膨胀,要按实际收益调整。
  • 向量库的 filtering 能力常被忽略,需按元数据权限过滤选型。
  • 实体抽取要结合词典与 Prompt,否则图形同虚设。
  • GraphRAG 查询延迟可能高,建议预设社区摘要缓存。
  • 输出答案必须附原文出处,便于追溯。
  • 数据与模型调用都要合规,不在私有化环境中用未经批准的云模型。

免责声明

本文为技术教程,所涉及产品、商标归各自所有者所有。封面图来自 Unsplash,可能受到版权保护,仅作示例。推荐视频为平台检索入口,演示视频版权归原作者所有。本文内容不构成任何商业承诺,请在真实环境下自行验证。
PREMIUM

需要完整版教程?

包含详细步骤、视频演示、提示词模板和可下载资料包。微信支付即时获取。

购买完整版 ¥29.90