1. 项目概述:本地化RAG系统的完整实现
这个项目实现了一个完全本地运行的RAG(检索增强生成)系统,不依赖任何云服务或API调用。核心架构由三个关键组件构成:Qwen2.5-3B-Instruct作为本地大语言模型、BGE-base-zh-v1.5作为文本嵌入模型,以及Chroma作为向量数据库。这种组合特别适合需要数据隐私保护或网络条件受限的场景。
提示:RAG系统的核心价值在于将外部知识检索与大模型生成能力结合,相比纯LLM方案,它能有效缓解幻觉问题并提供可验证的答案来源。
项目模板已经实现了完整的RAG工作流:
- 文档预处理(Ingest):将原始文本分块并生成向量表示
- 检索(Retrieval):根据查询语义匹配相关文档片段
- 生成(Answer):将检索结果作为上下文提供给LLM生成最终回答
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心组件选型解析
2.1 语言模型:Qwen2.5-3B-Instruct
Qwen2.5系列是通义千问最新开源的轻量级大语言模型,这个3B参数的指令微调版本在中文任务上表现出色。选择它的主要原因包括:
- 本地部署优势:模型完全在本地运行,无需网络连接
- 适中的资源需求:3B参数模型在消费级GPU(如RTX 3090)上可流畅运行
- 优秀的指令跟随能力:Instruct版本专门优化了问答和任务完成场景
实测在NVIDIA RTX 3090上,该模型推理速度约15-20 tokens/秒,内存占用约6GB,非常适合本地开发环境。
2.2 嵌入模型:BGE-base-zh-v1.5
BGE(BAAI General Embedding)是北京智源研究院开源的文本嵌入模型,这个中文专用版本在语义检索任务上表现优异。其特点包括:
- 768维稠密向量:平衡了效果和计算效率
- 双语对齐能力:支持中英文混合检索
- 社区验证的可靠性:在MTEB中文榜单上排名前列
与OpenAI的text-embedding-ada-002相比,BGE在中文场景下的检索准确率高出约8-12%,且完全避免了API调用带来的延迟和费用问题。
2.3 向量数据库:Chroma
Chroma是一个轻量级开源向量数据库,特别适合RAG应用场景:
- 嵌入式设计:无需单独部署服务,Python直接集成
- 持久化支持:向量索引可保存到本地磁盘
- 简洁的API:与LangChain生态无缝对接
在百万级向量规模下,Chroma的检索延迟通常在50-100ms之间,完全满足本地开发需求。对于更大规模的数据,可以考虑升级到Milvus或Weaviate。
3. 工程结构深度解析
3.1 目录架构设计理念
项目的模块化设计遵循了"关注点分离"原则:
code复制rag_qwen_bge_te
