章节 01
导读 / 主楼:RAG Document QA:基于检索增强生成的文档问答系统
一个结合语义搜索与大语言模型的RAG系统,支持用户用自然语言查询自有文档,实现准确、可解释的上下文感知回答。
正文
一个结合语义搜索与大语言模型的RAG系统,支持用户用自然语言查询自有文档,实现准确、可解释的上下文感知回答。
章节 01
一个结合语义搜索与大语言模型的RAG系统,支持用户用自然语言查询自有文档,实现准确、可解释的上下文感知回答。
章节 02
在信息爆炸的时代,如何高效地从大量文档中提取有用信息是一个普遍挑战。传统的关键词搜索虽然快速,但往往无法理解查询的语义意图,返回的结果可能相关性不高。而纯粹依赖大语言模型的生成式问答虽然能理解自然语言,却容易产生"幻觉",编造不存在的信息。
检索增强生成(Retrieval-Augmented Generation,RAG)技术的出现,为这一问题提供了优雅的解决方案。RAG将文档检索与文本生成相结合:首先通过语义搜索从文档库中找到相关内容,然后将这些内容与用户问题一起输入语言模型生成答案。这样既保证回答基于真实文档,又能充分利用模型的语言理解能力。
章节 03
RAG Document QA是由法国里尔大学机器学习硕士生Sana Mirahsani开发的开源项目,实现了一个完整的RAG文档问答系统。用户可以将自己的文档放入系统,通过自然语言提问,获得基于文档内容的准确回答。
该项目采用Python 3.10开发,核心依赖包括LangChain、Hugging Face Transformers、sentence-transformers和ChromaDB。系统设计简洁,适合作为学习RAG架构的入门项目,也可作为基础框架进行功能扩展。
章节 04
系统使用HuggingFaceEmbeddings(基于sentence-transformers)将文档转换为向量表示。这些向量被存储在Chroma向量数据库中,支持高效的相似性搜索。Chroma以SQLite作为底层存储,默认将数据保存在本地的./my_rag_db目录。
向量数据库的选择对RAG系统至关重要。Chroma的优势在于:
章节 05
项目默认使用google/flan-t5-large作为生成模型,通过LangChain的HuggingFacePipeline构建检索-生成链。FLAN-T5是经过指令微调的T5模型,虽然规模相对较小,但足以演示RAG的基本流程。
需要注意的是,由于硬件限制,项目未集成GPT-4等更大规模的模型。开发者明确建议,若需生产级效果,应替换为更强大的LLM,如通过langchain-google-genai接入Gemini系列模型。
章节 06
系统的文档处理遵循标准的RAG流水线:
/data目录读取文本文件章节 07
项目的使用非常简单,只需几个步骤即可搭建完整的问答环境:
章节 08
git clone https://github.com/sana-mirahsani/rag_document_qa.git
cd rag_document_qa
python -m venv venv
source venv/bin/activate # macOS/Linux
pip install -r requirements.txt