还在惊叹大模型?不如用LangChain+DeepSeek亲手打造更强大的AI应用!本文从核心概念、使用方法、竞品对比到快速上手,附带简易版RAG,一文讲透,小白也能看懂。
Github:github.com/langchain-a...

你是否也曾惊叹于 DeepSeek、ChatGPT 等大语言模型(LLM)的强大能力,但又苦于不知道如何将这种能力集成到自己的应用中?你是否想构建一个能连接外部知识库的问答机器人,或者一个能自主调用工具的智能代理?
如果你的答案是"是",那么恭喜你,这篇文章就是为你准备的!今天,我们将深入探讨一个当下最火的AI开发框架------LangChain。
它就像AI世界的"乐高",让你能轻松地将大模型、私有数据和外部工具"拼接"在一起,创造出无限可能。
本文将带你:
✅ 理解 LangChain 是什么:它解决了什么核心问题?
✅ 掌握 LangChain 怎么用:拆解其核心组件和使用方法。
✅ 洞悉 LangChain 的优缺点:与它的竞品相比,它好在哪,又有哪些不足?
✅ 实战 LangChain 快速上手:提供一个集成 DeepSeek 的保姆级教程。
什么是 LangChain?
简单来说,LangChain 是一个开源的、用于构建大语言模型(LLM)应用的开发框架。
想象一下,大模型(比如 DeepSeek)是一个超级聪明的大脑,但它被"关"在一个盒子里。它只知道训练时学到的知识,无法获取实时信息,也无法与外部世界互动(比如查询数据库、调用API)。
LangChain 的作用就是打破这个"盒子" 。它提供了一套标准的、可扩展的接口和组件,充当了"胶水"的角色,将这个聪明的大"脑"与各种外部资源连接起来。
通过 LangChain,你可以轻松实现:
- 与模型交互:用标准化的方式管理和优化你对模型的指令(Prompt)。
- 构建应用链(Chains) :将多个模型调用或工具使用串联起来,完成更复杂的任务。
- 知识库问答(RAG) :让模型能够"阅读"你的私有文档(PDF、TXT等),并基于文档内容回答问题。
- 构建智能代理(Agents) :赋予模型使用工具(如搜索引擎、计算器、API)的能力,让它像一个真正的人类助手一样自主决策和行动。
LangChain 怎么用?核心组件拆解
LangChain 的强大之处在于其模块化的设计。掌握了它的几个核心组件,你就掌握了构建AI应用的"命脉"。
① Models I/O:模型输入与输出
这是与大模型直接交互的模块。
- LLMs :这是对所有大语言模型的通用接口封装。我们这里将重点使用 DeepSeek。通过 LangChain,你可以用同样的方式调用 DeepSeek、OpenAI 等任何支持的模型。
- Prompts:提示词模板。你可以创建带有变量的模板,让代码更清晰、更易于复用。
② Chains:应用链
链(Chains)是 LangChain 的核心。它允许你将多个组件(甚至是其他链)按顺序组合起来,实现更复杂的逻辑。最基础的 LLMChain
就是将 Prompt 和 LLM 组合在一起。
③ Data Connection:数据连接(RAG 的基础)
这是实现"知识库问答"的关键。如果你想让模型回答关于某份内部文档的问题,就需要用到这个模块。
- Document Loaders:用于加载各种格式的数据(TXT, PDF, Web Page...)。
- Text Splitters:将长文档切分成小块,以便模型处理。
- Embeddings:将文本块转换为向量(数字表示),这里同样可以配置使用 DeepSeek 或其他服务提供的模型。
- Vector Stores:用于存储和高效检索向量的数据库(如 FAISS, Chroma)。
- Retrievers:负责根据用户问题,从向量数据库中检索最相关的文本块。
组合起来,就构成了强大的 检索增强生成(RAG) 流程:用户提问 -> 检索相关文档片段 -> 将问题和片段一起发给模型 -> 模型生成答案
。
④ Agents:智能代理
这是 LangChain 最酷的功能!代理(Agents)不再遵循固定的执行链,而是让 LLM 自己"思考"需要采取什么步骤。
你可以给代理一套"工具"(Tools),比如:
- Google 搜索工具:用于查询实时信息。
- 计算器工具:用于数学计算。
- 数据库查询工具:用于从你的数据库中获取数据。
代理会根据用户的问题,自主决定调用哪个工具,并根据工具返回的结果,决定下一步行动,直到最终解决问题。
竞品对比:LangChain 的优缺点
没有完美的技术,LangChain 也不例外。
特性 | LangChain | LlamaIndex | Semantic Kernel (Microsoft) | 直接调用API |
---|---|---|---|---|
定位 | 全能型AI应用开发框架 | 专注于RAG(知识库问答) | 面向企业级、语言无关的SDK | 基础模型能力 |
优点 | 功能最全面,社区庞大,集成度高,生态系统成熟,非常灵活。 | 在RAG领域更专注、更易用,文档清晰,对数据处理的优化更好。 | 微软背书,跨语言支持(C#, Python),设计思路清晰,适合企业集成。 | 最简单直接,完全可控,没有额外的抽象层。 |
缺点 | 抽象层次较多,有时被称为"胶水代码地狱",学习曲线较陡峭,API变动快。 | 功能范围相对较窄,生态不如LangChain。 | 社区和生态系统相对较小,不如LangChain灵活。 | 所有复杂逻辑(如RAG、Agents)都需要手动实现,工作量巨大。 |
集成DeepSeek的实战例子
光说不练假把式!我们来构建一个简单的 "文档问答" 应用,它将读取一段文本,并能根据文本内容回答你的问题。
第一步:环境准备
首先,确保你安装了必要的库。
bash
pip install langchain langchain_community langchain-deepseek faiss-cpu sentence_transformers
langchain
,langchain_community
: LangChain 核心库和社区库。langchain-deepseek
: DeepSeek 相关的 SDK。faiss-cpu
: 一个高效的向量检索引擎(cpu
版对普通电脑友好)。sentence_transformers
是一个基于 PyTorch 和 Hugging Face Transformers 的 Python 库,专注于将句子、段落或文本转换为向量表示(嵌入)
第二步:设置你的 API Key
你需要从 DeepSeek 官网获取你的 API Key,并将其设置为环境变量。这是最安全、最推荐的做法。
bash
# 临时设置环境变量
export DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
第三步:编写你的第一个 LangChain 应用
下面的代码将实现一个完整的 RAG 流程:
加载文本 -> 文本切分 -> 创建向量索引 -> 提问 -> 检索 -> 生成答案
python
import os
from langchain_deepseek.chat_models import ChatDeepSeek
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
# --- 1. 准备你的知识库 ---
# 假设这是你的一份内部文档内容
knowledge_text = """
当"运动无限"的激情遇上"气象万千"的成都,一场属于世界的体育盛宴即将到来。
作为2025年第12届世界运动会的官方移动应用,"世运通"(Chengdu2025)于近日全新上线,这座城市的热情与世运赛事的精彩,都将浓缩在这一方小小的屏幕里,为全球用户铺就一条通往成都世运会的便捷之路。
作为赛会官方移动服务应用平台,世运通以运动员为中心、以赛事为核心,为赛会的组织和运行提供一体化移动整合服务,集成了**门票预订、新闻资讯、世运指南**等20余项功能。
"""
# --- 2. 文本处理与向量化 ---
# a. 切分文本
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
texts = text_splitter.split_text(knowledge_text)
# b. 初始化 DeepSeek 的 Embeddings 模型,提示模型不存在时使用一下命令安装:
# pip install huggingface-hub
# huggingface-cli download sentence-transformers/all-MiniLM-L6-v2 --local-dir ./weight/all-MiniLM-L6-v2
# 也可以直接使用该链接下载后将其拷贝到 weight 目录 https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2
embeddings = HuggingFaceEmbeddings(model_name="./weight/all-MiniLM-L6-v2")
# c. 创建向量数据库 (FAISS)
# 这会把文本块转换成向量并存入索引,以便快速检索
docsearch = FAISS.from_texts(texts, embeddings)
# --- 3. 初始化 DeepSeek LLM ---
llm = ChatDeepSeek(model="deepseek-chat")
# --- 4. 创建 RetrievalQA 链 ---
# 这是 LangChain 内置的标准问答链
# 它会自动处理 "检索->提问" 的整个流程
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff", # "stuff" 是最简单的链类型,会把所有检索到的文本塞给模型
retriever=docsearch.as_retriever() # 使用我们创建的向量数据库作为检索器
)
# --- 5. 开始提问! ---
query1 = "成都世运会用什么APP好?"
result1 = qa_chain.invoke({"query": query1})
print(f"问题: {query1}")
print(f"答案: {result1['result']}\n")
运行结果如下:
txt
问题: 成都世运会用什么APP好?
答案: 推荐使用"世运通"(Chengdu2025)APP,这是2025年第12届成都世界运动会的官方移动应用。它集成了门票预订、新闻资讯、赛事指南等20余项功能,是获取赛事信息和服务的权威平台。
看!即使模型在训练时不知道这些信息,但通过我们提供的 knowledge_text
,它也能准确地回答问题了!这就是 LangChain + RAG 的魔力。
总结
LangChain 毫无疑问是当前LLM应用开发领域的"头号玩家"。它通过强大的抽象和丰富的功能,极大地降低了开发门槛,让开发者能更专注于应用的创意和逻辑,而不是繁琐的底层实现。
虽然它有一定的学习曲线,但一旦你掌握了它的核心思想,就仿佛拥有了开启AI应用新世界大门的钥匙。
希望今天这篇文章能成为你 LangChain 之旅的坚实起点。不要犹豫,现在就动手,结合 DeepSeek 的强大模型能力,去创造属于你自己的 AI 应用吧!