赞
踩
RAG通过检索获取相关知识,并将其融入Prompt,使得大型语言模型能够参考相应知识生成合理的回答。因此,RAG的核心理念可以概括为“检索+生成”,前者利用向量数据库的高效存储和检索能力召回目标知识,后者则利用大型模型和Prompt引擎,将召回的知识合理应用,生成目标答案。
完整的RAG应用流程主要包含两个阶段。
(1)数据准备阶段
(2)应用阶段
上述各个阶段的技术细节和注意事项涵盖了整个RAG应用的实现过程,其中关键在于如何有效地处理和储存知识数据,以及如何巧妙地将检索到的信息注入到生成模块中,从而使得RAG模型能够在应对用户查询时表现出色。
数据准备是RAG应用中的离线过程,旨在将私域数据转化为可检索的向量表示,并存储于数据库中,这个过程主要包括数据提取、文本分割、向量化和数据入库等环节。
1. 数据提取
2. 文本分割
3. 向量化(Embedding)
向量化是将文本数据转化为向量矩阵的关键步骤,直接影响后续检索的效果。常见的Embedding模型如下所示,大家可根据应用场景灵活选择。
4. 数据入库
将数据向量化后,可以构建索引并存储于数据库,这适用于RAG的数据库包括FAISS、Chromadb、Elasticsearch(ES)、Milvus等。在选择数据库时需要综合考虑业务场景、硬件条件和性能需求,以确保检索的高效性和准确性。
在应用阶段,根据用户提问通过高效的检索方法召回与问题相关的知识,并将其融入到Prompt中,大型模型会参考用户提问和相关知识生成最终的答案。应用阶段的关键环节包括数据检索、注入Prompt等。
1. 数据检索
数据检索是在向量化的知识库中,根据用户的提问使用高效的方法召回相关知识的过程。常见的检索方法如下所示。
2. 注入Prompt
Prompt是大型模型的直接输入,是影响模型输出准确率的关键因素之一。在RAG场景中,Prompt通常包括任务描述、背景知识(通过检索得到)、任务指令(用户提问)等。根据任务场景和模型性能,还可以在Prompt中适当加入其他指令来优化模型的输出。一个简单的知识问答场景的Prompt如下所示:
- #任务描述
-
- 假设你是一个专业的客服机器人,为客户回复信息
-
- #背景知识
-
- {content} // 通过数据检索得到的相关文本
-
- #问题
-
- 华为60的续航时间是多久?
在实际应用过程中,通常需要根据大型模型的实际输出对Prompt进行调优,这依赖于个人经验和对模型行为的观察。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。