文档问答
文档问答概述
文档问答(Document QA)是指基于给定文档回答用户问题的任务。用户上传或指定文档后,系统能够理解文档内容并准确回答相关问题。这是LLM最实用的应用场景之一。
系统架构
RAG架构
最常见的文档问答实现方式:
- 文档处理:解析、分块、索引
- 检索:根据问题检索相关段落
- 生成:基于检索结果生成答案
- 引用:标注答案来源
长上下文架构
利用大上下文窗口:
- 将整个文档放入上下文
- 直接让LLM理解并回答
- 适合中等长度文档
文档处理流程
文档解析
支持多种格式:
- 文本文件:TXT、Markdown
- PDF:PyMuPDF、pdfplumber
- Office:python-docx、openpyxl
- 网页:HTML解析
- 图片:OCR识别
文档分块
将长文档切分为适当大小的块:
- 固定长度:按字符/Token数量切分
- 语义分块:按段落/章节切分
- 递归分块:层次化切分策略
元数据提取
保留文档结构信息:
- 标题层级
- 页码位置
- 表格和图表
- 来源信息
检索策略
向量检索
- 使用嵌入模型编码文档块
- 基于语义相似度检索
- 处理语义相关的内容
关键词检索
- BM25等传统检索方法
- 精确匹配专业术语
- 适合精确查询
混合检索
结合向量和关键词检索:
- 兼顾语义理解和精确匹配
- 提升检索质量
生成增强
提示工程
设计适合文档问答的提示:
- 引用来源要求
- 不确定时说明
- 忠于原文的要求
多文档综合
跨文档综合信息:
- 多文档检索
- 信息整合
- 冲突处理
引用标注
在答案中标注来源:
- 段落级引用
- 页码级引用
- 便于用户验证
应用场景
- 企业知识库:内部文档检索和问答
- 法律文档:合同分析和条款查询
- 学术论文:文献综述和知识发现
- 产品手册:客户自助查询
- 财务报告:数据分析和洞察
质量评估
- 答案准确性:是否正确回答问题
- 相关性:答案是否与问题相关
- 完整性:是否涵盖了关键信息
- 引用准确性:引用来源是否正确
优化方向
- 提升文档解析的准确性
- 优化分块策略提升检索质量
- 增强跨文档推理能力
- 支持更多文档格式
- 提升复杂表格和图表的理解
文档问答是LLM落地最广泛的应用之一,持续优化各环节质量是提升用户体验的关键。