前言
本系列分享前八篇分别讲述了
- LangChain&LangGraph的核心原理
- LangChain接入大模型的基本方法
- LangChain核心概念——链
- LangChain记忆存储与多轮对话机器人搭建
- LangChain接入工具基本流程
- LangChain Agent API快速搭建智能体
- LangChain多智能体浏览器自动化
- LangChain接入MCP实现流程
上篇文章分享了LangChain便捷接入MCP的完整实现流程。当今大模型应用领域能和Agent开发平起平坐的应用形式当属RAG检索增强生成知识库系统。RAG知识库系统可以将私有知识(例如私有文档等)存储在数据库中,为大模型提供关键的上下文逻辑支持,确保大模型回答准确,是大模型减少“幻觉”的关键。RAG技术被广泛应用于智能客服问答、企业信息处理等各个关键领域。作为Agent应用开发的“扛把子”,LangChain对RAG开发也提供了良好的支持。本期内容笔者将手把手分享如何利用LangChain从0到1开发小型PDF RAG系统。阅读本篇文章前希望大家已经了解RAG的基础概念,不太了解的读者可以阅读笔者的RAG技术专栏,掌握RAG的基本执行流程。
本系列分享是笔者结合自己学习工作中使用LangChain&LangGraph经验倾心编写,力求帮助大家体系化快速掌握LangChain&LangGraph AI Agent智能体开发的技能!大家感兴趣可以关注笔者优快云账号和系列专栏。更可关注笔者同名微信公众号: 大模型真好玩, 每期分享涉及的代码均可在公众号私信: LangChain智能体开发获得。
一、环境搭建
本期实战内容我们会通过Streamlit前端界面,结合LangChain框架与DashScope向量嵌入服务,实现一个轻量化的RAG智能问答系统。该系统支持上传多个PDF文档,系统将自动完成文本提取、分块、向量化,并构建基于FAISS的检索数据库。用户可以在前端页面输入任意问题,系统会调用DeepSeek-Chat模型对PDF进行语义理解和回答生成。
项目的第一步还是要安装我们所需环境,在之前创建的anaconda虚拟环境langchainenv中执行如下命令安装相关依赖:
pip install streamlit PyPDF2 dashscope faiss-cpu

二、LangChain知识库智能体核心逻辑
- 引入相关依赖,编写如下代码。不借助库从0到1搭建RAG需要大量的代码和开发时长,LangChain的出现大大降低了智能体RAG系统的开发难度。可以看到LangChain对RAG系统的文本分块、分块向量存储、向量检索、大模型生成等基本环节都作了成熟的封装,用户只需设计组织逻辑并调用相应的api即可快速完成RAG系统开发。 创建
langchain搭建pdf解析rag系统.py文件并写入如下代码:
import streamlit as st #用来快速构建前端页面
from PyPDF2 import PdfReader # PDF文档读取、处理的依赖库
from langchain.text_splitter import RecursiveCharacterTextSplitter # LangChain封装的文档切分库
from langchain_core.prompts import ChatPromptTemplate # LangChain提示词模板组件
from langchain_community.vectorstores import FAISS # LangChain使用FAISS向量数据库保存切分后短文档的文本块向量
from langchain.tools.retriever import create_retriever_tool #RAG中的R,把RAG系统中的检索功能封装成工具,提供检索文本块向量功能
from langchain.agents import AgentExecutor, create_tool_calling_agent #LangChain中高层封装的Agent
from langchain_community.embeddings import DashScopeEmbeddings #调用阿里云百炼平台的Embedding模型
from langchain.chat_models import init_chat_model # LangChain封装大模型组件
- 设置向量模型和大语言模型,向量模型使用了阿里云百炼提供的
text-embedding-v1模型,使用前需要注册阿里百炼的api_key。大语言模型使用DeepSeek-V3.1模型,也需要申请深度求索的api_key。申请api_key的详细操作大家可以参考我的文章【最新整理】全网免费接入DeepSeek-R1平台清单,包含网站和API使用(建议收藏)
# 初始化向量模型
embeddings = DashScopeEmbeddings(
model="text-embedding-v1",
dashscope_api_key='你在阿里云百炼注册的api_key'
)
#初始化大语言模型
llm = init_chat_model(
model='deepseek-chat',
model_provider="deepseek",
api_key='你在DeepSeek官网注册的api_key'
)
- 利用
PDFReader读取上传的PDF文档内容并将其切分成文本块。每个文本块包含1000个词,相邻两个文本块之间有200个词重合。
#读取pdf上传的内容
def pdf_read(pdf_doc):
text = ""
for pdf in pdf_doc:
pdf_reader = PdfReader(pdf)

最低0.47元/天 解锁文章
596

被折叠的 条评论
为什么被折叠?



