当前位置:   article > 正文

(13-2)RAG基础知识介绍:RAG的架构_rag架构

rag架构

1.2  RAG的架构

RAG通过检索获取相关知识,并将其融入Prompt,使得大型语言模型能够参考相应知识生成合理的回答。因此,RAG的核心理念可以概括为“检索+生成”,前者利用向量数据库的高效存储和检索能力召回目标知识,后者则利用大型模型和Prompt引擎,将召回的知识合理应用,生成目标答案。

完整的RAG应用流程主要包含两个阶段。

(1)数据准备阶段

  1. 数据提取:从各种来源中提取相关知识数据。
  2. 文本分割:对提取的文本进行适当分割,以便建立向量化表示。
  3. 向量化(embedding):将文本数据转化为向量表示,通常使用嵌入技术。
  4. 数据入库:将向量化的数据存储在高效的向量数据库中,以便进行快速检索。

(2)应用阶段

  1. 用户提问:用户提出问题,触发RAG应用流程。
  2. 数据检索(召回):利用向量数据库进行检索,召回与用户查询相关的知识。
  3. 注入Prompt:将召回的知识注入到大型语言模型的Prompt中,引导模型生成答案。
  4. LLM生成答案:大型语言模型根据注入的知识和提出的问题,生成最终的答案。

上述各个阶段的技术细节和注意事项涵盖了整个RAG应用的实现过程,其中关键在于如何有效地处理和储存知识数据,以及如何巧妙地将检索到的信息注入到生成模块中,从而使得RAG模型能够在应对用户查询时表现出色。

1.2.1  数据准备阶段

数据准备是RAG应用中的离线过程,旨在将私域数据转化为可检索的向量表示,并存储于数据库中,这个过程主要包括数据提取、文本分割、向量化和数据入库等环节。

1. 数据提取

  1. 数据加载:通过多格式数据加载和不同数据源获取,将数据处理为统一的数据格式。
  2. 数据处理:进行数据过滤、压缩和格式化等操作,确保数据符合处理要求。
  3. 元数据获取:从数据中提取关键信息,例如文件名、标题、时间等,以便后续检索时使用。

2. 文本分割

  1. 文本分割是为了适应Embedding模型的token限制和保证语义完整性。主要分割方式包括:
  2. 句分割:使用句号、感叹号、问号、换行符等,以句子为单位进行切分,确保句子语义完整性。
  3. 固定长度分割:根据embedding模型的token长度限制,将文本分割为固定长度,通过在头尾增加冗余量缓解信息损失。

3. 向量化(Embedding)

向量化是将文本数据转化为向量矩阵的关键步骤,直接影响后续检索的效果。常见的Embedding模型如下所示,大家可根据应用场景灵活选择。

  1. ChatGPT-Embedding:由OpenAI提供,以接口形式调用。
  2. ERNIE-Embedding V1:由百度提供,依赖于文心大模型能力,以接口形式调用。
  3. M3E:一款开源的Embedding模型,包含多个版本,支持微调和本地部署。
  4. BGE:由北京智源人工智能研究院发布,同样是一款开源Embedding模型,包含多个版本,支持微调和本地部署。

4. 数据入库

将数据向量化后,可以构建索引并存储于数据库,这适用于RAG的数据库包括FAISS、Chromadb、Elasticsearch(ES)、Milvus等。在选择数据库时需要综合考虑业务场景、硬件条件和性能需求,以确保检索的高效性和准确性。

1.2.2  应用阶段

在应用阶段,根据用户提问通过高效的检索方法召回与问题相关的知识,并将其融入到Prompt中,大型模型会参考用户提问和相关知识生成最终的答案。应用阶段的关键环节包括数据检索、注入Prompt等。

1. 数据检索

数据检索是在向量化的知识库中,根据用户的提问使用高效的方法召回相关知识的过程。常见的检索方法如下所示。

  1. 相似性检索:计算查询向量与所有存储向量的相似性得分,返回得分高的记录。常见的相似性计算方法包括余弦相似性、欧氏距离、曼哈顿距离等。
  2. 全文检索:在数据存入时,通过关键词构建倒排索引;在检索时,通过关键词进行全文检索,找到对应的记录。可以选择多种检索方式融合,提升召回率。

2. 注入Prompt

Prompt是大型模型的直接输入,是影响模型输出准确率的关键因素之一。在RAG场景中,Prompt通常包括任务描述、背景知识(通过检索得到)、任务指令(用户提问)等。根据任务场景和模型性能,还可以在Prompt中适当加入其他指令来优化模型的输出。一个简单的知识问答场景的Prompt如下所示:

  1. #任务描述
  2. 假设你是一个专业的客服机器人,为客户回复信息
  3. #背景知识
  4. {content} // 通过数据检索得到的相关文本
  5. #问题
  6. 华为60的续航时间是多久?

在实际应用过程中,通常需要根据大型模型的实际输出对Prompt进行调优,这依赖于个人经验和对模型行为的观察。

未完待续

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/481822
推荐阅读
相关标签
  

闽ICP备14008679号