揭示检索增强生成(RAG) | AI与人类知识相遇

AI与人类知识相遇:探秘检索增强生成(RAG)技术

简介

在我们快节奏的数字化世界中,人工智能以其卓越的能力不断给我们带来惊喜。其中最新的突破之一是所谓的检索增强生成技术(Retrieval Augmented Generation,简称RAG)。这一创新就像一个数字化的巫师,融合了图书管理员和作家的技能。它正在改变我们查找和解释信息的方式,承诺未来让获得知识变得比以往更容易、更有洞察力。

学习目标

  • 了解检索增强生成(RAG)的基本概念。
  • 理解RAG如何结合检索和生成的人工智能方法。
  • 深入了解RAG的内部工作原理,从查询到响应。
  • 认识RAG在效率和定制化方面的重要性。
  • 发现RAG在各个领域中的多样应用。
  • 展望RAG技术的未来发展和影响。
  • 欣赏RAG如何弥合广阔数字知识与人类互动之间的差距。

本文作为“数据科学博文马拉松”的一部分发布。

RAG是什么?

让我们从基础知识开始。RAG结合了两种不同的人工智能方法:

Source – Hyro

检索

想象一个包含所有人类知识的数字图书馆。检索人工智能具有在查询时迅速获取最相关信息的奇特能力。就像有一个个人图书管理员为你的问题找到完美的书籍一样。

选择人工智能,是检索过程的一部分,它涉及从检索到的一组文档中选择最相关的信息。以下是一个示例代码段,说明了这个概念:

from sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.metrics.pairwise import cosine_similaritydocuments = [    "机器学习是人工智能的一个子集。",    "深度学习是一种机器学习类型。",    "自然语言处理在人工智能应用中被使用。",]# 用户查询query = "告诉我关于机器学习。"tfidf_vectorizer = TfidfVectorizer()tfidf_matrix = tfidf_vectorizer.fit_transform([query] + documents)# 计算查询和文档间的余弦相似度cosine_similarities = cosine_similarity(tfidf_matrix[0:1], tfidf_matrix[1:]).flatten()# 根据相似度分数对文档进行排序most_similar_document = documents[cosine_similarities.argmax()]# 打印最相关的文档print("最相关的文档:", most_similar_document)

这段代码演示了选择人工智能在检索过程中的工作方式。它使用TF-IDF向量和余弦相似度,根据用户查询从一组文档中选择最相关的文档。

生成

相反地,生成型人工智能可以像人类一样书写文本。它可以撰写文章、构建对话对或生成诗歌篇章。可以将其视为一位熟练的文字工匠,随时准备在任何主题上撰写文本。

import torchfrom transformers import GPT2LMHeadModel, GPT2Tokenizer# 加载预训练模型和分词器model_name = "gpt2"model = GPT2LMHeadModel.from_pretrained(model_name)tokenizer = GPT2Tokenizer.from_pretrained(model_name)# 用户提示prompt = "从前有一段时间"# 将提示编码为张量input_ids = tokenizer.encode(prompt, return_tensors="pt")# 生成文本output = model.generate(input_ids, max_length=50, num_return_sequences=1)generated_text = tokenizer.decode(output[0], skip_special_tokens=True)print("生成的文本:", generated_text)

这段代码展示了生成型人工智能,其中一个预训练的GPT-2模型根据用户的提示生成文本。它模拟了RAG如何创建类似人类回应的过程。这些代码片段展示了RAG的选择和生成方面,它们共同为智能和上下文感知的回应提供贡献。

选择 AI:RAG等系统的关键组成部分

选择 AI 是 RAG(检索增强生成)等系统的关键组成部分。它帮助从一组检索到的文件中选择最相关的信息。让我们使用一个简化的代码片段来探索选择 AI 的实时示例。

情境:想象一下,您正在构建一个问答系统,该系统从一组文档中检索答案。当用户提出一个问题时,您的选择 AI 需要从文档中找到最匹配的答案。

以下是一个基本的 Python 代码片段,用于演示选择 AI 的工作原理:

from sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.metrics.pairwise import cosine_similarity# 示例文档(知识库)documents = [    "机器学习是人工智能的一个子集。",    "深度学习是机器学习的一种类型。",    "自然语言处理在人工智能应用中被使用。",]# 用户查询user_query = "什么是深度学习?"# 为文档和查询创建 TF-IDF 向量tfidf_vectorizer = TfidfVectorizer()tfidf_matrix = tfidf_vectorizer.fit_transform([user_query] + documents)# 计算用户查询和文档之间的余弦相似度cosine_similarities = cosine_similarity(tfidf_matrix[0:1], tfidf_matrix[1:]).flatten()# 根据相似度分数对文档进行排序most_similar_document_index = cosine_similarities.argmax()most_similar_document = documents[most_similar_document_index]# 将最相关的文档打印为答案print("用户查询:", user_query)print("最相关的文档:", most_similar_document)

在这个例子中,我们利用选择 AI 来回答用户关于深度学习的问题。我们建立一个知识库,生成 TF-IDF 向量来评估单词的重要性,并计算余弦相似度来确定最相关的文档。然后,系统将最适合的文档作为答案提供,展示了选择 AI 在信息检索中的实用性。

这段代码片段代表了选择 AI 的一个简化示例。在实践中,会使用更复杂的技术和更大的文档集合,但核心概念保持不变:根据与用户查询的相关性选择最佳信息。

大型语言模型(LLM)与 RAG 的关系

LLM,即大型语言模型,是包括 GPT-3(生成预训练变压器 3)等模型在内的更广泛的 AI 技术类别。虽然 LLM 与 RAG 在自然语言处理和文本生成方面有一些相似之处,但它们的目的不同。RAG 特别注重将检索和生成 AI 技术结合起来,提供上下文感知的响应。它在需要从大型数据库中检索信息,然后根据检索到的数据生成连贯回复的任务中表现优秀。

另一方面,GPT-3 等 LLM 主要是生成模型。它们可以为各种应用生成类似人类的文本,包括内容生成、语言翻译和文本补全。LLM 和 RAG 之间存在关联,因为它们涉及到语言理解和生成。但 RAG 在将这些能力结合应用于特定任务方面有专长,而 LLM 则更适用于通用的语言模型。

RAG 的内部工作原理

RAG 精巧地结合了这两个 AI 超能力。这是一个简化的视图:

  • 查询:您提出一个问题或提供一个主题。这作为您的查询。
# RAG 中创建查询的示例 Python 代码query = "可再生能源的环境影响是什么?"result = rag.process_query(query)print(result)

这段代码片段演示了如何构建一个查询并将其发送给 RAG 进行信息检索。

  • 检索:RAG 的检索模块开始工作。它搜索庞大的知识库,以找到相关的文档、文章或网页。
# RAG 中检索信息的示例 Python 代码document = rag.retrieve_document(query)print(document)

这个代码片段示例了 RAG 如何从庞大的知识源,如数据库或文档,检索信息。

  • 选择:RAG 从检索到的文档中选择最相关的信息。就像图书管理员从书架上找到最有帮助的书一样。
# 用于从RAG中选择相关信息的Python示例代码
selected_info = rag.select_information(document)
print(selected_info)

下面的代码片段展示了RAG如何从检索到的文档中选择最相关的信息。

  • 生成:现在是生成部分的环节。RAG将选定的信息编织成一种连贯、类似人类的回答。它创造了一个对你有意义的答案。
# 用于在RAG中生成回答的Python示例代码
response = rag.generate_response(selected_info)
print(response)

这段代码演示了RAG如何根据选定的信息生成类似人类的回答。

这些代码片段提供了RAG内部运作的关键步骤概览,从查询形成到回答生成。它们帮助读者理解RAG如何处理信息并在交互过程中产生连贯的回应。

示例

  • 问题:你可以通过提问或提供一个主题开始。这就是你的查询,就像问:“今天天气如何?”
  • 检索查询:RAG接受你的问题并寻找相关的信息。就像去图书馆询问图书管理员有关这个主题的书一样。
  • 检索到的文本:RAG搜索其庞大的知识库,就像图书馆管理员在书架上搜索书籍一样。它找到与你的问题相关的文本或文档。
  • 完整提示:RAG将你的问题和检索到的信息结合起来。就像图书馆管理员递给你一本书,并说:“这本书中有你需要的答案。”
  • 作为生成器的GPT:RAG使用强大的文本生成器,例如GPT,将信息转化为清晰易懂的回答。就像有一位有才华的作家将书中的信息转化为回答。
  • 回应:RAG生成一个对你有意义的回答。就像作家给你提供了一个写得好并且丰富的回复。
  • 用户:最后,你作为用户接收到回答并得到你的问题的答案,就像你与一个知识渊博的图书管理员交谈时一样。

为什么RAG很重要?

RAG有几个引人注目的变革性原因:

  • 效率:它可以以惊人的速度提供准确的答案,提高生产效率。
  • 自定义:RAG会根据不同的写作风格调整其回答,使它具有极高的适用性。
  • 知识获取:它是连接广大知识库的门户,对教育、研究和客户支持等领域非常有益。
  • 自然对话:RAG将人工智能交互从机械式转变为类似人类的对话,使对话更加引人入胜。
  • 内容创作:作家和研究人员可以利用RAG的帮助来进行构思和研究。它可以提供主题建议、摘要文章并提供相关引用,节省写作过程中的时间和精力。
  • RAG的应用:真实世界示例/案例研究

真实世界的应用

RAG已经在各种真实世界的应用中展现出其变革潜力。以下是一些值得注意的例子:

  • 增强搜索引擎:主要搜索引擎已经集成了RAG技术以改进搜索结果。当你输入一个查询时,RAG通过提供更多上下文相关的结果来帮助你细化搜索。这意味着即使你最初的查询模糊,你仍然更有可能找到你想要的结果。
  • 虚拟助手:通过RAG技术,虚拟助手(如聊天机器人和语音激活设备)变得更加智能和富有对话性。这些助手能够回答各种问题,对于客户支持和一般信息检索非常有用。
  • 教育支持:RAG已经进入教育领域,使学生和教育工作者受益。它可以回答学生关于各个科目的问题,帮助解释复杂的主题,甚至为教师生成测验问题和解释,简化学习过程。
  • 内容生成:作家和内容创作者已经发现RAG在生成创意和辅助研究方面的价值。它可以提供主题建议、文章摘要和相关引用,为作家在内容创作过程中节省时间和精力。
  • 医学研究:在医学研究领域,RAG被证明是无价之宝。研究人员可以使用RAG搜索并总结最新的研究和发现,帮助他们与快速发展的医学文献保持更新。

案例研究示例:强化的RAG客户支持

一家全球电子商务巨头将RAG集成到其客户支持聊天机器人中。客户可以用自然语言提问有关产品、运输和退货的问题。基于客户的偏好和过往购买记录,由RAG驱动的聊天机器人提供快速答案,并提供产品推荐。提高了客户满意度,进而增加了销售额和留存率。

这些真实案例展示了RAG在各个领域产生的实际影响,从搜索引擎到医疗保健和客户支持。它高效地检索和生成信息,正在改变我们获取知识和与技术互动的方式。

结论

总而言之,检索增强生成(RAG)代表了人工智能和人类知识的卓越融合。RAG充当信息大师,迅速从广阔的档案中检索相关数据。它从这个数字宝库中选出最精华的宝石,并制作出听起来非常人性化的回答。

RAG的能力有望改变我们与技术互动的方式。它的潜在应用是无限的,从增强搜索引擎到革新虚拟助手。随着我们深入进入数字时代,RAG是人工智能和人类智慧不可思议的合作的明证。

拥抱RAG意味着拥抱一个信息流畅、问题答案就在谈话中的未来。它不仅仅是一个工具,它是我们和人类知识广阔领域之间的桥梁,在日益复杂的世界中简化了对理解的追求。

来源 - Neo4j

要点

  • 检索增强生成(RAG)将检索和生成的人工智能结合起来,像图书管理员和熟练的作家一样发挥作用。
  • RAG的内部工作包括查询构建、信息检索、选择和回应生成。
  • RAG提供高效、定制和自然的对话,使其在各种应用中具有多样性。
  • 它的应用涵盖搜索引擎、虚拟助手、教育、内容创作和医学研究。
  • RAG是人工智能和人类知识之间的桥梁,简化了获取广阔信息资源的途径。

常见问题

本文中显示的媒体不归Analytics Vidhya所有,仅由作者自行决定使用。