crud-rag项目学习-架构说明

文章目录

是的,这个项目是在评估 RAG 系统,不是单纯训练模型,也不是单纯问答 demo。

你可以把它理解成:

text 复制代码
CRUD-RAG = 一个中文 RAG 评测基准 + 一套跑评估的代码

它在干嘛:

text 复制代码
给定一个任务数据集
→ 从 8 万篇新闻文档里检索相关材料
→ 把检索到的材料塞给 LLM
→ 让 LLM 生成答案/摘要/续写/改错
→ 拿生成结果和标准答案算 BLEU、ROUGE 等指标

所以它是 RAG,因为它不是直接让模型凭空回答,而是先检索文档,再让模型基于文档生成。

为什么要建立索引?

因为项目里有 data/80000_docs,大概 8 万篇新闻文本。每次问一个问题时,如果直接全文扫描 8 万篇文章,会非常慢。

索引就是把这些文档提前处理成"可快速搜索"的结构。

你现在建的 FAISS 索引大概就是这个东西:

text 复制代码
原始新闻文本
→ 切成小块 chunk
→ 用 embedding 模型转成向量
→ 存进 FAISS 向量索引

之后检索时:

text 复制代码
用户问题/事件
→ 转成向量
→ 在 FAISS 里找最相似的几个文档块
→ 返回给 LLM 当上下文

也就是:

text 复制代码
索引 = RAG 的资料库搜索引擎

这个项目的几个核心部分:

text 复制代码
data/crud_split/split_merged.json
评测题目和标准答案。比如事件摘要任务有 2000 条。

data/80000_docs
检索用的大文档库,也就是 RAG 的知识库。

src/retrievers
检索器。负责从 8 万文档里找相关内容。

src/embeddings
把文本转成向量。你现在用的是本地 BAAI/bge-base-zh-v1.5。

src/tasks
具体评测任务,比如摘要、续写、问答、幻觉修改。

quick_start.py
总入口,负责串起来:加载模型、加载检索器、加载数据、跑评估。

evaluator.py
真正批量跑评估并保存结果。

你刚刚跑的流程可以翻译成人话:

text 复制代码
1. 用本地 bge 模型把 8 万新闻建成 FAISS 向量索引
2. 对 event_summary 这个任务的 2000 条事件逐条评估
3. 每条事件先去 8 万新闻里检索 top 8 个相关片段
4. 把事件 + 检索片段发给 qwen-turbo
5. qwen-turbo 生成摘要
6. 和标准摘要比 BLEU / ROUGE

所以最终结果不是"模型训练好了",而是:

text 复制代码
qwen-turbo + 本地 bge 检索 + FAISS 索引
这个 RAG 系统在 CRUD-RAG event_summary 任务上的分数

一句话总结:

这个项目是在搭一个 RAG 评测流水线:索引是知识库,检索器负责找资料,LLM 负责生成答案,评估器负责打分。