RAG(检索增强生成)

上一篇文章介绍了LLM,LLM的知识仅限于其所训练的数据。想让LLM了解特定领域的知识或专有数据需要进行特定的处理,目前有三种方式:

1、RAG

2、使用私有数据对LLM进行微调(Fine-Tuning)

3、将以上二者结合

今天这篇文章先介绍RAG

RAG:是一种将数据发送给LLM之前从数据中找出相关信息并将其注入Prompt的方法。这样LLM将获得相关信息,并能够使用这些信息进行回复(降低幻觉的可能性)

可以使用的信息检索方式有很多,最流行的方式无非就是以下三种:

1、全文(关键词)搜索。此方法使用TF-IDF和BM25等技术,通过将查询中的关键字(例如:输入内容)与文档数据库进行匹配来搜索文档。它根据文档中这些关键词的频率和相关性对结果进行排名

2、向量搜索。又称语义搜索。实用嵌入模型将文本文档转换为数字向量。然后根据查询向量和文档向量之间的余弦相似度或 其他相似度/距离度量 来查找和排序文档,从而捕获更深层的语义含义

3、混合。结合多种搜索方式(例如:全文搜索+向量搜索),可以提高搜索的有效性

了解了以上知识后,接下来详细介绍下RAG的实用流程

RAG的流程分为两个阶段:索引和检索

索引阶段,对文档进行预处理,以便在检索阶段进行有效搜索。

索引过程可能因使用的信息检索方法而异。

对于向量搜索,通常涉及清理文档、用其他数据和元数据丰富文档、将其拆分成为较小的片段(分块)、嵌入这些片段、存储在嵌入存储(向量数据库)。

索引阶段通常离线进行,并不需要最终用户等待其完成。如果用户希望上传其自定义文档,以便LLM能够访问他们,在这种情况下索引应在线执行并成为主要应用程序的一部分。

索引阶段简化图

检索阶段通常在线发生,当用户提交需要使用索引文档来回答的问题时。

此过程因使用的信息检索方法而异。对于向量搜索,通常涉及嵌入用户的查询并在嵌入存储(向量数据库)执行相似性搜索,然后将相关片段(原始文档的片段)注入Prompt并发送到LLM

检索阶段简化图
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容