大模型学习·第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:提示词模板化,支持变量注入和链式调用
相关推荐
小黄蚁1 小时前
FreeRTOS学习笔记(十二)
笔记·学习
Nebula_g2 小时前
Java实现本地Socket通信(三)
java·开发语言·学习·socket·可视化
茯苓gao2 小时前
嵌入式开发笔记:电机参数辨识与自学习完全指南——从电气参数到机械特性的深度解析
笔记·嵌入式硬件·学习
笨鸟先飞的橘猫2 小时前
游戏后端分布式学习——消息队列在游戏的用法
分布式·学习·游戏
优化Henry2 小时前
学习笔记之VoNR语音业务注册流程
网络·笔记·学习·5g·信息与通信
m4Rk_4 小时前
【论文阅读】Agent 记忆机制(22):FluxMem——根据对话结构动态选择记忆组织方式
论文阅读·人工智能·学习
BraveWang4 小时前
【LangChain 1.x】14、补充|Runtime 运行时与上下文工程
langchain
天国梦5 小时前
英语词汇学习软件深度测评:天学网等三款APP实测对比与选型指南
学习
meilindehuzi_a5 小时前
Node.js + LangChain.js + Milvus 实战:从 EPUB 入库到《天龙八部》RAG 问答系统
javascript·langchain·node.js