项目的代码库清晰地组织了RAG管道的各个阶段:
数据准备阶段
download_prep.py脚本负责初始的数据准备工作:
- 下载NCBI Taxonomy本体(约1GB)
- 为9种不同的句子转换器编码器构建FAISS索引
- 缓存结果为.pkl和.index文件,加速后续运行
这一步是整个流程的基础,NCBI本体提供了权威的分类学知识库,而多编码器的索引构建允许在后续步骤中选择最优的嵌入模型。
数据摄取管道
full_pipeline2.ipynb笔记本执行核心的数据摄取流程:
- 加载和规范化VDP和Fujita表的样本元数据
- 使用FAISS相似度搜索将样本中的分类名称与NCBI本体匹配
- 生成嵌入向量,存储在DuckDB(document_vectors.db)和FAISS(docs.faiss)中
RAG管道实现
每个模型都有独立的RAG实现脚本(RAGgpt.py、RAGllama.py、RAGolmo.py、RAGpythia2.py),这些脚本共享相同的数据库连接和检索逻辑,但使用不同的模型进行答案生成。
RAGAS评估框架
RAGASeval.py提供了统一的评估工具,使用RAGAS框架的五个核心指标:
| 指标 |
含义 |
| 忠实度(Faithfulness) |
答案中的声明是否基于检索到的上下文? |
| 答案相关性(Answer Relevancy) |
答案是否针对问题? |
| 上下文召回率(Context Recall) |
检索到的上下文是否覆盖了真实答案? |
| 上下文精确率(Context Precision) |
检索到的上下文是否无无关段落? |
| 答案正确性(Answer Correctness) |
答案与真实答案的接近程度? |
这五个指标从检索质量和生成质量两个维度全面评估了RAG系统的表现。