本页介绍了利用大型语言模型(LLM)的文档问答系统的典型架构。它涵盖了核心组件、数据流以及系统中不同部分之间的交互。有关文档问答系统的具体实现,请参阅文档问答实现。
文档问答系统允许用户就特定文档提问,并根据文档内容获得准确的答案。与依赖预训练知识的通用LLM不同,文档问答系统专注于根据提供的文档的特定内容进行检索和回答问题。
来源:README.md:257-267
文档问答系统由四个主要组件组成
来源:README.md:257-267
文档处理管道负责
| 处理阶段 | 常用库/工具 | 备注 |
|---|---|---|
| 文本提取 | 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
向量数据库将文档数据段存储为数值向量(嵌入),这些向量捕获文本的语义含义,从而实现
来源:README.md:260-266
LLM组件负责
来源:README.md:257-267
为了简化文档问答系统的开发,涌现了两个主要的框架
LangChain提供了与LLM协同工作的组件,包括文档加载器、文本分割器、嵌入、向量存储和检索方法。它被用于privateGPT和doc-chatbot等实现中。
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
文档问答系统具有不同级别的隐私保护
完全本地系统(例如,privateGPT)
混合系统
基于API的系统
来源:README.md:257-260
来源:README.md:257-267
来源:README.md:257-267
文档问答架构代表了一种强大的方法,通过自然语言交互使文档内容更易于访问。通过将用于语义搜索的向量数据库与LLM功能相结合,这些系统能够实现文档内容的有效检索和自然语言理解。随着效率、准确性以及对各种文档类型的支持的不断改进,该领域仍在不断发展。
来源:README.md:257-267