回调的基本概念:
在llm应用执行的每个阶段,比如日志记录、监控、流处理等
回调处理器是实现了callbackhandler接口的对象,每个可以订阅的事件都有一个方法,当事件被触发时,CallbackManager会在每个处理器上调用相应的方法
在哪些地方定义回调函数:
构造函数时定义:llmchain=(callbacks=[handler])
发出请求时定义:llm.invoke(callbacks=…
构造函数中设置verbose为true,调用StdOutCallHandler
使用最简单回调123456789101112131415161718...
用以查询嵌入到向量数据库中的数据
MultiQueryRetriever请求拆分多索引:将问题拆分出不同的问答
Contextual compression上下文压缩:对每个文件块进行摘要,方便于定位
self-querying元数据过滤器:将请求过滤成请求+过滤器,进行查询
时间加权向量存储检索器:加上时间因素
请求拆分多索引MultiQueryRetriever通过请求拆分多索,生成多维度的查询输入,其本身是一种增强了的检索器,可以被RetrievalQAWithSourcesChain所引用
1234567891011121314151617181920212223242526...
维度
Chroma
FAISS
Milvus
类型
嵌入式向量数据库
向量检索库(非数据库)
分布式向量数据库
部署方式
轻量级,Python集成或独立服务
库形式集成,无独立服务
独立的数据库服务,支持集群
持久化
✅ 支持(本地/云)
❌ 不支持(需额外实现)
✅ 支持(内置)
扩展性
中等,支持简单扩展
低,单机为主
高,分布式架构
生产就绪
适合中小规模
研究/中小应用
企业级大规模
查询功能
基础向量检索+元数据过滤
高性能向量检索
向量+标量混合查询、复杂过滤
社区生态
较新但增长快
成熟,Meta维护
活跃,CNCF项...
文档转换器transformer文本切割、特征提取、问答转换、文档翻译、元数据标记器
文本分割这是最基本的将文本切割为不同的文档,可以选择使用换行符、逗号、句号等进行分割
1234567891011121314151617181920212223242526from langchain.text_splitter import CharacterTextSplittertext = """人工智能作为新一轮科技革命和产业变革的核心驱动力,正在对全球经济、社会发展和人类生活产生深刻影响。近年来,中国在人工智能领域取得了举世瞩目的成就,已成为全球人工智能发展的重...
为了llm应用获取外部数据,langchain提供了加载、转换、存储和查询数据的功能
文档加载器:加载不同来源的文档
文档转换器:拆分文档,将文档转换成问答格式、删除冗余文档
文本嵌入模型Embed:将非结构化文本转换为向量
向量存储:存储和搜索嵌入的数据
检索器:查询数据
文档加载器load
csv、html、json、pdf文档加载
加载同一目录下多文档
第三方数据源组件
加载csv文档csv是一种使用逗号来分隔值的文本文件
csv文件加载器允许定制csv解析和加载,可以通过csv_args参数来设置,比如设定分隔符、引用字符和字段名等(跟awk差不多
12345678910...
为什么需要输出解析器,因为调用大模型返回的内容并非给人看的,而是需要以特定的格式输出给其他的应用进行解析
解析器类型
输入示例
输出
适用场景
CommaSeparatedListOutputParser
“苹果,香蕉,橙子”
['苹果', '香蕉', '橙子']
简单列表提取
PydanticOutputParser
{"name": "苹果", "color": "红"}
Fruit(name='苹果', ...
在很多情况下,比如docker里跑GPU训练、处理任务,或者是用registry作为私有容器仓库,都很容易遇到爆炸的情况
毕竟docker默认情况下,是将数据存放在/var/lib下的,占根目录的空间
收到开发反馈说这个k8s节点经常遇到临时存储不够的情况
使用ncdu / --exclude /data --exclude /mnt 在排除挂载的空间之后扫描了一下根目录下的文件,结果删除了一堆log之后,ncdu显示只用了40G,实际上用了100多个G
123456789101112131415161718192021222324252627282930313233...
langchain本身不提供大模型,提供了llms工具与其他大语言模型进行交互
设置内存缓存12345678910111213141516171819202122232425262728293031from langchain_community.cache import InMemoryCacheimport langchainfrom langchain_deepseek import ChatDeepSeekfrom dotenv import load_dotenvimport timeload_dotenv()llm = ChatDeepSeek(model="dee...
prompt template 提示模板
example selectors 示例选择器
language models 语言模型应用
output parsers 输出解析器
prompt与template最简单的使用prompt template12345678910111213141516171819from langchain_deepseek import ChatDeepSeekfrom langchain.prompts import PromptTemplatefrom dotenv import load_dotenvload_dotenv()llm = ChatD...
langchain是一个框架,用以
集成大语言模型、其他数据源(文档、数据库、应用库等)
让不同来源的数据进行交互
支持链,一连串的动作
langchain的基础数据类型
texts 自然语言交互
chat messages 特定消息分类
system:提供背景信息,告诉AI需要做什么
human:用户信息
AI:AI给出的回应
documents 文本和元数据
examples 例子(代表了函数的输入以及预期输出
langchain的组件
模型-IO输入输出
数据连接
文档加载器:加载不同来源的文档
文档转换器:拆分文档,将文档转换为QA格式等
文本嵌入模型:将非结构化的文档...