刚入职一家公司,面对的是成百上千份内部文档:HR政策、员工手册、产品说明、技术指南、合规文件、SOP、内部流程……当有员工问“我今年没用完的年假能结转多少天到明年?”时,传统做法是翻文件夹、开PDF、按Ctrl+F,或者直接问HR。
但如果有一个AI助手,能在几秒内基于公司真实文档给出答案,而不是凭空猜测呢?这正是检索增强生成(RAG)要解决的问题。
RAG要解决什么问题?
假设公司有一批文档,包括员工手册、休假政策、健康保险、远程办公政策、差旅政策和报销政策。员工问“未使用的带薪年假能否结转到下一年?”——通用大语言模型(LLM)可能对休假政策有泛泛的了解,但它并不知道这家公司的具体规定。
我们需要让模型访问公司的私有知识。这就是RAG的核心价值:不是让LLM完全凭已有知识回答,而是先从自有知识库中检索相关信息,再交给LLM生成答案。
RAG的完整流程
用户提问后,系统先生成嵌入(Embedding),然后在向量数据库中搜索,检索相关文档,找到相关内容后,将“上下文+问题”一起交给LLM,最终生成答案。整个过程让LLM对私有或频繁变化的信息变得实用得多。
第一步:收集文档
首先要收集公司文档,包括HR政策、产品文档、SOP、法律文件、技术文档、员工手册等。这些文档可能来自PDF、Word文档、网站、数据库、云存储或内部知识库。在我们的示例中,假设文档都是PDF格式。
第二步:提取文本
PDF本身不能直接给LLM使用,需要先提取文本内容。比如从休假政策PDF中提取出“员工每年享有24天带薪年假……未使用的带薪年假最多可结转10天……”这样的机器可读内容。
第三步:将文档切分为块
构建RAG系统的一个重要环节是:通常不会把一份100页的完整文档塞进每一次LLM请求中。相反,需要将其拆分成较小的片段,称为“块”(chunks)。一份100页的PDF会被拆成多个块,每个块包含一部分内容,这样既能控制每次请求的数据量,又能保证检索的精准度。
热门跟贴