大模型学习·第40天:LangChain框架入门——从RAG原理到模型调用的统一接口

一、LangChain是什么?

LangChain 是一个 LLM 应用开发框架,核心理念是为各种大模型实现通用接口,把相关组件"链接"在一起,简化开发难度。

LangChain 不开发大模型,而是大模型的"连接器"。

功能 说明
Prompts 优化提示词
Models 调用各类模型(云端+本地)
History 管理会话历史记录
Indexes 管理和分析文档
Chains 构建功能的执行链条
Agent 构建智能体
bash 复制代码
pip install langchain langchain-community langchain-ollama dashscope chromadb -i https://pypi.tuna.tsinghua.edu.cn/simple

二、RAG(检索增强生成)

RAG = 检索技术 + LLM提示,为大模型提供从特定数据源检索到的信息,修正和补充生成的答案。

为什么需要RAG?

  • 大模型知识不是实时的,训练好后不具备自动更新能力
  • 大模型缺乏领域知识,无法覆盖高度专业化的内容
  • 存在幻觉问题,会生成看似合理但实际错误的信息
  • 数据安全性问题

RAG标准流程:

阶段 作用
索引 加载文档 → 文本分割成chunk → 向量化 → 存入向量数据库
检索 用户query向量化 → 在向量库中匹配相似文本
生成 匹配文本作为上下文 + 问题 → 提交给LLM生成答案

RAG核心价值:解决知识时效性问题,降低模型幻觉,无需重新训练模型。

三、向量

向量就是文本的"数学身份证"------把文字语义转成一串固定长度的数字,让计算机能"看懂"文字并做相似度计算。

  • 文本嵌入模型(如 text-embedding-v1)将文本映射为固定长度的数字序列
  • 余弦相似度衡量两个向量方向是否一致,夹角越小越相似
  • 向量维度越多,语义匹配越精准,但计算压力也越大。1536维是比较好的选择

四、LangChain 模型调用

LLMs(大语言模型):

python 复制代码
# 阿里云千问
from langchain_community.llms.tongyi import Tongyi
llm = Tongyi(model='qwen-max')
res = llm.invoke("帮我讲个笑话吧")

# Ollama本地模型
from langchain_ollama import OllamaLLM
model = OllamaLLM(model='qwen3:4b')
for chunk in model.stream("帮我讲个笑话吧"):
    print(chunk, end="", flush=True)

聊天模型(对话场景):

python 复制代码
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.messages import HumanMessage, AIMessage, SystemMessage

chat = ChatTongyi(model="qwen3-max")
messages = [
    SystemMessage(content="你是一个边塞诗人"),
    HumanMessage(content="写一首唐诗"),
]
for chunk in chat.stream(input=messages):
    print(chunk.content, end="", flush=True)

消息类型 :SystemMessage(角色设定)、HumanMessage(用户输入)、AIMessage(AI回答)。简写形式用二元元组 ("system", "内容") 支持变量占位,运行时动态填充。

嵌入模型(文本向量化):

python 复制代码
from langchain_community.embeddings import DashScopeEmbeddings
model = DashScopeEmbeddings()
model.embed_query("我喜欢你")      # 单次转换
model.embed_documents(['a', 'b'])  # 批量转换

五、LangChain模型API速查表

方式 LLMs 聊天模型 嵌入模型
阿里云千问 from langchain_community.llms.tongyi import Tongyi from langchain_community.chat_models.tongyi import ChatTongyi from langchain_community.embeddings import DashScopeEmbeddings
Ollama本地 from langchain_ollama import OllamaLLM from langchain_ollama import ChatOllama from langchain_ollama import OllamaEmbeddings
调用方法 invoke(批量) / stream(流式) 同上 embed_query(单次) / embed_documents(批量)

六、提示词模板

python 复制代码
from langchain_core.prompts import PromptTemplate

prompt_template = PromptTemplate.from_template(
    "我的邻居姓{lastname},刚生了{gender},你帮我起个名字"
)
prompt_text = prompt_template.format(lastname="张", gender="女儿")

使用 Template 模板在大型工程中更容易做标准化管理,且支持 LangChain 框架的链式调用(Runnable接口)。后续还会学习 FewShotPromptTemplate 和 ChatPromptTemplate。

今日核心总结

  1. LangChain:LLM应用开发框架,把模型、提示词、记忆、检索等组件"链接"在一起
  2. RAG = 检索 + LLM提示:解决大模型知识滞后和幻觉问题,三步走:索引→检索→生成
  3. 向量是文本的数学身份证:把语义转成数字序列,用余弦相似度做语义匹配
  4. 三类模型API:LLMs(文本生成)、聊天模型(对话)、嵌入模型(文本向量化)
  5. PromptTemplate:提示词模板化,支持变量注入和链式调用
相关推荐
励志不掉头发的内向程序员2 小时前
【从零写一个CAD 03】三个 double 值得单独一个类吗:把视图变换抽成 View
开发语言·c++·qt·学习·系统架构
梦想不只是梦与想2 小时前
LangGraph控制流:条件边、循环与并行(二)
langchain·大模型·边
m4Rk_8 小时前
【论文阅读】Agent 记忆机制(83):Inside Out——用可演化 PersonaTree 构建 Agent 的核心长期记忆
论文阅读·人工智能·学习·开源·github
Maiko Star9 小时前
* LangChain 提示词模板详解:ChatPromptTemplate 的使用与高级特性
java·人工智能·langchain
鬓戈9 小时前
Rust 语言与 AI 应用生态调研及学习路径
人工智能·学习·rust
传奇开心果编程9 小时前
【SwiftUI娓娓道来】第3课:让界面活起来——交互与动画指南
学习·macos·ui·ios·swiftui·swift
xian_wwq9 小时前
【学习笔记】等保合规安全基线核查实战
笔记·学习
传奇开心果编程10 小时前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
yangmu320310 小时前
发动机是怎么把油变成动力的:四冲程内燃机原理拆解
学习
m4Rk_10 小时前
【论文阅读】Agent 记忆机制(81):EMR——用情景记忆避免 Agent 在多步推理中反复绕圈
论文阅读·人工智能·学习·开源·github