mini_lm/LANGCHAIN_LEARN.md

5.3 KiB
Raw Blame History

LangChain + Ollama 零基础学习指南

本地运行、完全免费的 LLM 应用开发学习

环境准备

1. 安装 Ollama

# macOS
brew install ollama

# 或下载: https://ollama.ai/download

2. 下载模型

# 启动服务
ollama serve

# 下载推荐模型(新终端)
ollama pull qwen2.5:7b           # 主力模型,中文强
ollama pull bge-m3               # Embedding 模型,中文效果好

# 可选模型
ollama pull llama3.2:3b          # 轻量级
ollama pull codellama:7b         # 代码专用

3. 安装 Python 依赖

cd /Users/kazusa/llm/mini_lm
python -m venv venv
source venv/bin/activate

pip install langchain langchain-ollama langchain-community faiss-cpu python-dotenv pydantic

学习路线图

📅 Week 1: 基础篇
├── Day 1: LLM 调用 + Prompt Template + Output Parser + Chain 基础
├── Day 2: LCEL 表达式语言深入
├── Day 3: Memory记忆管理
└── Day 4: 综合练习

📅 Week 2: 核心篇
├── Day 5: Tool工具定义与调用
├── Day 6: RAG 基础(向量化 + 检索)
├── Day 7: RAG 进阶(文档加载 + 分割策略)
└── Day 8: 综合练习

📅 Week 3: Agent 篇 ⭐
├── Day 9:  Agent 基础(工具调用 Agent
├── Day 10: ReAct Agent推理+行动循环)
├── Day 11: 自定义 Agent
└── Day 12: 综合练习

📅 Week 4: 实战篇
├── Day 13: 项目1 - 智能文档问答助手
├── Day 14: 项目2 - 代码审查助手
└── Day 15: 部署与优化

课程目录

Day 1: 基础入门

文件 主题 核心概念
src/day1/01_hello_llm.py 第一次调用 ChatOllama、invoke
src/day1/02_prompt_template.py 提示词模板 ChatPromptTemplate、变量替换
src/day1/03_output_parser.py 输出解析 StrOutputParser、JsonOutputParser
src/day1/04_chain_basics.py 链式调用 LCEL、管道符 `
src/day1/05_practice.py 综合练习 组合运用

Day 2: LCEL 深入 今日学习

文件 主题 核心概念
src/day2/01_lcel_basics.py LCEL 语法 RunnableSequence
src/day2/02_parallel.py 并行执行 RunnableParallel
src/day2/03_passthrough.py 数据透传 RunnablePassthrough
src/day2/04_branch.py 条件分支 RunnableBranch

Day 3: Memory 记忆

文件 主题 核心概念
src/day3/01_chat_history.py 对话历史 InMemoryChatMessageHistory
src/day3/02_memory_chain.py 记忆链 RunnableWithMessageHistory
src/day3/03_window_memory.py 窗口记忆 限制历史长度

Day 5: Tool 工具

文件 主题 核心概念
src/day5/01_tool_basics.py 工具定义 @tool 装饰器
src/day5/02_bind_tools.py 绑定工具 bind_tools
src/day5/03_tool_execution.py 执行工具 ToolMessage

Day 6-7: RAG 检索增强

文件 主题 核心概念
src/day6/01_embeddings.py 向量化 OllamaEmbeddings
src/day6/02_vectorstore.py 向量存储 FAISS
src/day6/03_retriever.py 检索器 as_retriever
src/day6/04_rag_chain.py RAG 链 完整 RAG 流程
src/day7/01_doc_loaders.py 文档加载 TextLoader、DirectoryLoader
src/day7/02_text_splitter.py 文本分割 RecursiveCharacterTextSplitter

Day 9-11: Agent 智能体

文件 主题 核心概念
src/day9/01_agent_basics.py Agent 基础 create_tool_calling_agent
src/day9/02_agent_executor.py 执行器 AgentExecutor
src/day10/01_react_agent.py ReAct 推理-行动循环
src/day11/01_custom_agent.py 自定义 Agent 完全控制 Agent 行为

Day 13-14: 实战项目

文件 项目 功能
src/projects/doc_qa_assistant.py 文档问答助手 RAG + Memory
src/projects/code_reviewer.py 代码审查助手 Tool + Agent

核心概念速查

LCELLangChain Expression Language

# 管道符 | 连接组件
chain = prompt | llm | parser

# 等价于
chain = RunnableSequence(prompt, llm, parser)

组件类型

组件 输入 输出 作用
Prompt dict Messages 构建提示词
LLM Messages AIMessage 生成回复
Parser AIMessage str/dict 解析输出
Retriever str Documents 检索文档
Tool dict str 执行操作

运行说明

# 确保 Ollama 服务运行
ollama serve

# 激活虚拟环境
source venv/bin/activate

# 运行课程文件
python src/day1/01_hello_llm.py

模型推荐

场景 模型 命令
日常学习 qwen2.5:7b ollama pull qwen2.5:7b
低配机器 qwen2.5:3b ollama pull qwen2.5:3b
RAG Embedding bge-m3 ollama pull bge-m3
代码任务 codellama:7b ollama pull codellama:7b

学习建议

  1. 动手为主:每个文件都要运行,修改参数观察变化
  2. 循序渐进:按 Day 顺序学习,不要跳跃
  3. 做好笔记:在代码注释中记录你的理解
  4. 综合练习:每个阶段结束后完成 practice 文件