大模型学习·第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:提示词模板化,支持变量注入和链式调用
相关推荐
lhh_qrsly6 小时前
HTTP / HTTPS / MQTT / MQTTs(嵌入式学习版)
学习·http·https
xier_ran1 天前
【infra之路】AI 编译器学习笔记(十三):AI 编译器全景——TVM、XLA、IREE 与其他
人工智能·笔记·学习
连山齐名1 天前
ai应用开发的学习笔记
服务器·笔记·学习
xier_ran1 天前
【infra之路】AI 编译器学习笔记(十四):为什么要 tiling,以及矩阵计算单元的“固定“
人工智能·笔记·学习
燕落南枝1 天前
HTML 学习:辅助标签 label 与字符实体
前端·学习·html
hackchen1 天前
LangChain 学习第 3 课 - 输出解析器(Output Parser)
数据库·学习·langchain
LMT流氓兔1 天前
第四单元——第17课:让回答边生成、边显示
服务器·数据库·人工智能·python·oracle·langchain
wangguanghou11 天前
【学习成长】深入解析721学习成长模型:70-20-10法则的实践指南与避坑手册
学习
其实防守也摸鱼1 天前
Linux文本处理命令理论学习
linux·服务器·前端·数据库·sql·学习·安全
dadaobusi1 天前
学习: Triton
学习