Skip to content

A RAG (Retrieval-Augmented Generation) solution Based on Advanced Pre-generated QA Pairs. 基于高级 QA 问答对预生成的 RAG 知识库解决方案

License

Notifications You must be signed in to change notification settings

GrapeCity-AI/gc-qa-rag

Repository files navigation

GC-QA-RAG

English Version | 中文版

license RAG Enterprise

GC-QA-RAG 是一个企业级的检索增强生成(RAG)系统。我们通过创新的 高级 QA 预生成技术,将非结构化的产品文档、社区帖子等内容,智能地转化为高质量的问答知识库,显著提升了检索的精准度和用户体验。

本项目已完成全面的开源适配改造。得益于其高级 QA 预生成技术的特性,它几乎可以适配任何领域的文档,构建精准、高效的智能问答系统。欢迎你立即部署,快速验证其在你的数据上的效果。

在线体验 Demo: https://ai-assist.grapecity.com.cn/

GC-QA-RAG Demo

✨ 核心特性

  • 🎯 精准的检索效果:独创 高级 QA 预生成技术,相比传统文本切片,能更深刻地理解文档语义,使召回内容与用户问题的匹配度更高。
  • 🏢 企业级场景验证:已在葡萄城多个产品线的真实业务中落地,无缝升级了传统搜索,每日服务大量用户,获得了积极反馈。
  • 🚀 开箱即用的解决方案:提供从知识库构建(ETL)、后端服务到前端界面的完整代码,并支持 Docker 一键部署,助力开发者快速搭建自己的高质量 RAG 系统。
  • 📚 详尽的文档教程:提供从产品设计、技术架构到落地经验的全方位文档,不仅是开源代码,更是一套可复用的实践方法论。

📖 目录

🚀 快速开始

我们强烈推荐使用 Docker 进行一键部署,这是体验本项目的最快方式。

🐳 Docker 一键部署 (推荐)

确保你的机器已经安装了 DockerDocker Compose

知识库部署:

# 1. 克隆项目
git clone https://github.com/GrapeCity-AI/gc-qa-rag.git
cd gc-qa-rag

# 2. 进入部署目录
cd sources/gc-qa-rag-server/deploy

# 3. 启动所有服务
docker compose up -d --build

ETL 管理后台部署:

# 进入 ETL 目录
cd sources/gc-qa-rag-etl

# 构建 Docker 镜像
docker build -t rag-etl:latest .

# 运行容器
docker run -d \
  --name rag-etl \
  -p 8001:8001 \
  -e GC_QA_RAG_ENV=production \
  rag-etl:latest

启动成功后,即可访问:

  • RAG 问答主页: http://localhost:80
  • ETL 管理后台: http://localhost:8001

更加详细的部署指南,请参考《Docker 部署教程》

🔧 手动部署

如果你希望深入了解每个模块的细节,或者进行二次开发,可以选择手动部署。

环境依赖:

  • Python 3.13+ (及 PDM)
  • Node.js 16+ (及 pnpm)
  • MySQL
  • Qdrant

详细步骤请参考我们的《快速开始指南》

💡 核心理念:为何选择高级 QA 预生成?

传统的 RAG 系统严重依赖于文档的“切片”(Chunking)质量。然而,简单的文本分割方法在处理复杂的企业级文档时,往往会遭遇上下文失真语义歧义版本冲突等问题,导致检索效果不佳。

我们最初也尝试了“全文投喂”的直观方案——将整篇文档交给大模型直接生成 QA 对。但实践证明,这条路充满陷阱:

  • 对于短文档:模型缺乏足够上下文,极易“过度联想”,编造出原文不存在的信息。
  • 对于长文档:模型存在“注意力天花板”,往往只能生成 10-15 个 QA 对,导致大量关键知识点被遗漏,或生成重复、泛化的内容。

为了从根本上解决这些问题,我们摒弃了粗糙的文本切片,设计了一套自适应、多阶段的高级 QA 预生成系统。其核心思想是:从“切割文本”转向“精准提炼知识点”

这套系统主要通过以下创新机制实现:

1. 动态自适应处理策略

我们不采用一刀切的方式,而是根据文档长短动态调整策略:

  • 短文档 - 句子级精准控制:我们假设“一个句子对应一个知识点”,通过计算句子数量来动态指示模型生成等量的 QA 对,杜绝信息编造,确保内容忠于原文。
  • 长文档 - 两阶段记忆-聚焦机制:我们独创了这种对话式生成方法。
    • 第一阶段(记忆):让大模型“记住”全文,构建完整的上下文背景(长期记忆)。
    • 第二阶段(聚焦):逐个片段提问,引导模型“聚焦”于局部细节进行精准的 QA 提取(短期专注)。 这种机制完美解决了长文档的信息覆盖度和生成质量问题。

2. 超越 QA:生成高价值衍生数据

所谓的“高级”之处不止于此。在生成核心 QA 的同时,系统还智能地派生出三种高价值数据,并一同存入向量数据库,极大增强了 RAG 系统的综合能力:

  • ① 摘要 (Summary):为每个知识点生成总结,提升生成时的上下文理解能力,利于大模型向用户推荐适合的关联文档。
  • ② 扩充答案 (Full Answer):为关键问题生成更详尽的解答,用于前端“展开更多”或作为生成答案时的丰富素材。
  • ③ 同义问法 (Question Variants):为每个问题生成多种相似问法,大幅提升对用户多样化提问的召回率。

3. 工程化鲁棒性设计

我们为这套系统构建了完整的工程化保障,包括:自动化的文档解析、针对中文的自动分句、灵活的文本分组,以及最关键的多重容错 JSON 解析机制(从标准提取到强制转换,再到正则匹配),确保了在生产环境中几乎 100% 的生成成功率(失败时多为触发了内容合规机制)。

综上所述,GC-QA-RAG 的核心理念是:通过模拟人类“记忆-聚焦”的学习方式和精密的工程化设计,将非结构化文档智能地转化为结构化的、多维度的高质量知识库,为下游的精准检索和高质量回答奠定坚实基础。

🏗️ 技术架构

本系统采用模块化设计,分为三大核心层:

  1. 构建层 (ETL): 负责从各种数据源(文档、网页、论坛)提取信息,通过 QA 生成向量化,构建高质量的知识库。
  2. 检索层 (Retrieval): 接收用户查询,通过 问题改写混合检索RRF 排序,高效、精准地从知识库中召回最相关的信息。
  3. 生成层 (Generation): 将检索到的信息整合,交由大语言模型(LLM)生成最终流畅、准确的答案,并支持多轮对话。

更多细节请查阅《技术架构详解》

📚 详细文档

我们为你准备了完整的项目文档,帮助你深入了解从背景、设计到实践的每一个环节。

访问我们的文档站:https://grapecity-ai.github.io/gc-qa-rag/

主要内容包括:

🤝 参与贡献

我们欢迎并鼓励社区参与贡献!无论是提交 Bug、提出功能建议,还是贡献代码,都对我们非常有价值。

License

MIT

About

A RAG (Retrieval-Augmented Generation) solution Based on Advanced Pre-generated QA Pairs. 基于高级 QA 问答对预生成的 RAG 知识库解决方案

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published