Activeloop Deep Memory 是一套工具,使你能够针对你的用例优化向量存储,并在 LLM 应用中实现更高的准确率。
检索增强生成(RAG)最近受到了广泛关注。随着高级 RAG 技术和 agent 的涌现,它们扩展了 RAG 的潜在应用范围。然而,将 RAG 集成到生产环境时可能面临几个挑战。在生产环境中实施 RAG 时需要考虑的主要因素是准确率(召回率)、成本和延迟。对于基本用例,OpenAI 的 Ada 模型配合朴素相似性搜索可以产生令人满意的结果。然而,对于搜索时需要更高准确率或召回率的场景,可能需要采用高级检索技术。这些方法可能涉及变化的数据块大小、多次重写查询等,可能增加延迟和成本。Activeloop 的 Deep Memory 是 Activeloop Deep Lake 用户可用的功能,通过引入一个经过训练以匹配用户查询与语料库相关数据的微型神经网络层来解决这些问题。虽然此添加在搜索期间会产生极小的延迟,但它可以将检索准确率提高高达 27%,且具有成本效益且易于使用,无需任何额外的高级 RAG 技术。
在本教程中,我们将解析 DeepLake 文档,并创建一个可以从文档中回答问题的 RAG 系统。
1. 数据集创建
在本教程中,我们将使用BeautifulSoup 库和 LangChain 的文档解析器(如 Html2TextTransformer、AsyncHtmlLoader)来解析 activeloop 的文档。因此我们需要安装以下库:
BeautifulSoup 解析网页中的所有链接
将数据转换为用户可读格式:
2. 生成合成查询并训练 deep memory
下一步是训练一个 deep_memory 模型,将用户查询与已有数据集对齐。如果你还没有任何用户查询,不用担心,我们将使用 LLM 生成它们!TODO:添加图片
如上图所示,这是 deep_memory 工作的整体架构。如你所见,要训练它,你需要相关性、查询以及语料库数据(我们想要查询的数据)。语料库数据在上一节中已填充,这里我们将生成问题和相关性。questions- 是字符串文本,每个字符串代表一个查询relevance- 包含每个问题的真实答案链接。可能有多个文档包含给定问题的答案。因此,relevance 是List[List[tuple[str, float]]],外层列表代表查询,内层列表代表相关文档。元组包含字符串-浮点数对,其中字符串表示源文档的 ID(对应数据集中的id张量),浮点数表示当前文档与问题的相关程度。
3. 评估 deep memory 性能
太好了,我们已经训练好了模型!它在召回率上显示出相当大的提升,但现在我们如何使用它并在未见过的新数据上进行评估呢?在本节中,我们将深入探讨模型评估和推理部分,了解如何与 LangChain 配合使用以提高检索准确率。3.1 deep memory 评估
首先,我们可以使用 deep_memory 内置的评估方法。它计算几个recall 指标,只需几行代码即可完成。
3.2 deep memory + RAGas
3.3 deep memory 推理
TODO:添加图片
使用 deep_memory3.4 deep memory 成本节省
Deep Memory 无需改变你现有的工作流程即可提高检索准确率。此外,通过减少输入到 LLM 的 top_k,你可以通过减少 token 使用量来显著降低推理成本。通过 MCP 将这些文档连接到 Claude、VSCode 等以获取实时答案。

