RAG流程
-
用户输入接收
-
系统接收用户输入的查询问题或文本内容,例如“李白有哪些著名的作品?”用户输入可以通过自然语言处理(NLP)模型的输入端口或用户交互界面(如聊天应用、搜索引擎输入框等)接收。
-
-
查询向量库
-
将用户输入转换成向量,并在向量库中进行相似性搜索。向量库中存储了大量文本的向量表示,这些文本可以是书籍、文章、知识库条目等。例如,向量库中有某个文档表示李白的著名作品,其向量与用户输入的向量相似度很高,系统就会返回这个文档。
-
-
调用大模型处理结果
-
将向量库返回的相关文档信息与用户原始查询一起输入到大语言模型中。大模型会将检索结果与用户问题结合,生成连贯的回答。例如,对于用户查询“李白有哪些著名的作品?”大模型会融合检索到的李白作品的文档内容,生成类似“李白的著名作品有《将进酒》《静夜思》等”的回答。
-
-
输出应答给用户
-
大模型生成的回答通过输出端口返回给用户。在聊天应用的界面中,用户会在屏幕上看到答案,例如李白著名作品的列表。
-
RAG的优势
-
结合检索系统和生成模型:能利用最新信息,提高答案质量,具有更好的可解释性和适应性。
-
无需重新训练模型:通过检索外部知识库,无需对大语言模型进行重新训练,即可提供准确、相关且实用的输出。
RAG的挑战
-
检索质量问题:检索结果的准确性会直接影响最终生成的回答质量。
-
额外计算资源需求:检索和生成过程需要额外的计算资源支持。
RAG的进一步发展
-
高级RAG:在数据索引、检索前和检索后都进行了额外处理,通过更精细的数据清洗、设计文档结构和添加元数据等方法提升文本的一致性、准确性和检索效率。
-
模块化RAG:结构更加自由灵活,引入了更多具体功能模块,例如查询搜索引擎、融合多个回答等,并将检索与微调、强化学习等技术融合。