利用 llamaIndex 搭建文档问答助手

2023 全球智能汽车 AI 挑战赛 —— 赛道一:AI 大模型检索问答中,提供一份汽车使用手册文件,要求针对文件创建智能问答助手

本文通过使用 llamaIndex 完成这个 RAG 过程,和普通 RAG 不同的是:生成的答案包含图片及引用

搭建这个问答系统一共分为 3 步

  • 预处理文档:基于标题层级对 pdf 进行分块处理,便于后续图片及引文的使用
  • 构建索引:通过 llamaIndex 构建索引,本次使用 bm25 及向量检索的方式
  • 构建检索生成引擎:通过 llamaIndex 构建查询引擎

预处理文档

通过 pymupdf 库按标题切分 pdf 文档,最终生成类似文档

利用llamaIndex搭建文档问答助手-20250116101837

构建索引

通过尝试不同的索引,确定使用 BM 25 Retriever+VectorStoreIndex 的混合索引的方式,以下是不同索引的评估效果

检索器topKhit_ratemrrprecisionrecallapndcg备注
VectorStoreIndex20.7797510.7087030.4008290.7797510.7087030.727308
VectorStoreIndex50.8857310.739540.1841620.8857310.739540.776535
SummaryIndex50.9715810.0122250.0017760.9715810.0122250.134562
BM25Retriever20.0929540.0867380.0482530.0929540.0867380.088366官方
BM25Retriever20.8715220.8069860.4481940.8715220.8069860.823886自定义
BM25Retriever+VectorStoreIndex2,2,20.8721140.8093550.447010.8721140.8093550.825789自定义 + QueryFusionRetriever
BM25Retriever+VectorStoreIndex3,5,30.9100060.7990920.3033350.9100060.7990920.82779num_queries=2

构建检索生成引擎

通过结构化 llm 的输出,输出引文,然后提取引文的图片,生成最终答案,效果如下

利用llamaIndex搭建文档问答助手-20250116101837-1

项目地址:GitHub - WuShaogui/DocumentsIntelligentAssistant: 对文档使用 RAG 生成回答