为了账号安全,请及时绑定邮箱和手机立即绑定

生成式AI:我的学习之旅与心得感悟

大家好!随着世界越来越趋向于采用AI驱动的解决方案,作为一名全栈开发人员,我对生成式AI的潜力充满好奇。为了探索生成式AI的能力和挑战,我决定深入研究。过去几个月里,我一直在学习并记录我的旅程的点点滴滴,收集有关生成式AI的各种见解。今天,我非常激动地与大家分享这段时间里获得的知识和经验!

我把我关于生成式人工智能、嵌入向量、向量数据库、检索增强生成(RAG)等的所有笔记整理在我的个人博客里。如果你对所有我整理的资源和见解感兴趣,欢迎点击这里了解 here

揭秘Transformer的神奇之处

Transformers
这是一张变形金刚的图片。

当我第一次开始研究大规模语言模型时,我立刻被“transformer”架构所吸引。作为一个喜欢探究内部机制的人,我知道这是一切的关键。但是让我来告诉你,一开始理解它并不容易。最核心的是,transformer 使用注意力机制来评估序列中不同单词的重要性,这相比于之前的 RNN 或 LSTM 模型来说,是一个巨大的进步。这些模型在处理长距离依赖性时常常出现问题。

transformer之所以如此变革性(并非双关!)是因为它们让模型能够高效处理大量文本数据,同时在较长的文本中保持上下文。尽管我学到了很多,我还是不能完全理解这些模型的每一个细节。例如,虽然注意力的概念很清楚,但其背后的数学运算仍然感觉抽象。不过,我整理了一份帮助我理解这些概念的资源清单,对于任何想要开始探索的人来说可能很有用。

YouTube视频:

博客 :

提示设计

提示(点击看大图)

一旦我对 transformers 比较熟悉了,我将注意力转向了提示工程的艺术和科学。我很快意识到,虽然 transformers 可以生成令人印象深刻的文本,但它们的输出质量往往取决于输入提示的编写。这时,像 Chain of Thought (COT)、REACT 和 Tree of Thoughts 这样的方法就派上了用场。通过引导模型的推理过程,我们可以获得更加精确和准确的输出结果。

然而,提示工程并不是万能的解决方案。你如何编写提示会对模型的效果产生显著影响。例如,对同一个问题进行简单的改写就能得到完全不同的回应。有很多资源帮我改进了提示设计。

YouTube视频,

博客:

我看了些关于提示工程的研究论文,可能会对你有帮助。

一些提升您提示工程技术的工具

就像任何手艺一样,拥有正确的工具是必不可少的。虽然提示工程可能耗时较长,但有一些工具可以帮助加快这一流程。例如,像Zenbase这样的平台可以自动化模型选择和提示生成,减少手动操作。同样,Prompt OptimizerEvalLM这样的工具提供了互动的优化功能,帮助通过评估是否符合用户定义的标准来优化提示。这些资源让我更容易尝试不同的策略并找出哪个最有效。

RAG

RAG 该图片展示了RAG相关的内容。

接下来令人兴奋的一步是探索检索增强生成(RAG)。如果你一直关注人工智能和大型语言模型(LLMs)的进展,你可能已经知道这些模型非常强大,但也有一个限制:它们只能生成基于训练数据的回答。但是,当你需要它们回答关于以前未接触过的话题或领域的提问时会怎样呢?这时,RAG就发挥作用了,让LLMs能够实时访问外部知识库,从而变得更聪明。

RAG是什么?

本质上来说,RAG将大语言模型的生成能力和外部数据库的检索能力结合起来。这种结合使模型能够从知识库或数据集中提取相关的信息,从而生成更准确、更符合上下文的答案。可以将其视为让大语言模型访问一个庞大且不断更新的信息池,让其能够回答即使从未直接训练过的话题的问题。

RAG系统的组件

一个典型的RAG系统包括三个关键部分。

  1. 知识库/外部语料:这是检索器会访问的外部数据集或数据库,用于查找相关信息。它可能是一个静态数据库,像搜索引擎这样的动态来源,甚至是一组经常更新的文档集合。

  2. 检索器:检索器的工作是在知识库中查找相关的文档或信息片段。它会用各种算法找到最相关的数据来回答问题。

  3. 大型语言模型(LLM):检索器检索到所需信息后,LLM 使用这些数据来生成回复。LLM 实际上通过这些上下文信息来“丰富”其生成过程。

以下是一些帮助您了解并开始使用RAG(检索和生成)的资源。

在熟悉了检索增强生成(RAG)的核心概念后,我迫不及待地想将我的知识付诸实践。接下来,我开始寻找有助于我有效实施RAG的框架。我开始尝试一些流行的工具,包括LangchainLlamaIndexRAGFlow。这些框架通过结合外部数据检索和强大的生成模型来快速构建RAG相关的应用程序,我会在另一篇博客文章中分享我的经验。

我想更深入地了解RAG及其更高级的主题和概念。我开始阅读关于RAG的研究论文,越读下去,我越发现RAG比我最初想象的要广泛和丰富得多。存在各种不同的RAG,每一种都针对特定的信息检索和生成需求和挑战。

RAG优化(RAG优化技术)

RAG的高级概念

分块技术

  • 简单的分块将文本分成固定长度的字符块,速度快但不考虑文档结构。
  • 句子分割使用NLP工具如NLTK或SpaCy将文本拆分成句子,提供更高的精度。
  • 递归字符文本分割结合字符和结构感知的分块方法,优化块的大小同时保持文档的流畅性。
  • 结构化分块器根据文档结构(例如HTML或Markdown)拆分文本,并添加元数据以提供上下文。
  • 语义分块使用嵌入模型将语义相似的句子分组,形成更连贯的块,但计算成本较高。查看这篇文章以可视化语义分块here

检索算法们在RAG系统中起着关键作用,帮助高效地找到相关的信息。

  • 余弦相似度欧几里得距离 用于衡量向量之间的相似性,而 基于图的检索和生成准确最近邻(k-NN) 则用于查找相关信息。
  • HNSW产品量化(PQ) 通过创建可扩展的图结构和减少存储需求来优化搜索过程。
  • 局部敏感哈希(LSH) 通过哈希相似的向量来加速查找,而 BM25,一种基于词的算法,则根据查询词的频率和相关性对文档进行排名。

检索类型在RAG系统中使用以提升信息检索的质量和相关度如下:

  1. GPT排名:查询向量数据库后,系统让LLM按照查询的相关性对检索到的文档进行排序。重新排序的文档随后回送LLM进行最终处理,从而提升响应质量。

  2. 多查询:这种方法不依赖单一查询,而是先将用户的查询发送给大语言模型(LLM),让其提出更多相关的查询。然后使用这些新查询从数据库中获取更多相关信息,从而丰富响应。

  3. 文档摘要:LLM被要求提取并提供文档中最关键的内容,减少处理的背景信息。这有助于优化输入到LLM的数据,确保更专注和高效的回复。

  4. 假设文档生成:LLM 会被要求生成一份能够最好地回答查询的“假设”文档。这份假设文档然后会被用作提示,从数据库中检索相关资料,从而使回复更符合用户的需求。

RAG评估依赖于一组关键指标来评估检索增强生成输出的质量。这些指标确保响应不仅准确,还紧密关联到检索到的信息上下文中。

  1. 上下文相关性:这衡量检索到的文档是否真正与用户的查询相关联。如果内容无关,最终的回复很可能会不准确或不完整。

  2. 相关性:这检查模型的回答是否有效地回应了查询。即使背景信息相关,回答也必须直接与问题相关才有用。

  3. 立足性:这确保回复基于检索到的上下文提供了充分的支持。立足的回复指的是由相关文档中的信息明确支持的回复,避免出现虚构或捏造的细节。

这里有一些资源可以让你开始探索高级RAG。

  • RAG Techniques:一个GitHub仓库,汇集了RAG系统相关技术、方法和最佳实践。
  • 超越RAG基础:超出现有RAG技术的高级主题和概念。

向量数据库

如果你已经研究过RAG(检索增强生成),你可能已经知道向量数据库在优化检索和生成过程中的重要性。向量数据库存储数据的高维表示——这些嵌入向量能够快速进行相似性搜索,并高效地检索相关信息。

与依赖关键词匹配的传统数据库不同,向量型数据库使用算法来计算向量空间中数据点之间的接近程度(例如余弦相似度或欧几里得距离),因此非常适合处理文本、图像和音频等非结构化信息。

一些流行的向量数据库方案有:

  • Qdrant
  • Pinecone
  • Weaviate
  • Faiss(Facebook 开发的)
  • Milvus
  • Chroma(一款软件)

在了解向量数据库如何运作前,了解嵌入的概念非常重要,因为嵌入是数据在向量数据库中的表示和搜索的基础。嵌入能够捕捉数据的语义含义并将其映射到高维空间。这些嵌入让算法可以比较不同数据点之间的相似性,这对语义搜索和推荐系统等应用来说非常重要。

这里有一些很好的资源可以了解嵌入技术:

  • 视频:词嵌入和Word2Vec,清晰易懂的解释!!!
  • 视频:BERT研究 - 第2集 - WordPiece(词片段)嵌入
  • 文章:什么是嵌入以及它们为什么重要
  • 视频:词嵌入
  • 视频:$0嵌入(OpenAI vs. 免费和开源)

一旦你熟悉了嵌入,研究起来向量数据库就会容易得多,因为大多数核心概念在不同数据库之间是相似的。主要的区别通常在于语法和每个数据库特有的功能。向量数据库被设计用来存储、索引和快速检索高维向量(例如嵌入生成的向量),从而实现高效的相似性搜索。

向量数据库中的高级概念

今天就到这里吧。

现在你已经具备了关于Transformer嵌入式向量数据库技术RAG(检索增强生成技术)的坚实基础,你已经准备好更深入地了解生成式AI。我们所涵盖的概念是理解AI模型如何根据其训练数据进行检索、处理和生成信息的重要基石。

无论你是用RAG构建应用程序,还是探索大规模向量搜索的复杂性,这些资源都会一步步教你搞定这个领域的门道。

期待我下一篇博客,我将深入探讨更高级的主题,如 LLM的结构化输出LLM的可观测性LLM的评估,以及 使用生成式AI的智能代理和项目。这些关键领域将帮助你更好地理解和应用大型语言模型,让你能够创建更加复杂、高效且可靠的AI系统。敬请期待更多精彩内容即将发布!

祝你玩得开心,直到那时为止!😊

最后,如果觉得文章有用,请点个赞,拍下手👏并关注我,谢谢你!

如果你发现这些笔记对你有帮助的话,并希望看到更多这样的内容,可以在我的 请我喝杯咖啡 页面支持我。你的支持激励我继续与你分享我的学习之路!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消