概述
这些是处理文档的核心链。它们对于总结文档、回答文档问题、从文档中提取信息等很有用。
这些链都实现了一个通用接口:
class BaseCombineDocumentsChain(Chain, ABC):
"""Base interface for chains combining documents."""
@abstractmethod
def combine_docs(self, docs: List[Document], **kwargs: Any) -> Tuple[str, dict]:
"""Combine documents into a single string."""
填充(Stuff)
填充(stuff)文档链是最直接的文档链。它需要一个文档列表,将它们全部插入到Prompt中,并将该prompt传递给llm。
该链非常适合文档较小且大多数调用只传递少量文档的应用程序。

提炼(Refine)
提炼文档链通过循环输入文档并迭代更新其答案来构建响应。
对于每个文档,它将所有非文档输入、当前文档和最新的中间答案传递给 LLM 链以获得新答案。

map reduce
Map 步骤:MapReduce 文档链首先将 LLM 链单独应用于每个文档,将链输出视为新文档。
Reduce 步骤:然后,将所有新文档传递到单独的组合文档链以获得单个输出。
它可以选择首先压缩或折叠、映射的文档,以确保它们适合组合文档链(这通常会将它们传递给LLM)。如有必要,该压缩步骤会递归执行。

Map re-rank
map re-rank文档链会对每个文档运行初始Prompt,这不仅会尝试完成任务,还会对其答案的确定性进行评分。返回得分最高的响应。

总结
文本就是讲解对Document的基础操作chain有哪些?
| chain | 描述 |
|---|---|
| stuff chain | 该链非常适合文档较小且大多数调用只传递少量文档的应用程序。 |
| Refine chain | 通过循环输入文档并迭代更新其答案来构建响应. |
| map reduce chain | 将A文档转换成B文档,然后针对B文档进行输出。 |
| Map re-rank chain | 对答案增加了确定下评分。返回得分最高的响应。 |
参考地址:
https://python.langchain.com/docs/modules/chains/document/



















