中文文档目录
操作指南
这里您可以找到针对“我该如何……?”类型问题的答案。
这些指南以目标导向和具体为主;它们的目的是帮助您完成特定任务。
有关概念性解释,请查看概念性指南。
有关端到端的演示,请查看教程。
有关每个类和函数的全面描述,请查看API参考。
安装
- 如何安装LangChain包
- 如何将 LangChain 与不同的 Pydantic 版本一起使用
核心特性
这突出显示了使用LangChain的核心功能。
- 如何从模型返回结构化数据
- 如何使用模型调用工具
- 如何流式传输可运行的程序
- 如何调试您的LLM应用
LangChain表达式语言 (LCEL)
LangChain表达式语言是一种创建任意自定义链的方法。它建立在可运行协议之上。
LCEL备忘单:快速概览如何使用主要LCEL原语。
- 如何链接可运行的程序
- 如何流式传输可运行的程序
- 如何并行调用可运行的程序
- 如何向可运行的程序添加默认调用参数
- 如何将任何函数转换为可运行的程序
- 如何将输入从一个链步骤传递到下一个
- 如何在运行时配置可运行的行为
- 如何向链添加消息历史(记忆)功能
- 如何在子链之间进行路由
- 如何创建动态(自构建)链
- 如何检查可运行的程序
- 如何向可运行的程序添加备用选项
组件
这些是构建应用程序时可以使用的核心构建块。
提示模板
提示模板负责将用户输入格式化为可以传递给语言模型的格式。
- 如何使用少量示例
- 如何在聊天模型中使用少量示例
- 如何部分格式化提示模板
- 如何组合提示
示例选择器
示例选择器负责选择传递给提示的正确少量示例。
- 如何使用示例选择器
- 如何按长度选择示例
- 如何按语义相似性选择示例
- 如何按语义n-gram重叠选择示例
- 如何按最大边际相关性选择示例
聊天模型
聊天模型是较新形式的语言模型,它们接收消息并输出消息。
- 如何进行功能/工具调用
- 如何让模型返回结构化输出
- 如何缓存模型响应
- 如何获取日志概率
- 如何创建自定义聊天模型类
- 如何流式传输响应
- 如何跟踪令牌使用情况
- 如何跨提供商跟踪响应元数据
- 如何让您的最终用户选择他们的模型
LLMs
LangChain所称的LLMs是较旧形式的语言模型,它们接收一个字符串并输出一个字符串。
- 如何缓存模型响应
- 如何创建自定义LLM类
- 如何流式传输响应
- 如何跟踪令牌使用情况
- 如何使用本地LLMs
输出解析器
输出解析器负责将LLM的输出解析为更结构化的格式。
- 如何使用输出解析器将LLM响应解析为结构化格式
- 如何解析JSON输出
- 如何解析XML输出
- 如何解析YAML输出
- 如何在输出解析错误时重试
- 如何尝试修正输出解析中的错误
- 如何编写自定义输出解析器类
文档加载器
文档加载器负责从各种来源加载文档。
- 如何加载CSV数据
- 如何从目录加载数据
- 如何加载HTML数据
- 如何加载JSON数据
- 如何加载Markdown数据
- 如何加载Microsoft Office数据
- 如何加载PDF文件
- 如何编写自定义文档加载器
文本分割器
文本分割器将文档分割成可用于检索的块。
- 如何递归分割文本
- 如何按HTML标题分割
- 如何按HTML部分分割
- 如何按字符分割
- 如何分割代码
- 如何按标题分割Markdown
- 如何递归分割JSON
- 如何按语义块分割文本
- 如何按令牌分割
嵌入模型
嵌入模型接收一段文本并为其创建数值表示。
- 如何嵌入文本数据
- 如何缓存嵌入结果
向量存储
向量存储是可以高效存储和检索嵌入的数据库。
- 如何使用向量存储检索数据
检索器
检索器负责接收查询并返回相关文档。
- 如何使用向量存储检索数据
- 如何为检索数据生成多个查询
- 如何使用上下文压缩压缩检索的数据
- 如何编写自定义检索器类
- 如何在检索器结果中添加相似性分数
- 如何合并多个检索器的结果
- 如何重新排序检索结果以减轻“迷失在中间”的效果
- 如何为每个文档生成多个嵌入
- 如何为块检索整个文档
- 如何生成元数据过滤器
- 如何创建时间加权检索器
- 如何使用混合向量和关键词检索
索引
索引是使您的向量存储与底层数据源保持同步的过程。
- 如何重新索引数据以使您的向量存储与底层数据源保持同步
工具
LangChain工具包含工具的描述(传递给语言模型)以及调用函数的实现。
- 如何创建自定义工具
- 如何使用内置工具和内置工具包
- 如何使用聊天模型调用工具
- 如何为LLMs和聊天模型添加临时工具调用能力
- 如何将运行时值传递给工具
- 如何将人工干预添加到工具使用中
- 如何在调用工具时处理错误
多模态
- 如何直接将多模态数据传递给模型
- 如何使用多模态提示
代理
注意
有关代理的深入如何操作指南,请查看LangGraph文档。
- 如何使用旧版LangChain代理(AgentExecutor)
- 如何从旧版LangChain代理迁移到LangGraph
回调
回调允许您钩入LLM应用执行的各个阶段。
- 如何在运行时传递回调
- 如何将回调附加到模块
- 如何将回调传递到模块构造函数
- 如何创建自定义回调处理器
- 如何在异步环境中使用回调
自定义
所有LangChain组件都可以轻松扩展以支持您自己的版本。
- 如何创建自定义聊天模型类
- 如何创建自定义LLM类
- 如何编写自定义检索器类
- 如何编写自定义文档加载器
- 如何编写自定义输出解析器类
- 如何创建自定义回调处理器
- 如何定义自定义工具
用例
这些指南涵盖了特定用例的详细信息。
使用RAG的Q&A
检索增强生成(RAG)是一种将LLMs连接到外部数据源的方法。
有关RAG的高级教程,请查看此指南。
- 如何添加聊天历史
- 如何流式传输
- 如何返回来源
- 如何返回引用
- 如何进行每个用户的检索
提取
提取是使用LLM从非结构化文本中提取结构化信息的过程。
有关提取的高级教程,请查看此指南。
- 如何使用参考示例
- 如何处理长文本
- 如何在不使用功能调用的情况下进行提取
聊天机器人
聊天机器人涉及使用LLM进行对话。
有关构建聊天机器人的高级教程,请查看此指南。
- 如何管理记忆
- 如何进行检索
- 如何使用工具
查询分析
查询分析是使用LLM生成要发送到检索器的查询的任务。
有关查询分析的高级教程,请查看此指南。
- 如何在提示中添加示例
- 如何处理未生成查询的情况
- 如何处理多个查询
- 如何处理多个检索器
- 如何构建过滤器
- 如何处理高基数分类变量
SQL + CSV上的Q&A
您可以使用LLM在表格数据上进行问答。
有关高级教程,请查看此指南。
- 如何使用提示改善结果
- 如何进行查询验证
- 如何处理大型数据库
- 如何处理CSV文件
图形数据库上的Q&A
您可以使用LLM在图形数据库上进行问答。
有关高级教程,请查看此指南。
- 如何将值映射到数据库
- 如何在数据库上添加语义层
- 如何通过提示改善结果
- 如何构建知识图谱
LangGraph
LangGraph是LangChain的扩展,旨在通过将步骤建模为图中的边和节点,构建健壮且有状态的多参与者应用程序。
LangGraph文档目前托管在另一个网站上。
您可以在这里浏览LangGraph如何操作指南。
LangSmith
LangSmith允许您密切跟踪、监控和评估您的LLM应用。
它与LangChain无缝集成,您可以使用它来检查和调试构建链时的