菜单

文档问答架构

相关源文件

本页介绍了利用大型语言模型(LLM)的文档问答系统的典型架构。它涵盖了核心组件、数据流以及系统中不同部分之间的交互。有关文档问答系统的具体实现,请参阅文档问答实现

概述

文档问答系统允许用户就特定文档提问,并根据文档内容获得准确的答案。与依赖预训练知识的通用LLM不同,文档问答系统专注于根据提供的文档的特定内容进行检索和回答问题。

文档问答通用架构

来源:README.md:257-267

核心组件

文档问答系统由四个主要组件组成

  1. 文档处理管道 - 负责文档的摄取和准备
  2. 向量数据库 - 存储文档嵌入,用于语义检索
  3. 语言模型 - 根据检索到的上下文生成答案
  4. 用户界面 - 促进用户与系统之间的交互

组件交互流程

来源:README.md:257-267

文档处理

文档处理管道负责

  1. 文本提取 - 将不同文档格式转换为纯文本
  2. 文本分块 - 将文本分解为可管理的数据段
  3. 嵌入生成 - 将文本数据段转换为向量表示

文档处理的技术选项

处理阶段常用库/工具备注
文本提取PyPDF2, PDFMiner, Textract适用于PDF文档
文本提取python-docx, docx2txt适用于Word文档
文本提取BeautifulSoup, html2text适用于HTML内容
文本分块自定义算法,LangChain文本分割器基于token数量、句子或段落
嵌入OpenAI Embeddings, Sentence Transformers商业嵌入服务
嵌入text2vec-large-chinese, ernie-3.0-base-zh开源嵌入模型

来源:README.md:257, README.md:680-699

向量存储和检索

向量数据库将文档数据段存储为数值向量(嵌入),这些向量捕获文本的语义含义,从而实现

  1. 语义搜索 - 查找与查询在语义上相似的文档数据段
  2. 高效检索 - 快速访问最相关的文档数据段

常用向量数据库技术

来源:README.md:260-266

LLM 集成

LLM组件负责

  1. 理解自然语言的用户查询
  2. 处理检索到的文档上下文
  3. 生成连贯、与上下文相关的答案

LLM 集成架构

来源:README.md:257-267

集成框架

为了简化文档问答系统的开发,涌现了两个主要的框架

LangChain

LangChain提供了与LLM协同工作的组件,包括文档加载器、文本分割器、嵌入、向量存储和检索方法。它被用于privateGPT和doc-chatbot等实现中。

LlamaIndex

LlamaIndex(前身为GPT Index)为LLM应用程序提供了一个数据框架,其中包含用于索引、查询和从各种数据源检索信息的工具。它被用于DocsGPT和其他实现中。

来源:README.md:264-266

文档问答系统实现

存在多种开源实现,每种都有不同的方法

实现描述关键技术隐私级别
privateGPT离线文档问答,确保完全隐私GPT4All-J, LangChain高(100%本地)
DocsGPT简化查找项目文档中的信息LlamaIndex中等(取决于配置)
document.ai通用本地知识库解决方案向量数据库,GPT-3.5中等
chatWeb用于问答的Web爬虫和文档处理器GPT-3.5, Vector DB低(使用API)
doc-chatbot多文件、多主题文档聊天GPT-4, Pinecone, MongoDB低(使用API)

来源:README.md:257-267

隐私和安全注意事项

文档问答系统具有不同级别的隐私保护

  1. 完全本地系统(例如,privateGPT)

    • 所有处理都在本地硬件上进行
    • 文档永远不会离开您的系统
    • 使用开源LLM和嵌入模型
  2. 混合系统

    • 可能使用本地文档处理,但使用远程LLM
    • 将上下文和查询发送到外部API服务
    • 在性能和隐私之间取得平衡
  3. 基于API的系统

    • 依赖外部服务进行嵌入和LLM推理
    • 提供更好的性能,但隐私保证较低
    • 可能会在外部服务中缓存文档或嵌入

来源:README.md:257-260

文档问答系统的典型数据流

来源:README.md:257-267

优点和局限性

优点

  • 访问LLM训练数据中未包含的信息
  • 为领域特定问题提供更准确的答案
  • 引用特定文档的来源
  • 可以完全私密,数据不会离开您的系统

局限性

  • 质量取决于文档和嵌入质量
  • 上下文窗口限制了文档长度
  • 本地部署LLM需要高计算资源
  • 可能需要商业嵌入/LLM服务的API密钥

来源:README.md:257-267

结论

文档问答架构代表了一种强大的方法,通过自然语言交互使文档内容更易于访问。通过将用于语义搜索的向量数据库与LLM功能相结合,这些系统能够实现文档内容的有效检索和自然语言理解。随着效率、准确性以及对各种文档类型的支持的不断改进,该领域仍在不断发展。

来源:README.md:257-267