from langchain.chains.summarize import load_summarize_chain from langchain import OpenAI from langchain.document_loaders import PyPDFLoader pdf_loader = PyPDFLoader(pdf_file_path) docs = pdf_loader.load_and_split() llm = OpenAI() chain = load_summarize_chain(llm, chain_type="map_reduce") ...
这个强大的工具使用每个数据块上的初始提示来生成仅基于文档该部分的摘要或答案。MapReduceDocumentsChain通过运行不同的提示来组合所有初始输出,为整个文档创建全面而连贯的摘要或答案。而且,通过在 LangChain 中的实现,这种方法可以轻松处理最大和最复杂的文档。from langchain.chains.summarize import load_summarize_c...
我自己知道的第一个使用 Map Reduce 思想的应用是 Pete Hunt 的 summarize.tech,一个基于 GPT-3 的YouTube 视频总结器。不是一股脑将 YouTube 视频的文稿做总结,而是先将它分成很多的文本块(chunk),对每个块分别总结,最后给用户交付的是“摘要的摘要”,过程中消耗的 token 数能节省很多。 事实上,这不光能让成...
LangChain 支持使用 LLMs 处理文档的 Map Reduce 方法,以实现文档的高效处理和分析。当阅读大型文本并将其拆分为适合 LLM 令牌上下文长度的文档(块)时,可以将链逐个应用于每个文档,然后将输出组合成一个文档。核心主张是 Map Reduce 过程涉及两个步骤: 映射步骤——将 LLM 链分别应用于每个文档,将输出视为新文档...
# 设置 lang chain# 使用 map_reduce的chain_type,这样可以将多个文档合并成一个chain=load_summarize_...
MapReduceDocumentsChain 将LLM链应用于每个单独的文档(Map步骤),将链的输出视为新文档。然后,将所有新文档传递给单独的合并文档链以获得单一输出(Reduce步骤)。在执行Map步骤前也可以对每个单独文档进行压缩或合并映射,以确保它们适合合并文档链;可以将这个步骤递归执行直到满足要求。(适合大规模文档的情况) ...
Map-reduce:独立处理文档块,然后进行汇总。 Refine:以迭代方式构建以前的答案。 Map-rerank:对每个文档进行评分,选择最高分。 小结 今天我们学习的是基于LangChain对文档进行问答,使用 LLM 对文档进行问答从未如此简单。使用 LangChain,您可以使用嵌入和向量存储等尖端技术来使您的 LLM 更加灵活和适应性强。无论您是...
MapRerank和MapReduce类似,会大批量的调用LLM,每个document之间是独立处理。 2.4 Memory 正常情况下Chain无状态的,每次交互都是独立的,无法知道之前历史交互的信息。LangChain使用Memory组件保存和管理历史消息,这样可以跨多轮进行对话,在当前会话中保留历史会话的上下文。Memory组件支持多种存储介质,可以与Monogo、Redis、...
map_reduce: 这个方式会先将每个 document 进行总结,最后将所有 document 总结出的结果再进行一次总结。 refine: 这种方式会先总结第一个 document,然后在将第一个 document 总结出的内容和第二个 document 一起发给 llm 模型在进行总结,以此类推。这种方式的好处就是在总结后一个 document 的时候,会带着前一个...
MapReduceDocumentsChain: 先通过 LLM 对每个 document 进行处理,然后将所有文档的答案在通过 LLM 进行合并处理,得到最终的结果。 MapRerankDocumentsChain: 和MapReduceDocumentsChain 类似,先通过 LLM 对每个 document 进行处理,每个答案都会返回一个 score,最后选择 score 最高的答案。 StuffDocumentsChain ...