背景介绍
大语言模型(LLM)存在内部知识有限、幻觉问题等缺点。RAG(Retrieval Augmented Generation)通过结合检索系统和生成模型,引入外部知识,提高语言生成的准确性和相关性。
RAG系统组成与优势
RAG系统由数据源、数据处理模块、检索器、排序器、生成器等组件构成。其优势在于能够引入外部知识,提供更符合上下文语境的回答,且内部知识可实时修改,具备可观测性和可解释性,有效降低LLM的幻觉问题。
RAG核心技术架构
整体思路为:用户提问→检索→排序→生成→用户。
- 检索:通过文档解析、Query改写、混合检索,快速检索相关候选文档。
- 排序:通过粗排序(RRF)、精排序(ColBERT)、知识过滤,找出最相关文档并排序。
- 生成:通过知识排版,结合用户提问和Prompt模板输入LLM,生成最终答案。
RAG构建挑战与实践
“搜的更全”
- 文档解析:基于DeepDoc模块,对PDF和Word文档进行深度解析,区分层级结构,进行数据切分和索引创建。
- 多轮Query改写:将多轮Query改写转换为关系抽取任务,采用TPLinker模型。
- 混合检索:结合向量检索(精确匹配、相近语义理解等)和全文检索(逻辑运算、排序等),提高检索的准确性和多样性。
“排的更好”
- 粗排序:采用RRF算法,结合多个查询结果集,简单有效,适合多路召回。
- 精排序:采用ColBERT模型,延迟交互计算相似度,提高排序效率。
- 知识过滤:通过NLI任务评估检索知识与问题的相关性,排除无关信息。
“回答的更准”
- 知识排版:选择合适的chunk size,避免信息丢失,召回上下文。
- FoRAG:增强生成器,分两阶段生成答案:提纲阶段生成组织结构,扩展阶段根据提纲生成详细答案,提高答案的逻辑清晰度。
总结
分享了办公领域RAG构建的实践经验,包括系统构建和算法设计。
- 检索:通过文档解析、多轮Query改写、混合检索,保证检索的相关文档“搜的更全”。
- 排序:通过粗排序、精排序、知识过滤,保证文档的相关性排序“排的更好”。
- 生成:通过知识排版、Query+Prompt模板组装,保证LLM“回答的更准”。
心得:RAG实现不难,但做好需注重细节,优化检索和生成,贴近业务按需设计。生产级RAG需要工程和算法等多方面努力,大量实验验证和优化。