RAG(Retrieval Augmented Generation,检索增强生成)是一种结合信息检索和文本生成能力的技术,主要用于处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。
其基本流程包括以下几个步骤:
1. 文档加载:从多种不同来源加载文档,如PDF 在内的非结构化数据、SQL 在内的结构化数据以及 Python、Java 之类的代码等。
2. 文本分割:文本分割器把文档切分为指定大小的块,称为“文档块”或者“文档片”。
3. 存储:涉及将切分好的文档块进行嵌入转换成向量的形式,并将 Embedding 后的向量数据存储到向量数据库。
4. 检索:通过某种检索算法从向量数据库中找到与输入问题相似的嵌入片。
5. 输出:把问题以及检索出来的嵌入片一起提交给 LLM(大语言模型),LLM 会通过问题和检索出来的提示一起来生成更加合理的答案。
RAG 由两部分组成:一个“检索器”和一个“生成器”。检索器从外部知识中快速找到与问题相关的信息,生成器则利用这些信息来制作精确和连贯的答案。在给定一个用户的输入(如问题或话题)时,RAG 会从数据源中检索出相关的文本片段作为上下文,然后将用户输入和检索到的上下文拼接成完整输入传递给大模型,并从大模型的输出中提取或格式化所需信息返回给用户。
2025-01-06