Summarization 文本摘要
假设您有一组文档(PDF、概念页面、客户问题等)并且您想要总结内容。
RAG 核心流程步骤
过程:
1. 下载页面内容(如果文件打的话,就进行分块处理)
2. 构建 自定义prompt + 初始化 LLM
3. 通过构建 prompt + llm + chain_type 构建新的 chain
4. 通过run的方式,获取最终的摘要结果
# 最终可以选择输出的3种模式
- 1.Stuff 只需将所有文档“塞入”一个提示中即可。这是最简单的方法
- chain_type="stuff" 有的全局概要的感觉
- 2.Map-Reduce
- map - 对分割的文件快,进行 文本摘要
- reduce - 将每个map生成的摘要 合并为一个全局摘要
chain_type="map_reduce" 有点全面分析总结的感觉
- 3.Refine: 类似 Map-Reduce功能
- 细化文档链通过循环输入文档并迭代更新其答案来构建响应。
- 对于每个文档,它将所有非文档输入、当前文档和最新的中间答案传递给 LLM 链以获得新答案。
- chain_type="refine" 有点类似精度的感觉
需要对分割后的数据进行向量化,并存储
- 文本相似度检索内容 retriever.invoke
- 4.Chain stuff_chain 需要由 prompt + llm 构建
- 基于内容检索内容,做总结回答 rag_chain.invoke
Prompt 可以自定义:PromptTemplate
LLM 可以自定义不同的接口平台:OpenAI、Ollama(Facebook AI 团队)、ChatAnthropic(Anthropic 公司)、ChatCohere(Cohere Technologies 公司)
rag_chain 可以加入 history 上下文记忆,并且还支持 多回话。
回答,可以流式输出: rag_chain.stream