gc-qa-rag
GrapeCity-AI/gc-qa-rag加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在企业内部知识库场景中,传统的 RAG(检索增强生成)方案往往面临一个尴尬的现实:用户问的是"如何配置定时任务",检索回来的却是一段关于任务调度原理的无关文字,回答牛头不对马嘴。这不是模型不够强,而是检索层出了问题——根源在于传统文本切片(Chunking)策略无法捕捉文档的语义结构。
GrapeCity-AI/gc-qa-rag 试图从根本上解决这个问题。它来自葡萄城(GrapeCity)——一家有着 40 年历史的企业软件开发工具提供商,在将 AI 能力整合到活字格低代码平台的过程中,研发团队设计了一套创新的「高级 QA 预生成」技术路线,并将其开源。短短数月,GitHub 获星 85 个,fork 24 次,获得了企业级生产环境的真实验证。

当我们把一份 50 页的产品 PDF 交给传统 RAG 系统时,通常会经历这样的流程:先用规则(如固定字符数、段落边界)将文档切成 500-1000 token 的小块,然后向量化存储,检索时取 top-k 块交给 LLM 生成。
这套流程在实践中暴露出三个致命缺陷:
葡萄城团队在尝试"全文投喂"LLM 直接生成 QA 时也遇到了瓶颈:短文档容易"过度联想"编造信息,长文档则因注意力有限导致知识点大量遗漏。

gc-qa-rag 的核心理念是从「切割文本」转向「精准提炼知识点」,设计了一套自适应、多阶段的高级 QA 预生成系统:
动态自适应处理根据文档长短动态调整策略:短文档假设"一个句子对应一个知识点",通过句子计数精确控制 QA 数量,杜绝编造;长文档则用独创的"记忆-聚焦"两阶段机制——第一阶段让 LLM 记住全文构建上下文背景,第二阶段逐片段精准提问提取 QA,完美解决了信息覆盖度和生成质量问题。
高价值衍生数据不止生成 QA,还同步生成摘要(提升上下文理解)、扩充答案(作为生成素材)和同义问法(提升多样化提问的召回率),三种衍生数据一并存入向量库。
工程化鲁棒性通过自动化文档解析、中文分句、灵活文本分组,以及最关键的多重容错 JSON 解析机制(标准提取→强制转换→正则匹配三保险),确保生产环境接近 100% 的生成成功率。
gc-qa-rag 采用模块化三层架构:
| 层级 | 组件 | 技术栈 | 职责 |
|---|---|---|---|
| 构建层 | gc-qa-rag-etl | Python / FastAPI / MySQL / Qdrant | 文档解析、QA 生成、向量化入库 |
| 检索层 | gc-qa-rag-server | Python / FastAPI / Qdrant | 问题改写、混合检索、RRF 排序 |
| 生成层 | RAG Server + Frontend | Python / TypeScript / Vue | LLM 整合生成、多轮对话 |
检索层的「问题改写」模块可将用户口语化提问转换为文档风格的查询词;「混合检索」结合向量相似度和关键词BM25,通过 RRF(倒数排名融合)合并结果;最终将 top-k 知识块交给 LLM 生成回答。
项目提供了开箱即用的 Docker 一键部署方案,非常适合快速验证:
# 克隆项目
git clone https://github.com/GrapeCity-AI/gc-qa-rag.git
cd gc-qa-rag
# ETL 服务(数据构建)
cd sources/gc-qa-rag-etl/deploy
docker compose -f docker-compose.dockerhub.yml up -d
# RAG 服务(问答引擎)
cd sources/gc-qa-rag-server/deploy
docker compose -f docker-compose.dockerhub.yml up -d
部署后访问 http://localhost:8001 管理 ETL(上传文档、触发 QA 生成、发布知识库),访问 http://localhost:80 开始提问。唯一的硬性前提:必须配置 LLM API 密钥(推荐阿里云百炼或 OpenAI)和 Embedding API 密钥(目前仅支持 text-embedding-v4)。

手动部署则需要 Python 3.13+(PDM)、Node.js 16+(pnpm)、MySQL 和 Qdrant,适合需要二次开发的场景。
项目提供了详尽的评测数据。在活字格低代码平台认证工程师考试中,三个主流 LLM 参与了测试:
| 考试科目 | 模型 | 直接生成 | RAG 模式 | Agent 模式 | 最大提升 |
|---|---|---|---|---|---|
| 基础认证 | Claude-4-sonnet | 65.80% | 81.03% | 88.51% | +22.71% |
| 基础认证 | GLM-4.5 | 61.21% | 84.20% | 87.07% | +25.86% |
| 实践认证 | GLM-4.5 | 47.22% | 64.81% | 65.74% | +18.52% |
| 高级认证 | Claude-4-sonnet | 52.94% | 65.88% | 74.12% | +21.18% |
核心结论:RAG 模式普遍带来 15-25% 的准确率提升,Agent 自动规划检索模式效果最佳。Claude-4-sonnet 在所有测试中综合表现最优。
强依赖外部 API:目前仅支持阿里云百炼或 OpenAI 的 LLM 和 Embedding API,模型选择受限,离线部署需要额外适配。
中文分句质量依赖模型:在遇到极长复合句或特殊标点时,分句结果可能影响 QA 覆盖度。
仅支持特定 Embedding:当前仅支持 text-embedding-v4,不支持开源 Embedding 模型(如 BGE、Sentence-BERT)。
gc-qa-rag 的价值不在于它是最强大的 RAG 框架,而在于它展示了从生产场景出发、针对性解决具体问题的开源研发路径。这套思路与 Anthropic 的"contextual retrieval"、Cohere 的"document understanding"异曲同工,都指向了 RAG 2.0 的核心方向:从文本块走向知识点。