大模型应用之(4):Langchain架构与大模型接入

发布于:2025-08-08 ⋅ 阅读:(668) ⋅ 点赞:(0)

背景

LangChain 是一个用于开发由大型语言模型(Large Language Model,LLM)驱动的应用程序的框架。

  • 旨在简化使用大型语言模型的应用程序。作为一个语言模型集成框架,LangChain 的用例与一般语言模型的用例有很大的重叠。 重叠范围包括文档分析和总结摘要, 代码分析和聊天机器人。

LangChain 为 LLM 及相关技术(如嵌入模型和向量存储)实现了标准接口,并与数百个 LLM 提供商集成。

Langchain架构

LangChain工具

  1. 组件:大模型包装器、聊天模型包装器、数据增强工具和接口链:

  2. 提供了标准接口,和数据平台和实际应用工具紧密集成


LangChain六大模块

模块

核心作用

关键能力

模型I/O

标准化LLM交互接口

• 统一多模型API调用
• 输入模板化
• 输出结构化解析

数据增强

提升输入数据质量

• 多源数据加载
• 文本预处理
• 检索增强生成(RAG)

构建可复用任务流程

• 原子操作组合
• 条件分支控制
• 循环执行

记忆

维护上下文状态

• 短期会话记忆
• 长期知识存储
• 实体记忆管理

Agent

动态决策与工具调度

• 工具自动选择
• 多步推理
• 自我修正

回调处理器

全链路监控与可观测性

• 事件日志记录
• 性能分析
• 调试追踪

Langchain 基础功能

LLM 调用

  • 支持多种模型接口,比如 OpenAI、Hugging Face、AzureOpenAI ...

  • Fake LLM,用于测试

  • 缓存的支持,比如 in-mem(内存)、SQLite、Redis、SQL

  • 用量记录

  • 支持流模式(就是一个字一个字的返回,类似打字效果)

Prompt管理,支持各种自定义模板

拥有大量的文档加载器,比如 Email、Markdown、PDF、Youtube ...

基础组件

Loader加载器

顾名思义,这个就是从指定源进行加载数据的。

比如:

  1. 文件夹 DirectoryLoader

  2. Azure 存储 AzureBlobStorageContainerLoader

  3. CSV文件 CSVLoader

  4. 印象笔记 EverNoteLoader

  5. Google网盘 GoogleDriveLoader

  6. 任意的网页 UnstructuredHTMLLoader

  7. PDF PyPDFLoader

  8. S3 S3DirectoryLoader/S3FileLoader

  9. Youtube YoutubeLoader

上面只是简单的进行列举了几个,官方提供了超级的多的加载器供你使用。

https://python.langchain.com/docs/modules/data_connection/document_loaders.html


Document文档

当使用loader加载器读取到数据源后,数据源需要转换成 Document 对象后,后续才能进行使用。

Text Spltters 文本分割

顾名思义,文本分割就是用来分割文本的。为什么需要分割文本?

因为我们每次不管是做把文本当作 prompt 发给 openaiapi ,还是还是使用 openai api embedding 功能都是有字符限制的。

比如我们将一份300页的 pdf 发给 openai api,让他进行总结,他肯定会报超过最大 Token 错。所以这里就需要使用文本分割器去分割我们 loader 进来的 Document。

Vectorstores 向量数据库

因为数据相关性搜索其实是向量运算。所以,不管我们是使用 openai api embedding 功能还是直接通过向量数据库直接查询,都需要将我们的加载进来的数据 Document 进行向量化,才能进行向量运算搜索。转换成向量也很简单,只需要我们把数据存储到对应的向量数据库中即可完成向量的转换。

官方也提供了很多的向量数据库供我们使用。

https://python.langchain.com/en/latest/modules/indexes/vectorstores.html


Chain 链

我们可以把 Chain 理解为任务。

一个 Chain 就是一个任务,当然也可以像链条一样,一个一个的执行多个链。

Agent 代理

我们可以简单的理解为他可以动态的帮我们选择和调用chain或者已有的工具。

Embedding

用于衡量文本的相关性。这个也是 OpenAI API 能实现构建自己知识库的关键所在。

他相比 fine-tuning 最大的优势就是,不用进行训练,并且可以实时添加新的内容,而不用加一次新的内容就训练一次,并且各方面成本要比 fine-tuning 低很多。

具体比较和选择可以参考这个视频:https://www.youtube.com/watch?v=9qq6HTr7Ocw

小结:

  1. 各模块采用松耦合设计,可通过标准化接口组合使用

  2. 实际应用中通常以链为核心组织工作流(如检索QA链=数据增强+模型I/O+记忆)

  3. 回调系统提供贯穿所有模块的可观测性能力

  4. Agent作为高级模块,可调用其他所有模块功能

大模型接入

接入示例

云服务和私有化大模型优劣对比

维度

开发成本

算力成本

运维成本

数据安全

云厂商大模型

较低,开箱即用

算力资源充足,大模型性能好&吞吐量较高

较低,提供云平台监控

安全性低

私有化大模型

较高,自建大模型网关、服务鉴权、可用性等

算力硬件投入成本高,大模型性能较差低&吞吐量较低

较高,需要专业运维团队介入

安全性高,保密性强

小结:

- 研发&测试环境:为了方便部署和测试,使用云服务

- 大客户生产环境:安全审核严格,大多数采用自建大模型的方式

总结

LangChain 是什么?

  • 一个极为流行的 Python AI 框架,用于构建 LLM 应用。

  • 有非常强的功能,但也有不少争议,尤其是在“抽象太多”方面。

你是否真的需要框架?

  • 如果只是简单调用 LLM API,五行代码就能搞定,也许不需要。

  • 但如果涉及到复杂流程(如 Agent、RAG等),没有框架实现成本会急剧上升。

LangChain 对新手的意义:

  • 对 AI 或 ML 没有背景的工程师(如后端、前端、DevOps),LangChain 是一个很好的入门途径。

  • 它通过“抽象”让你快速构建系统,再逐步引导你深入理解背后的逻辑。

拓展

  1. 中文教程:https://liaokong.gitbook.io/llm-kai-fa-jiao-cheng

  2. api参考文档:https://python.langchain.com/api_reference/