RAG保姆级教程,收藏这篇就够了!手把手教你用Ollama+Qwen3,零成本搭建私有知识库!
一、langchain的实现流程:

二、环境准备
#安装指定版本的langchain包,不指定版本默认安装最新版langchain v1.0有很大的变化,无法运行本文提供代码!
pip install langchain==0.3.27 langchain_community==0.3.31
#Embedding模型使用bge-m3,推荐,挺好用的。
ollama pull bge-m3:latest
#chat模型使用qwen3
ollama pull qwen3:4b-thinking-2507-q4_K_M
三 、完整代码
from langchain.chains import RetrievalQA
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.llms import Ollama
from langchain.prompts import PromptTemplate
# --- 配置区 ---
# 1. ChromaDB 数据持久化路径
CHROMA_DB_PATH = "data/chroma_db"
# 2. Ollama 中运行的 Embedding 模型名称
OLLAMA_EMBEDDING_MODEL = "bge-m3:latest"
# 3. Ollama 中运行的 Chat 模型名称
OLLAMA_CHAT_MODEL = "qwen3:4b-thinking-2507-q4_K_M"
# 4. Chroma 集合名称(必须与ingest_pdf.py中一致)
CHROMA_COLLECTION_NAME = "pdf_knowledge_base"
# 5. 检索时返回的最相关文档数量
TOP_K_RETRIEVAL = 3
# --- 初始化模型和数据库 ---
# 初始化大语言模型
llm = Ollama(model=OLLAMA_CHAT_MODEL)
# 创建嵌入模型
embeddings = OllamaEmbeddings(model=OLLAMA_EMBEDDING_MODEL)
# 加载Chroma向量数据库
vectorstore = Chroma(
persist_directory=CHROMA_DB_PATH,
embedding_function=embeddings,
collection_name=CHROMA_COLLECTION_NAME
)
# 创建自定义提示模板
template = """你是一个有用的助手。请根据以下提供的上下文信息回答用户的问题。
你的回答应该只基于上下文,如果上下文中没有相关信息,请回答"根据提供的上下文,我无法回答该问题"。
上下文信息:
{context}
问题:{question}
回答:"""
prompt = PromptTemplate(template=template, input_variables=["context", "question"])
# 创建RAG链
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(search_kwargs={"k": TOP_K_RETRIEVAL}),
chain_type_kwargs={"prompt": prompt},
return_source_documents=True
)
# --- 主执行流程 ---
def main():
"""主函数:启动交互式问答。"""
print("--- 本地知识库问答系统已启动 ---")
print("输入 'quit' 或 'exit' 可退出程序。")
# 进入交互式循环
while True:
user_question = input("\n请输入你的问题: ")
if user_question.lower() in ['quit', 'exit']:
print("再见!")
break
if not user_question.strip():
continue
# 执行RAG流程
print("正在检索相关知识并生成回答...")
try:
# 使用RAG链检索
result = qa_chain.invoke({"query": user_question})
# 打印最终答案
print("\n--- 最终回答 ---")
print(result["result"])
except Exception as e:
print(f"处理问题时出错: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()
思考:
1.直接实现和langchain实现的对比:
| 对比维度 | 直接 API 实现 | LangChain 实现 |
|---|---|---|
| 开发效率 | 低 。需要手动编写每个环节的代码,包括 API 调用、数据格式转换、错误处理等,代码量大,开发周期长。 | 高 。通过组合高级组件(如 RetrievalQA)快速构建应用,框架自动处理了大部分“胶水代码”,开发速度快。 |
| 代码复杂度 | 高 。业务逻辑与底层调用代码混杂在一起,代码结构相对扁平,可读性较差,维护成本高。 | 低 。代码是声明式的,专注于“做什么”而非“怎么做”。逻辑被封装在各个组件和链中,结构清晰,易于理解和维护。 |
| 抽象层次 | 低 。直接与 HTTP API、数据库客户端等底层细节打交道,开发者对每一步都有完全的控制权。 | 高 。工作在 LLM、Retriever、PromptTemplate 等抽象概念上,隐藏了底层的 API 调用和数据流转细节。 |
| 灵活性与定制性 | 极高 。可以随心所欲地在任何步骤插入自定义逻辑,实现非标准的、高度定制化的 RAG 流程。 | 较高 。在框架提供的范式内非常灵活(如轻松替换 LLM 或向量库)。但要实现框架之外的定制化流程,可能需要深入理解其内部机制或编写自定义组件。 |
| 依赖项 | 少 。通常只需要 requests、chromadb 等核心库,环境轻量,部署简单。 |
多 。需要安装 langchain、langchain-community 等一系列库,依赖关系复杂,包体积较大。 |
| 学习曲线 | 入门平缓,精通陡峭 。学习单个 API 调用很简单,但要构建一个健壮、完整的系统,需要处理大量细节和边界情况。 | 入门陡峭,后续平缓 。需要先学习 LangChain 的核心概念(链、代理、工具等)。一旦掌握,构建复杂应用的效率会指数级提升。 |
| 调试与错误处理 | 直接 。错误信息通常来自具体的 API 调用,问题定位非常精确。开发者完全控制错误处理逻辑。 | 间接 。错误可能被封装在多层抽象之下,堆栈跟踪可能较长,有时需要理解框架内部才能定位问题。 |
| 生态系统与集成 | 有限 。依赖于所选用服务的官方 API 和社区支持,集成其他服务需要自己编写适配代码。 | 丰富 。拥有庞大的生态系统,内置了对数十种 LLM、向量数据库、数据加载器、工具的支持,集成非常方便。 |
| 性能开销 | 低 。没有额外的抽象层开销,代码执行路径最短。 | 有 。框架的抽象和组件化会带来一定的性能开销,但对于大多数应用场景来说,这种开销可以忽略不计。 |
2.总结与建议:
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 快速原型验证 | LangChain | 可以在几分钟内搭建一个可用的 RAG 系统,快速验证想法。 |
| 学习 RAG 原理 | 直接 API 实现 | 亲手实现每个步骤能让你更深刻地理解 RAG 的工作机制和每个环节的细节。 |
| 生产级复杂应用 | LangChain | 其模块化、可维护性和丰富的生态系统使其成为构建复杂、可扩展应用的首选。 |
| 极度轻量级或性能敏感应用 | 直接 API 实现 | 当部署环境资源极其有限,或对请求延迟有毫秒级要求时,直接实现可以减少不必要的开销。 |
| 需要高度定制化的非标准流程 | 直接 API 实现 | 如果你的 RAG 流程非常特殊,无法用 LangChain 的标准模式套用,直接实现能给你最大的自由度。 |
| 团队协作与长期维护 | LangChain | 统一的框架和概念降低了团队成员之间的沟通成本,代码更易于交接和维护。 |
如何学习大模型 AI ?
我国在AI大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着Al技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国Al产业的创新步伐。加强人才培养,优化教育体系,国际合作并进,是破解困局、推动AI发展的关键。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

2025最新大模型学习路线
明确的学习路线至关重要。它能指引新人起点、规划学习顺序、明确核心知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。
对于从来没有接触过AI大模型的同学,我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线。

针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。
大模型经典PDF书籍
新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路!

配套大模型项目实战
所有视频教程所涉及的实战项目和项目源码等
博主介绍+AI项目案例集锦
MoPaaS专注于Al技术能力建设与应用场景开发,与智学优课联合孵化,培养适合未来发展需求的技术性人才和应用型领袖。


这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

为什么要学习大模型?
2025人工智能大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

适合人群
- 在校学生:包括专科、本科、硕士和博士研究生。学生应具备扎实的编程基础和一定的数学基础,有志于深入AGI大模型行业,希望开展相关的研究和开发工作。
- IT行业从业人员:包括在职或失业者,涵盖开发、测试、运维、产品经理等职务。拥有一定的IT从业经验,至少1年以上的编程工作经验,对大模型技术感兴趣或有业务需求,希望通过课程提升自身在IT领域的竞争力。
- IT管理及技术研究领域人员:包括技术经理、技术负责人、CTO、架构师、研究员等角色。这些人员需要跟随技术发展趋势,主导技术创新,推动大模型技术在企业业务中的应用与改造。
- 传统AI从业人员:包括算法工程师、机器视觉工程师、深度学习工程师等。这些AI技术人才原先从事机器视觉、自然语言处理、推荐系统等领域工作,现需要快速补充大模型技术能力,获得大模型训练微调的实操技能,以适应新的技术发展趋势。

课程精彩瞬间
大模型核心原理与Prompt:掌握大语言模型的核心知识,了解行业应用与趋势;熟练Python编程,提升提示工程技能,为Al应用开发打下坚实基础。
RAG应用开发工程:掌握RAG应用开发全流程,理解前沿技术,提升商业化分析与优化能力,通过实战项目加深理解与应用。
Agent应用架构进阶实践:掌握大模型Agent技术的核心原理与实践应用,能够独立完成Agent系统的设计与开发,提升多智能体协同与复杂任务处理的能力,为AI产品的创新与优化提供有力支持。
模型微调与私有化大模型:掌握大模型微调与私有化部署技能,提升模型优化与部署能力,为大模型项目落地打下坚实基础。
顶尖师资,深耕AI大模型前沿技术
实战专家亲授,让你少走弯路
一对一学习规划,职业生涯指导
- 真实商业项目实训
- 大厂绿色直通车
人才库优秀学员参与真实商业项目实训
以商业交付标准作为学习标准,具备真实大模型项目实践操作经验可写入简历,支持项目背调
大厂绿色直通车,冲击行业高薪岗位
文中涉及到的完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐










所有评论(0)