一种简单的技术使 RAG 的内存效率提高了 ~32 倍! - Perplexity 在其搜索索引中使用它 - Azure 在其搜索管道中使用它 - HubSpot 在其 AI 助手中使用它 让我们了解如何在 RAG 系统中使用它(附代码):
今天,让我们构建一个 RAG 系统,使用二进制量化在 <30ms 内查询 3600 万个以上的向量。 技术栈: - @llama_index 进行编排 - @milvusio 作为向量数据库 - @beam_cloud 进行无服务器部署 - @Kimi_Moonshot Kimi-K2 作为托管在 Groq 上的 LLM 让我们开始构建吧!
工作流程如下: - 导入文档并生成二进制嵌入。 - 创建二进制向量索引并将嵌入存储在向量数据库中。 - 检索与用户查询最相似的前k个文档。 - LLM根据额外的上下文生成响应。 让我们实现这个!
0️⃣ 设置 Groq 在我们开始之前,请将您的 Groq API 密钥存储在 .env 文件中,并将其加载到您的环境中,以利用世界上最快的 AI 推理。 查看这个 👇
1️⃣ 加载数据 我们使用 LlamaIndex 的目录读取工具来获取我们的文档。 它可以读取多种数据格式,包括 Markdown、PDF、Word 文档、PowerPoint 演示文稿、图像、音频和视频。 查看这个 👇
2️⃣ 生成二进制嵌入 接下来,我们生成文本嵌入(以 float32 格式)并将其转换为二进制向量,从而实现内存和存储的 32 倍减少。 这被称为二进制量化。 查看此实现 👇
3️⃣ 向量索引 在我们的二进制量化完成后,我们将向量存储并索引到 Milvus 向量数据库中,以便高效检索。 索引是专门的数据结构,有助于优化数据检索操作的性能。 查看这个 👇
4️⃣ 检索 在检索阶段,我们: - 嵌入用户查询并对其应用二进制量化。 - 使用汉明距离作为搜索度量来比较二进制向量。 - 检索最相似的前5个块。 - 将检索到的块添加到上下文中。 查看这个👇
5️⃣ 生成 最后,我们使用 Kimi-K2 指令模型构建一个生成管道,该模型在 Groq 提供的最快 AI 推理上运行。 我们在提示模板中指定查询和检索的上下文,并将其传递给 LLM。 查看这个 👇
6️⃣ 使用 Beam 部署 Beam 使得任何 AI 工作流的超快速无服务器部署成为可能。 因此,我们将应用程序包装在 Streamlit 界面中,指定 Python 库和容器的计算规格。 最后,我们只需几行代码即可部署应用程序👇
7️⃣ 运行应用程序 Beam 启动容器并将我们的 streamlit 应用程序部署为 HTTPS 服务器,可以通过网络浏览器轻松访问。 查看此演示 👇
接下来,为了真正评估规模和推理速度,我们在 PubMed 数据集(超过 3600 万个向量)上测试了部署的设置。 我们的应用: - 在 <30ms 内查询了超过 3600 万个向量。 - 在 <1s 内生成了响应。 查看这个演示👇
完成! 我们刚刚构建了最快的 RAG 堆栈,利用 BQ 进行高效检索,并使用超快速的无服务器部署我们的 AI 工作流。 这是工作流供您参考 👇
结束了! 如果你觉得这很有启发性,请与您的网络分享。 找到我 → @_avichawla 每天,我都会分享关于数据科学、机器学习、大型语言模型和检索增强生成的教程和见解。
Avi Chawla
Avi Chawla8月4日 14:33
一种简单的技术使 RAG 的内存效率提高了 ~32 倍! - Perplexity 在其搜索索引中使用它 - Azure 在其搜索管道中使用它 - HubSpot 在其 AI 助手中使用它 让我们了解如何在 RAG 系统中使用它(附代码):
695.78K