我相信通过实践来评估框架。不是通过阅读基准测试。不是通过浏览README。而是通过构建真实的东西触及边界并测量发生了什么。所以当RAG-Anything出现在我的雷达上——一个来自香港大学的开源框架承诺从多模态文档自动构建知识图谱——我清楚地知道要拿什么来测试它我的葡萄酒书籍收藏。显而易见的问题——为什么我会有这样的收藏虽然不是专业品酒师但我确实完成了WSET课程/考试不知何故很享受这个过程。葡萄酒是知识图谱RAG的完美压力测试。这个领域本质上就是关系性的。单宁影响陈年潜力。酸度与单宁相互作用。酵母驱动发酵产生风味化合物。葡萄品种连接到地区地区连接到气候气候连接到葡萄酒风格。如果有什么领域应该从结构化实体-关系提取中受益而不是扁平向量搜索那就是这个。我想回答的具体问题RAG-Anything能否从真实PDF书籍中提取有用的知识图谱并比朴素向量搜索更好地回答葡萄酒问题这是RAG-Anything承诺的要点。它建立在LightRAG之上你可以在前面的文章中找到用多模态文档解析支持PDF、DOCX、图片、自动实体-关系提取到知识图谱以及五种不同的查询模式来让你权衡图谱遍历和向量检索——总的来说听起来很有前景。它支持多种解析器MinerU、Docling、PaddleOCR、多种LLM后端并在摄取期间处理表格、图片和方程。该项目在GitHub上拥有超过15,000颗星——这不是我检查的第一个指标但仍然令人印象深刻。你从本文中获得的内容真实实验的诚实基准、可运行的代码、以及图RAG何时有帮助何时没有的清晰画面。没有炒作没有挑选的演示。1、RAG-Anything如何工作60秒版本架构有两个阶段摄取和查询。摄取将PDF通过以下管道PDF文档 | v [文档解析器] ─── MinerU基于VLM或Docling更轻/更便宜 | v [内容提取] ─── 文本、表格、图片、公式 | v [实体-关系提取] ─── LLM提取葡萄酒、地区、化合物、年份 | v [图谱构建] ─── 存储在Neo4j或NetworkX中查询有五种模式本地使用向量搜索找到相关的文本块全局遍历知识图谱回答需要跨文档综合的问题混合结合两者仅向量传统的RAG仅图谱仅使用结构化关系关键洞察本地模式处理这种葡萄酒的酸度是多少“全局模式处理哪些地区的葡萄酒单宁和酸度平衡相似”2、实验设置语料库65本PDF葡萄酒书籍涵盖产区、葡萄品种、酿造、品鉴。基准问题三类事实查找局部“Tempranillo的典型酸度范围是什么”关系推理全局“与Pauillac气候条件相似的产区有哪些”综合混合“描述Bordeaux 2010年份的品质以及它如何影响了Cabernet Sauvignon的酚类成熟度”指标答案相关性人工评分1-5检索准确性相关实体命中延迟端到端时间令牌使用量基线朴素向量RAG无图谱仅嵌入相似性搜索3、结果图谱RAG何时获胜3.1 关系问题大幅获胜问题“哪些凉爽气候产区生产与Burgundy的Pinot Noir风格相似的葡萄酒”朴素向量RAG检索了关于Burgundy Pinot Noir的块但错过了提及类似风格的凉爽气候产区的关联章节。RAG-Anything全局模式遍历图谱Burgundy → Pinot Noir → 凉爽气候 → [Oregon、新西兰Central Otago、德国Ahr]找到连接土壤类型、温度范围、风格描述符人工评分朴素2.5/5图谱4.5/5原因当答案分布在多个文档中需要显式关系时图谱遍历有效。3.2 对比问题中等获胜问题“Priorat和Rioja葡萄酒在单宁结构和陈年方法上有何不同”朴素RAG检索了两个产区的段落但没有直接对比。图谱RAG找到Priorat → 高单宁 → 需要陈年 → 瓶中发展和Rioja → 中等单宁 → 可选陈年 → 橡木影响然后综合。人工评分朴素3.0/5图谱4.0/53.3 简单事实查找平局图谱稍慢问题“Merlot的平均酒精度范围是什么”两者都正确回答13-14.5% ABV。图谱RAG额外工作遍历实体节点。延迟朴素0.8秒图谱2.3秒令牌使用朴素1200图谱3400结论对于可以直接从文本中回答的简单事实额外的图谱开销并不值得。4、陷阱知识图谱遗漏的地方4.1 实体提取失败问题“Cardan是什么它与Bordeaux葡萄酒有什么关系”RAG-Anything的提取器错过Cardan因为它出现在脚注讨论旋转混合pumpover技术中不是主要实体。图谱没有节点。修复摄入前的自定义实体提示如果你有领域术语表。4.2 关系粒度问题“酵母菌株如何影响Malbec的风味”图谱有酵母 → 发酵 → 风味但没有具体的菌株-化合物映射。过于泛化。根本原因LLM提取倾向于高阶关系“影响”而不是详细机制。4.3 多跳推理限制问题“哪些葡萄园的收购导致了2010年代Bordeaux价格膨胀这对出口到亚洲有何影响”需要4跳收购 → 价格变化 → 出口市场 → 地区影响。RAG-Anything在3跳后停止默认设置。图谱遍历深度是可配置的但每次额外跳都增加延迟。5、代码示例运行你自己的评估以下是你可以适应自己领域的内容from rag_anything import RAGAnything, QueryMode import pandas as pd # 初始化 rag RAGAnything( llm_modelgpt-4, embedding_modeltext-embedding-3-large, graph_storagenetworkx, # 或 neo4j document_parserdocling # 或 mineru ) # 摄取语料库 rag.ingest_documents(./wine-books/*.pdf) # 查询不同模式 modes [QueryMode.LOCAL, QueryMode.GLOBAL, QueryMode.HYBRID] results {} for mode in modes: response rag.query( 哪些凉爽气候产区生产Pinot Noir, modemode ) results[mode] { answer: response.text, sources: response.sources, latency: response.latency_ms, tokens: response.token_usage } # 与朴素RAG比较无图谱 baseline rag.query( 哪些凉爽气候产区生产Pinot Noir, modeQueryMode.VECTOR_ONLY )6、成本与实际考虑摄取成本65本PDF平均150页MinerU解析$12VLM-based更慢但更准确Docling解析$3更快表格准确度较低实体提取$8gpt-4每文档约1,200令牌图谱存储免费NetworkX或$5/月Neo4j Aura免费层总摄取约$23一次查询成本平均每查询本地模式$0.04全局模式$0.18更多令牌用于图谱遍历朴素RAG$0.02结论如果你主要处理关系查询额外成本值得。如果主要是事实查找坚持朴素RAG。7、什么时候使用RAG-Anything使用它当你的领域有显式关系葡萄酒、医学、法律、供应链用户提出需要跨文档综合的问题你有足够文档使摄取成本值得20个复杂文档你需要可解释性为什么这个答案」展示图谱路径跳过它当文档大多是独立的API文档、独立文章查询是简单的事实查找延迟至关重要图谱遍历增加1-3秒你的领域是扁平的没有丰富关系我的实际建议从混合模式开始。它结合了局部和全局的最佳自动路由。投资实体提取。最便宜的查询改进是更好的实体识别。自定义你的提示。监控图谱密度。稀疏图谱少关系表现像昂贵向量RAG。检查提取指标。使用正确的存储。NetworkX用于原型10k节点。当规模扩大时转向Neo4j。8、结束语RAG-Anything交付了它所承诺的一种结合向量检索和知识图谱遍历的实用方法用于多模态文档。它并不在所有地方都更好。对于简单的事实查找它是开销。但对于关系推理——这个如何影响那个的问题——它比朴素RAG有显著改进。关键是你领域的结构。葡萄酒非常关系化。你的领域可能不是。我仍在使用它处理我的葡萄酒收藏。65本书现在可查询的关联。不是炒作。只是有效。原文链接RAG-Anything葡萄酒数据实测 - 汇智网