RAG全流程
- 前提
- 训练一个语义模型(高精度,低精度)
- 训练一个大模型
- 一个知识库
- 一个精度高知识向量库(知识分割后输入高精度语义模型得到)
- 一个精度低知识向量库(知识分割后输入低精度语义模型得到)
- 应用流程细化
- 用户输入问题处理
- 大模型增强理解
- 语义模型向量转换
- 低精度向量数据库检索
- 高精度向量数据库检索
- 高精度相似度计算
- 知识库知识提取
- 大模型生成回答
前提
训练一个语义模型(高精度,低精度)
为了实现高效的问题理解和信息检索,我们训练了一个语义模型,它能够将输入的问题转换为高精度和低精度的向量表示。高精度向量用于精确匹配和理解问题的语义细节,而低精度向量则用于快速检索和筛选相关信息。
训练一个大模型
为了能够处理复杂的问题并生成详尽的回答,我们训练了一个大模型。这个模型能够理解问题的深层含义,结合知识库中的信息,生成准确、连贯的回答。
一个知识库
我们构建了一个包含丰富知识的知识库,它为大模型提供了必要的背景信息和支持。知识库中的知识被精心组织和索引,以便快速检索和利用。
一个精度高知识向量库(知识分割后输入高精度语义模型得到)
为了提高知识检索的精度,我们创建了一个高精度的知识向量库。这个库中的知识被分割成小块,并输入到高精度语义模型中,转换成向量表示。这些向量能够准确地捕捉到知识的语义特征,为问题理解和回答生成提供了有力的支持。
一个精度低知识向量库(知识分割后输入低精度语义模型得到)
为了实现快速的知识检索,我们构建了一个低精度的知识向量库。与高精度知识向量库类似,知识被分割成小块,并输入到低精度语义模型中,转换成向量表示。这些向量虽然精度较低,但仍然能够保留知识的主要语义信息,为快速筛选和初选相关知识点提供了便利。
应用流程细化
用户输入问题处理
当用户输入一个问题,系统首先对问题进行预处理,包括去除无关字符、分词等操作,以确保输入的问题能够被系统正确理解和处理。
大模型增强理解
预处理后的问题将被输入到大模型中,大模型会对问题进行深入理解,提取问题的关键信息,并生成一个初步的理解表示。
语义模型向量转换
大模型生成的初步理解表示将作为输入,被送入到语义模型中。语义模型会将其转换为高精度和低精度的向量表示。高精度向量能够更准确地表达问题的语义信息,而低精度向量则在保持主要语义信息的同时,降低了计算复杂度。
低精度向量数据库检索
使用转换得到的低精度向量,系统将在低精度知识向量数据库中进行检索,找到与问题最相关的Top n个向量索引。
高精度向量数据库检索
利用从低精度向量数据库中得到的Top n个向量索引,系统在高精度知识向量数据库中取出对应的n个高精度向量。
高精度相似度计算
系统将计算用户问题的高精度向量与从高精度知识向量数据库中取出向量之间的相似度,并取Top m个最相似的向量索引。
知识库知识提取
根据Top m个向量索引,系统在知识库中找到对应的知识条目,这些知识条目可能与用户的问题高度相关。
大模型生成回答
最后,系统将结合用户原始输入或经过大模型增强的输入,以及从知识库中提取的相关知识,一起作为输入送入到大模型中,生成一个针对用户问题的详细回答。