好的,我帮你把这个 RAG 方案整理成标准 Markdown 格式,并且把代码部分放进代码块,方便直接阅读和复制。
RAG 系统方案设计
1. 方案概述
构建一个基于 Agentic RAG 的智能分析系统,实现:
- 多模态数据整合(文本、图片、PDF等)
- 动态外部数据更新(通过 MCP 调用爬虫获取 ESG 报告)
- 闭环性能优化(Ragas 评估反馈至 Agent 决策)
- 复杂问题推理(Agents 分解任务并调用工具链)
2. 模块设计与技术选型
模块 1:Ragas 评估体系(准确性监控)
评估指标
from ragas import evaluate
from ragas.metrics import answer_relevancy, faithfulness, context_recall
# 输入问题、答案、上下文、人工标注答案
dataset = {
"question": ["某公司2023年碳排放强度是多少?"],
"answer": ["1.2吨/万元营收"],
"contexts": [["ESG报告第5页显示..."]],
"ground_truth": ["1.15吨/万元营收"]
}
# 执行评估
score = evaluate(dataset, metrics=[answer_relevancy, faithfulness, context_recall])
print(score) # 输出各维度评分
技术栈
- Ragas 开源框架
- 人工标注数据(仅需 10% 样本)
- 自动化测试问题生成(基于 LLM 生成对抗性问题)
模块 2:MCP 工具调用(ESG 数据获取)
动态爬虫流程
class ESGScraper:
def __init__(self):
self.tools = {
"web_scraper": ScrapyAPITool(),
"api_loader": ESGDataAPI()
}
def fetch_reports(self, company: str):
# 智能选择数据源
if "上市公司" in company:
return self.tools["api_loader"].get_financial_data(company)
else:
return self.tools["web_scraper"].crawl(f"https://esg.org/{company}")
技术栈
- Request / Xpath(网页爬虫)
- 公开 ESG 资源(如新浪财经)
- 数据清洗管道(去重、格式标准化)
模块 3:Agents 智能体工作流(动态 RAG)
工作流逻辑
from langchain.agents import AgentExecutor, Tool
tools = [
Tool(name="ESG检索", func=vector_db_search),
Tool(name="公式计算", func=financial_calculator),
Tool(name="数据爬取", func=ESGScraper().fetch_reports)
]
agent = AgentExecutor.from_agent_and_tools(
agent=DynamicPlanningAgent(), # 自定义动态规划智能体
tools=tools,
max_iterations=3
)
response = agent.run("范围一排放量?")
执行步骤:
- 分解问题
- 检索本地知识库
- 触发爬虫补充数据
- 调用计算工具验证
- 生成最终报告
技术栈
- LangChain Agents
- 动态规划算法(基于 LLM 的 Chain-of-Thought)
- 知识库版本管理
模块 4:OCR 多模态处理
图像处理流程
from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True)
def extract_text(img_path):
result = ocr.ocr(img_path, cls=True)
texts = [line[1][0] for line in result]
return "\n".join(texts)
# 提取 PDF/图片中的 ESG 数据
esg_table_text = extract_text("carbon_emission.png")
技术栈
- PyMuPDF
- 图像预处理(去噪、增强)
- 表格结构化识别(使用豆包、qwen 模型进行图片识别)
3. 系统流程(以 ESG 分析为例)
-
用户提问
分析腾讯 2023 年 ESG 报告中的范围一排放量
-
工作流触发
-
Agents 分解任务:
- 检索本地知识库(无最新报告)
- MCP 调用爬虫获取 2023 年报告(PDF)
- OCR 提取 PDF 中的表格数据
- 计算范围一排放量
-
-
数据整合
年度 | 范围一排放量 |
---|---|
2023 | 2725373.5 |
-
Ragas 评估反馈
- 检测到范围一碳排放量未引用上下文 → 优化 Agents 的引用机制
4. 优化方向
性能优化
- 分布式爬虫(Scrapy-Redis)
- OCR 模型微调(针对行业文档)
评估自动化
- 利用 LLM 生成测试用例(如 GPT-4 生成对抗性问题)
- 监控异常指标自动触发重训练
安全增强
- 爬虫伦理审查(Robots 协议检测)
- 数据脱敏