一个典型的RAG方案,包含文档服务、向量检索服务、向量化服务、重排服务、LLM服务等关键服务模块。
图1 RAG方案流程图
- 知识库构建流程(离线)
- 用户准备已有的知识文档,通过系统的Loader模块加载到RAG系统中。
- RAG调用Splitter分割模块对加载的知识文档进行切分,Splitter具备不同的切分算法,如固定大小分割,关键词分割等。
- 切分后的词通过Embedder模块进行向量化,转化为向量数据。
- 将向量数据存储到向量数据库中,从而完成本地知识库的构建。
- 问答流程(在线)
- 用户在对话框中输入问题。
- 对输入的问题文本通过Embedding转为向量数据并返回。
- 根据问题转换的向量数据在向量数据库中检索并返回相关的数据信息。
- 向量检索返回的数据信息通过重排返回Top-K个相似度最高的结果。
- 将返回的Top-K个结果和用户提问一起整合为Prompt。
- 将Prompt输入到LLM大模型中,大模型根据提示词生成结果并返回。