较为基础的 RAG 概念介绍和实现思路,适合初学者快速上手,但缺乏深度的系统设计和优化讨论。
回溯到 2013 年,AI 的面貌完全不同。当时的热点是简单的神经网络,这些基础构建块为未来的进步铺平了道路。那时候,如果能在 MNIST 上快速训练并获得好成绩,人们就已经很满足了。
后来,我们有了能在图像识别和语音识别等领域执行任务的深度神经网络,性能超越了传统算法。
但真正的转折点出现在 2022 年 11 月。当 OpenAI 推出 ChatGPT 时,它席卷全球。仅用 2 个月就吸引了 1 亿多用户,这是互联网和 AI 历史上最重要的时刻。
这不仅因为它能执行多种任务,还因为它的能力让很多人感到惊讶。此后,大型语言模型(LLM)风靡全球,我们看到 AI 初创公司和企业开发自己的大型语言模型的浪潮。
由此产生了一个问题:有没有可能让任何人使用自己的数据,传递给 LLM,并让它即时生成见解?
但在此之前,我们先讨论一下当前 AI 大型语言模型面临的挑战。
虽然大型语言模型表现得确实很好,但依赖它们更具挑战性。看看这个标题:
ChatGPT 真的夺走了这个人的工作。
如果你是 LLM 的常规用户或曾尝试测试它的极限,你应该注意到了一个严重问题:幻觉(Hallucination)。这是指大型语言模型开始基于其创意生成答案和事物,无论这些是否存在。在上面的例子中,ChatGPT 提供了不存在的参考案例。
这让企业、医院和其他商业机构不敢立即在日常工作中引入 AI 模型。然而,幻觉并不是最先进大型语言模型面临的唯一问题,还有更多。以下是一份清单 👇
上下文窗口: 存在一个训练截止点,之后训练就停止了。因此,这限制了 AI 模型在该日期之后生成任何内容的能力。
过时的训练数据: 数据是动态的,事实是静态的。为了跟上不断的变化,我们需要重新训练 AI 模型,这又引发了第三个问题。
成本: AI 模型不是坐在硬盘上的。它们需要 RAM、CPU 和 GPU 来运行和训练。这些都是昂贵的;重新训练大型语言模型的硬件费用会迅速飙升。
准确性和偏差: LLM 容易因训练数据中的偏见、缺乏常识推理和模型的训练方式而出错。这还取决于工程师团队。
LLM 黑客攻击和劫持: 最近的研究开始表明 LLM 可能被黑客攻击并被迫泄露潜在危险信息。
像任何其他软件一样,这些 AI 模型并不完美,但不断努力变得更好。现在让我们了解什么是 RAG 及其重要性。
检索增强生成(RAG)是人工智能领域的一个最近创新。它是一种开域问答形式,结合了检索器和生成式 AI 模型。它将搜索系统与 ChatGPT、Llama2 等 AI 模型结合在一起。使用 RAG,系统在庞大的知识库中搜索最新的数据和文章。然后这些数据被 AI 用来提供精确的答案。这种方法有助于减少 AI 响应中的错误并提供更加定制化的解决方案。
所以,使用 RAG,检索器或搜索器可以从非常大的知识库中访问最新的数据、来源和其他重要文章。然后它将这些作为输入提供给生成式 AI 模型。因此称为"检索增强生成"。这种方法使大型语言模型能够利用庞大的知识库并提供相关且准确的信息。
这显著改善了大型语言模型面临的幻觉问题,并能为你提供量身定制的答案。
当前一代 AI 模型有一个截止期限,之后它们就停止训练。因此,当我要求有关该日期之后发生的事件时,检索最新信息可能是个挑战。
看看这个例子。向 ChatGPT 询问关于 BUN 的信息
我建议你查阅官方文档或代码仓库、技术新闻网站或相关社区论坛。
我们能否直接把这些文档、仓库、网站和社区论坛的文本发送到 ChatGPT 中,获取相关答案呢?RAG 就可以做到这一点。
不仅是关于 BUN。如果以同样的方式,你想查询你公司的数据并了解与你自己数据相关的见解和答案,而不将其公开呢?
这正是检索增强生成大放异彩的地方,并提供带有来源的答案。而在连接多个数据源的问题上,Swirl 可以快速帮你解决。
连接到各种数据源。
Swirl 可以通过 ChatGPT 执行查询处理。
通过 spaCy 的大型语言模型重新排名并获取前 N 个答案。(余弦相关性处理器)
我们理解对于企业客户来说,时间至关重要。Metapipe(企业版)为企业客户提供快速的 RAG 流水线设置,提供快速答案。如果你想进一步了解 Metapipe(企业版)如何能使你的组织受益,不要犹豫,联系 Swirl 团队了解更多信息。
微调大型语言模型意味着在数据集上重新训练任何大型语言模型,使其在子任务上表现出色。人们已经对 LLaMa2 LLM 进行了微调,用于各种任务,如编写 SQL、Python 代码等。参考文献
虽然这对于具有大量且静态数据的任务(如 Python 语法、SQL 等)很有效……但当你想在新事物上训练它时,或者当没有大型数据集可用时,问题就出现了。如果数据集不断变化,你必须重新训练模型以跟上变化。而这是昂贵的。
考虑用 BUN、Astro、Swirl 或你公司的文档来编码。还要注意,微调使其在特定任务上表现出色。可能的情况是你无法访问来源或获得该来源的相关引用。
回答这些问题:
你是否拥有训练大型语言模型所需的工程师和硬件?
你是否拥有从大型语言模型获得好答案所需的数据?
如果这三个问题中的任何一个的答案是"否",那么你需要重新考虑微调。并选择一个更好、更易接近的替代方案。
小型文档。
文章、研究论文、博客。
新创建的代码库等。
从它们中生成答案比你想象的要容易。虽然有许多选项可以用来创建 RAG 流水线,但 Swirl 使检索和生成两个部分都更简单。Swirl 可以搜索并从搜索查询和软件模型中提供前 N 个最佳答案。查看我们的 GitHub。
但如果你是企业客户,Swirl 的 Metapipe 可以提供一个更快速的方式来生成答案。后者面向企业客户,而前者保持开源。
Swirl 是一个用 Python 🐍 编写的开源库。我们在寻找帮助构建这个软件的人。寻找能够以下工作的出色人才:
创建优秀的文章、增强我们的 readme、UI 等。
通过添加连接器或搜索提供商进行贡献。
加入我们的 Slack 社区。
如果你能在 GitHub 上给我们一个 🌟,那将意义重大。这能让团队保持动力。🔥
swirlai / swirl-search
AI 搜索和 RAG,无需移动你的数据。从 100+ 个应用获取公司知识的即时答案,同时保持数据安全。部署时间以分钟计,而不是数月。
为你的团队提供 ChatGPT 级别的搜索,无需将数据迁移到云端
在 60 秒内使用 One Drive 和 Microsoft 365 的 RAG
提问 → 获取带有来源的答案 → 点击跳转到来源
使用 SWIRL 的团队平均每周节省 7.5 小时的生产时间。
⚡ 快速开始 · 🔌 连接器 · 🤝 贡献
跳过复杂性,保留能力
设置向量数据库
复杂的 ETL 流水线
数周的基础设施工作
企业级安全
# No need for:
$ setup-vector-db
$ migrate-data
$ configure-indexes
# Just this:
$ curl https://raw.githubusercontent.com/swirlai/swirl-search/main/docker-compose.yaml -o docker-compose.yaml
💡 用 SWIRL 能构建什么?
使用 SWIRL 的团队构建的实际案例:
🔍 知识库搜索
如需采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为