Skip to main content

基于文档的问答 Question Answering Over Documents

虽然LLM非常强大,但它们对于它们未经训练的信息一无所知。如果您想使用LLM来回答它未经训练的文档相关问题,您需要向其提供这些文档的信息。最常用的方法是通过"检索增强生成"( retrieval augmented generation )。

检索增强生成的思想是,在给定一个问题时,首先进行检索步骤以获取任何相关文档。然后将这些文档与原始问题一起传递给语言模型,并让它生成一个回答。然而,为了做到这一点,首先需要将文档以适合进行此类查询的格式呈现。

本页介绍了这两个步骤的高级思想:

(1) 将文档摄入到可查询格式中,然后

(2) 进行检索增强生成链。

摄入 Ingestion

为了使用语言模型与数据进行交互,您首先需要将其转换为适合的格式。这种格式可以是索引( Index )。通过将数据放入索引中,可以使后续的步骤更容易与之交互。

有几种类型的索引,但最常见的是向量存储( Vectorstore )。将文档摄入到向量存储中可以按照以下步骤完成:

  1. 加载文档(使用文档加载器)
  2. 分割文档(使用文本分割器)
  3. 为文档创建嵌入(使用文本嵌入模型)
  4. 将文档和嵌入存储到向量存储中

生成 Generation

现在我们有了一个索引,如何使用它进行生成呢?可以将此过程分为以下步骤:

  1. 接收用户提问
  2. 在索引中查找与问题相关的文档
  3. 使用问题和任何相关文档构建一个 PromptValue(使用 PromptTemplate )
  4. 将PromptValue传递给模型
  5. 获取结果并返回给用户。