RETRIEVAL-AUGMENTED GENERATION · 06
理解 Chain 在 RAG 中的作用,并掌握字符串、JSON 与 Pydantic 输出解析。
- Chain
- OutputParser
- Pydantic
本文目录
Chain 与 OutputParser
20.1 Chain 的作用
Chain 不是模型。
它负责:
将多个组件按照数据流连接起来。
例如:
chain = prompt | llm
表示:
Prompt输出
↓
LLM输入
20.2 RAG 中 Chain 的作用
未来 RAG:
用户问题
↓
Retriever
↓
Prompt
↓
LLM
↓
OutputParser
↓
答案
本质也是一条 Chain。
二十一、OutputParser
21.1 为什么需要 OutputParser?
模型返回内容:
- 格式不稳定
- 可能包含多余解释
- 不一定符合程序要求
OutputParser 负责:
模型输出
↓
业务需要的数据格式
二十二、三种常见 OutputParser
22.1 StrOutputParser
作用:
AIMessage
↓
str
代码:
parser = StrOutputParser()
chain = prompt | llm | parser
最终:
result = "模型回答文本"
22.2 JsonOutputParser
作用:
AIMessage
↓
dict
适合:
- 意图识别
- 信息抽取
- 工作流控制
22.3 PydanticOutputParser
作用:
AIMessage
↓
Pydantic对象
定义数据结构:
from pydantic import BaseModel
class User(BaseModel):
name:str
age:int
创建:
parser = PydanticOutputParser(
pydantic_object=User
)
表示:
输出必须符合 User 格式。
22.4 JsonOutputParser 与 PydanticOutputParser 区别
Json:
保证是JSON
Pydantic:
保证字段存在
+
保证字段类型
+
生成强类型对象
企业项目更推荐严格结构化输出时使用 Pydantic。