一、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。
今日核心总结
- LangChain:LLM应用开发框架,把模型、提示词、记忆、检索等组件"链接"在一起
- RAG = 检索 + LLM提示:解决大模型知识滞后和幻觉问题,三步走:索引→检索→生成
- 向量是文本的数学身份证:把语义转成数字序列,用余弦相似度做语义匹配
- 三类模型API:LLMs(文本生成)、聊天模型(对话)、嵌入模型(文本向量化)
- PromptTemplate:提示词模板化,支持变量注入和链式调用