夜雨聆风学习资料网

ARTICLE · 1315866

从零复现本地RAG文档问答系统:Ollama + BGE-M3 + Qwen2.5 3B实战|获取资料见末尾链接

从零复现本地RAG文档问答系统:Ollama + BGE-M3 + Qwen2.5 3B实战|获取资料见末尾链接

从零复现本地 RAG 文档问答系统:Ollama + BGE-M3 + Qwen2.5 3B 实战

本文基于实测代码、演示文档和两张原始技术图整理,涵盖本地部署、RAG检索流程、问答实验与结果分析。

一、项目简介

本项目基于 GitHub 开源项目 rag-from-scratch-python 进行复现,主题是大语言模型应用中的检索增强生成(Retrieval-Augmented Generation,简称 RAG)。

项目实现了一个本地 PDF 问答流程:用户导入文档后,可以用自然语言提问;系统从文档中检索相关片段,再将片段和问题交给大语言模型生成回答,并显示命中的来源内容。

该项目关注的是如何把大语言模型接入外部知识,不涉及模型训练或微调。

二、项目功能

系统主要包含以下功能:

  1. PDF 文本提取
    :使用 pypdf 读取 PDF 中可复制的文字。
  2. 文本切分
    :将较长的文档拆分为较小片段,默认每段约 800 个字符,相邻片段重叠约 100 个字符。
  3. 文本向量化
    :使用 BGE-M3 将文档片段和用户问题转换为向量。
  4. 相关内容检索
    :根据向量余弦相似度排序,选取最相关的片段作为回答上下文。
  5. 大模型生成
    :使用 Qwen2.5 3B 根据检索到的内容组织答案。
  6. 来源展示
    :输出答案的同时显示命中的片段及相似度分数,便于核对回答依据。

三、系统运行原理

系统分为文档入库和问题问答两个阶段。

文档入库阶段:PDF 经文本提取后被切分成多个片段;BGE-M3 为每个片段生成向量;文本、向量和来源信息随后保存在本地向量存储中。

问题问答阶段:系统将用户问题转换为向量,与已保存的片段向量计算相似度;按相似度取回前 4 个片段;随后将这些片段和用户问题组合成提示词,交给 Qwen2.5 3B 生成答案。程序最后返回答案和检索来源。

整个过程可以概括为:

PDF 文本提取 → 文本切分 → 向量编码 → 本地存储 → 相似度检索 → 大模型生成 → 返回答案与来源

项目系统流程图

图1:离线建库及在线问答两条流程,涵盖PDF解析、BGE-M3编码、Top-4检索和Qwen2.5 3B生成。

四、复现环境与适配说明

  • 操作系统:Windows
  • Python:3.15.2
  • 推理服务:Ollama
  • 向量模型:BGE-M3
  • 生成模型:Qwen2.5 3B
  • 演示文档:demo_assets/星河智能客服_演示知识库.pdf

GitHub 原项目使用 ChromaDB,并在 README 中以 nomic-embed-text 和 llama3.2 作为默认模型。本次复现环境只有 Python 3.15,原项目的 ChromaDB 依赖无法正常安装,因此将向量存储适配为本地 JSON 文件,同时改用适合中文演示的 BGE-M3 和 Qwen2.5 3B。PDF 解析、切分、检索、提示词构造和模型生成的主要流程仍按原项目实现。

JSON 向量存储适用于本次小规模复现,不适合替代生产环境中的专业向量数据库。

五、复现步骤

在项目目录打开 PowerShell,确认 Ollama 服务可用,并已安装 BGE-M3 和 Qwen2.5 3B。若尚未下载模型,可执行:

ollama pull bge-m3ollama pull qwen2.5:3b

安装项目运行依赖:

.\.venv\Scripts\python.exe -m pip install -r .\requirements-reproduction.txt

设置源码路径并导入演示 PDF:

$env:PYTHONPATH = "src"\.venv\Scripts\python.exe -m rag.cli --persist-dir ".\demo_assets\vector_store" ingest ".\demo_assets\星河智能客服_演示知识库.pdf"

导入成功后,可执行以下命令体验问答:

\.venv\Scripts\python.exe -m rag.cli --persist-dir ".\demo_assets\vector_store" ask "人工客服的服务时间是什么?"\.venv\Scripts\python.exe -m rag.cli --persist-dir ".\demo_assets\vector_store" ask "知识库多久更新一次?"\.venv\Scripts\python.exe -m rag.cli --persist-dir ".\demo_assets\vector_store" ask "扫描版 PDF 能直接导入检索吗?"

六、实际运行结果

演示 PDF 成功完成文本提取、切分和向量入库,共生成 2 个文本片段。之后使用本地模型完成了以下三条问答:

问题
回答摘要
首位来源相似度
人工客服的服务时间是什么?
周一至周五 09:00-18:00,法定节假日除外。
0.728
知识库多久更新一次?
每周三 22:00 例行更新。
0.698
扫描版 PDF 能直接导入检索吗?
不能,需要先通过 OCR 提取文字。
0.585

三条回答均与演示文档中的内容一致,并且终端返回了对应来源片段。上述结果来自单份演示文档和三条人工设计的问题,用于说明功能链路已跑通,不代表系统在一般问题集上的准确率或正式基准测试结果。

向量检索相似度可视化

图2:三组问题的首位与次位命中相似度(分别为0.728/0.617、0.698/0.627、0.585/0.475),来自本地演示日志,不代表正式评测分数。

七、项目特点与限制

  • 本地推理
    :问题和文档内容通过本地 Ollama 模型处理,运行问答时不依赖云端大模型 API。
  • 答案可核对
    :系统展示检索到的来源片段,用户可以检查答案是否有文档依据。
  • 输入类型有限
    :当前读取的是 PDF 可复制文本;扫描图片型 PDF 需要先接入 OCR。
  • 检索能力有限
    :演示使用小型 JSON 向量文件和固定 Top-K 检索,未加入重排序、低相似度拒答阈值或系统化评测。
  • 模型能力有限
    :Qwen2.5 3B 适合本机演示,复杂问题上的回答质量仍受模型规模和检索内容影响。
  • 演示数据为虚构
    :星河智能客服的业务资料是专门制作的样例,不对应真实企业信息。

八、总结

本次复现完成了从 PDF 导入到模型回答的完整 RAG 链路,展示了大语言模型结合外部知识库进行问答的基本方法。项目适合作为理解 RAG 基础流程和本地大模型应用的入门示例。若继续扩展,可增加更多文档与问题样本,比较不同切分策略,并使用 Recall@K、答案忠实度等指标进行正式评估。


九、项目素材与复现资料

本次整理以 2026 年 11 月 5 日的原始项目素材为依据:

文件
用途
RAG文档问答.md
本文主要技术说明
rag-from-scratch-python.zip
项目代码与复现文件压缩包
星河智能客服_演示知识库.pdf
演示使用的虚构业务知识库
2026-11-04 20-31-41.mp4
录制的项目演示视频
两张 PNG 截图
RAG 系统架构流程图与向量检索相似度分析图

注意:素材文件列出不等于已经提供公开下载地址。需要资源文件时可通过下方联系方式咨询;演示 PDF 的内容为虚构样例。


十、关于菏泽云澜元谱信息科技有限公司

菏泽云澜元谱信息科技有限公司专注于人工智能算法研发、科研实验技术服务、Python 软件开发与数据分析,为企业及研发团队提供定制技术解决方案。

八大技术服务方向

方向
具体服务
计算机视觉与图像处理
YOLO、RT-DETR 目标检测,图像分类、语义分割、目标跟踪、图像增强、超分辨率
机器学习与深度学习
PyTorch、CNN、Transformer、Mamba、分类预测、模型优化与知识蒸馏
科研实验与算法复现
公开论文复现、对比实验、消融实验、模型改进及技术文档
Python 软件开发与数据分析
数据清洗、统计分析、可视化、Excel 自动化、桌面工具与 Web 应用
大模型与 AI 智能体
企业 RAG 知识库、Agent 工作流、智能客服、模型微调
医学图像与医疗 AI
医学影像分割、病灶检测与临床数据预测研究(遵循数据及临床合规要求)
NLP 与多模态学习
文本分类、信息抽取、情感分析、图文匹配与多模态检索
遥感与智能视觉
遥感目标检测、土地覆盖分类、变化检测、无人机影像分析

五大主营业务入口

  1. 人工智能算法开发
    :计算机视觉、深度学习、医学 AI 和遥感应用。
  2. 科研实验与算法复现
    :公开算法复现、模型改进、实验设计与验证。
  3. Python 软件开发
    :自动化工具、算法软件和数据可视化系统。
  4. 大模型与 AI 智能体
    :RAG 知识库、智能体、工作流、模型微调。
  5. 数据分析与智能预测
    :数据清洗、统计建模、分类与回归预测。

项目咨询与商务合作

支持远程技术合作、定制开发与项目需求咨询。具体需求、周期与交付方式可根据项目协商。

官网与联系方式:https://wyj.life/docs/contact/#services

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料