AI知识公开课
FAISS与ChromaDB对比
sentence-transformers是什么?
WSL是什么?
CodeBuddy是什么?
本地RAG框架介绍
LlamaIndex是什么?
LangChain是什么?
FAISS和纯内存储存的对比
本地化RAG向量知识库怎么用?
KnowledgeClient是什么?
未来鸟:企业数字化转型奔腾的力量!
-
+
首页
LangChain是什么?
LangChain 是一个**用于构建基于大语言模型(LLM)的应用程序的开发框架**,核心目标是简化 LLM 与外部数据源、工具或流程的整合,让开发者能快速搭建更智能、更实用的 AI 应用。 ### 一、LangChain 的核心定位 它不是 LLM 本身(比如不直接提供 GPT-4、Claude 等模型),而是**连接 LLM 与真实世界需求的“胶水层”**——解决 LLM 原生能力的局限(如无法访问实时数据、难以处理长流程任务、缺乏工具调用能力等),让 LLM 从“聊天机器人”升级为“能解决实际问题的智能系统”。 ### 二、LangChain 要解决的核心问题 LLM 虽然强大,但单独使用时存在明显短板: 1. **知识截止**:训练数据有固定时间点(比如 GPT-3.5 截止到 2021 年 9 月),无法回答之后的实时信息; 2. **无状态性**:默认不记得对话上下文(需手动管理历史); 3. **缺乏工具能力**:无法直接查询数据库、调用 API、操作文件或执行代码; 4. **长流程任务**:复杂任务(如写报告→查资料→翻译→排版)需要拆解成多步,LLM 难以自主串联; 5. **数据格式适配**:不同来源的数据(PDF、网页、数据库)格式各异,LLM 难以直接理解。 LangChain 通过模块化设计,逐一解决这些问题。 ### 三、LangChain 的核心组件 LangChain 的功能围绕**“链(Chains)”“代理(Agents)”“记忆(Memory)”“索引(Indexes)”**四大核心模块展开: #### 1\. 链(Chains):串联任务的“工作流引擎” 将多个 LLM 调用、工具调用或数据处理步骤**按顺序串联**,形成可复用的任务流程。 * 示例: * `LLMChain`:最基础的链,输入提示词→调用 LLM→输出结果; * `SequentialChain`:按顺序执行多个链(如先总结文章,再翻译总结); * `RouterChain`:根据输入内容自动选择不同的子链(如用户问“天气”则走天气查询链,问“新闻”则走新闻链)。 #### 2\. 代理(Agents):让 LLM “自主选择工具” 给 LLM 赋予“决策能力”——LLM 可以根据当前任务,**动态决定调用哪个工具**(如搜索、查数据库、计算),并根据工具结果调整下一步行动。 * 核心逻辑:Agent = LLM + 工具集 + 决策机制(如 ReAct 框架:思考→行动→观察→再思考); * 示例:用户问“2024 年诺贝尔物理学奖得主是谁?” → Agent 会调用“搜索引擎”工具获取实时结果,再整理后回复。 #### 3\. 记忆(Memory):让 LLM “记住上下文” 解决 LLM 无状态的问题,存储对话历史或任务上下文,让 LLM 在多轮交互中保持连贯。 * 类型: * `ConversationBufferMemory`:缓存完整对话历史; * `ConversationSummaryMemory`:只缓存对话摘要(节省 token); * `EntityMemory`:专门记忆对话中的实体(如人名、地点)。 #### 4\. 索引(Indexes):让 LLM “读懂外部数据” 将非结构化/结构化数据(文档、网页、数据库)处理成 LLM 能理解的格式,并支持高效检索。 * 核心流程:**加载(Load)→转换(Transform)→嵌入(Embed)→存储(Store)→检索(Retrieve)**; * 关键组件: * `Document Loaders`:加载多源数据(如 PDFLoader、WebBaseLoader); * `Text Splitters`:将长文本拆分成适合 LLM 处理的 chunk(如按段落、token 数拆分); * `Vector Stores`:将文本 chunk 转化为向量(Embedding)并存储,支持语义检索(如 FAISS、Pinecone、Chroma); * `Retrievers`:根据用户问题检索最相关的文本 chunk(如 VectorDBRetriever)。 * 典型应用:**检索增强生成(RAG)**——先从外部数据中检索相关信息,再将信息注入提示词让 LLM 生成答案(解决 LLM 知识截止问题)。 ### 四、LangChain 的典型应用场景 LangChain 几乎覆盖所有需要 LLM 结合外部能力的场景: 1. **问答系统**:基于企业文档/知识库的 RAG 问答(如内部手册查询、产品 FAQ); 2. **智能助手**:能调用工具的助手(如订机票、查快递、写代码并执行); 3. **文档处理**:自动总结 PDF/网页、提取合同关键信息、多语言翻译+排版; 4. **数据分析**:连接数据库,让 LLM 自动生成 SQL 查询并可视化结果; 5. **代码助手**:调用代码执行工具,实现“写代码→运行→调试”闭环; 6. **自动化流程**:如“监控新闻→提取事件→生成简报→发送邮件”的全自动任务。 ### 五、LangChain 的优势与特点 1. **模块化与灵活性**:各组件可独立使用或组合,支持自定义扩展(如自定义工具、链); 2. **生态丰富**:支持几乎所有主流 LLM(OpenAI、Anthropic、Hugging Face)、工具(SerpAPI、Wolfram Alpha)、向量库和数据库; 3. **快速迭代**:社区活跃,紧跟 LLM 技术趋势(如支持 Function Calling、多模态模型); 4. **降低开发成本**:无需重复造轮子,专注业务逻辑而非底层整合。 ### 六、简单示例:用 LangChain 实现一个 RAG 问答 假设要做一个“基于本地 PDF 文档的问答系统”: ``` # 1. 安装依赖:pip install langchain openai faiss-cpu pypdf from langchain.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings.openai import OpenAIEmbeddings from langchain.vectorstores import FAISS from langchain.chains import RetrievalQA from langchain.llms import OpenAI # 2. 加载 PDF 文档 loader = PyPDFLoader("example.pdf") documents = loader.load() # 3. 拆分文本 text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200) docs = text_splitter.split_documents(documents) # 4. 生成向量并存储到 FAISS embeddings = OpenAIEmbeddings() db = FAISS.from_documents(docs, embeddings) # 5. 创建检索式 QA 链 qa_chain = RetrievalQA.from_chain_type( llm=OpenAI(temperature=0), chain_type="stuff", # 将所有检索到的文档“塞进”提示词 retriever=db.as_retriever() ) # 6. 提问 query = "文档中提到的核心观点是什么?" result = qa_chain.run(query) print(result) ``` ### 七、总结 LangChain 不是“替代 LLM”,而是**让 LLM 真正落地的“脚手架”**。它降低了构建 LLM 应用的门槛,让开发者无需关注底层整合细节,只需聚焦业务需求,快速搭建出比单纯聊天机器人更强大的智能应用。 目前 LangChain 已成为 LLM 应用开发的主流框架之一,广泛应用于企业服务、科研、个人工具等领域。
未来鸟
2026年2月13日 00:18
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
分享
链接
类型
密码
更新密码
有效期
Markdown文件
Word文件
PDF文档
PDF文档(打印)
AI