点这里👇星标关注,获取最新资讯!
01
概述
02
主要内容摘要
查询分类:通过分类任务决定是否需要进行检索,确保系统只在必要时检索外部数据。
数据分块:为数据选择合适的块大小至关重要,理想的块大小在 256 至 512 个 token 之间,有助于减少噪音和提高效率。
元数据与混合搜索:元数据(如标题或关键词)与混合搜索(结合语义搜索和传统关键词搜索 BM25)可显著提升检索精度。
嵌入模型选择:挑选适合的嵌入模型,文章推荐使用像 FlagEmbedding 这样性能与效率均衡的模型。
向量数据库:使用像 Milvus 这样的高性能向量数据库来处理大量检索请求,确保系统的长期稳定性。
查询转换:在检索前进行查询转换以提高准确性,如通过查询重写或分解复杂问题,改进系统的检索表现。
重新排序与文档打包:在文档检索后,通过 reranking 技术提升结果的相关性,并进行文档重新打包,以优化信息呈现。
摘要:生成之前进行文档摘要,有助于去除冗余信息,降低生成成本。
微调生成模型:通过对生成模型进行微调,提高模型处理复杂查询和去除无关信息的能力。
多模态检索:整合多模态技术处理图像查询,并基于类似内容进行检索,进一步提高系统的响应准确性。
03
意见
Wang 等人的研究被认为是 RAG 系统的“洞察金矿”。
查询分类对于确定何时需要检索至关重要。
数据的最佳块大小介于 256 到 512 个令牌之间,但可能因数据集而异。
元数据和混合搜索是高效检索的首选,而不是 HyDE 等更复杂的方法。
建议使用 FlagEmbedding 的 LLM,因为它在性能和大小之间取得了平衡。
Monot5 是最受欢迎的重新排名模型,因为它在性能和效率之间取得了平衡。
建议以“相反”的顺序重新打包文档,以改进 LLM 的生成过程。
像 Recomp 这样的摘要工具对于减少提示长度和成本很有价值。
使用相关文档和随机文档的混合来微调生成器有利于处理不相关的信息。
多模态检索是处理文本和图像的系统的一个重要考虑因素。
该论文承认了未来研究的局限性和领域,例如猎犬和发电机的联合训练。
04
探索每个组件
那么,是什么让 RAG 系统真正成为顶级的系统呢?是组件,对吧?让我们回顾一下最好的组件以及它们的工作原理,这样您也可以使您的 RAG 系统成为顶级系统并获得多模式奖励。
05
查询分类
Wang 等人创建了 15 个任务类别,确定查询是否提供了足够的信息或是否需要检索。他们训练了一个二元分类器来分隔任务,在不需要检索的地方标记为“sufficient”,在需要检索时标记为“insufficient”。在此图像中,黄色表示不需要,红色表示去获取一些文档!
06
分块
07
元数据和混合数据
08
嵌入模型
09
向量数据库
10
查询转换
在检索之前,您必须 转换 这些用户查询!无论是通过 查询重写 以使其清晰,还是通过查询 分解 将复杂问题分解为更小的问题并检索每个子问题,甚至生成伪文档(如 HyDE 所做的_)并在检索过程中使用它们,此步骤对于提高准确性都至关重要。请记住,更多的转换可能会增加延迟,尤其是 HyDE..
11
重新排名
12
文档重新打包
13
综述
使用 Recomp 等工具进行抽取压缩以选择有用的句子,并使用抽象压缩来综合来自多个文档的信息。但是,如果速度是您的首要任务,您可以考虑跳过此步骤。
14
微调生成器
15
多模态
16
结论
我强烈建议您查看完整的论文以获取更多信息。我们最近还出版了《Building LLMs for Production》一书,其中充满了 RAG 和微调见解、技巧和实际示例,可帮助您构建和改进基于 LLM 的系统。该链接也位于下面的实体书和电子书版本的描述中。
一如既往,感谢您的阅读。如果您觉得此分析有帮助或有任何评论,请在下面的评论中告诉我,我们下次见!
引用
用于生产的构建LLMs:https://amzn.to/4bqYU9b
Wang et al., 2024 (论文参考):https://arxiv.org/abs/2407.01219
LLM(嵌入模型):https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/llm_embedder
Milvus (vector database):https://milvus.io/
Liu et al., 2024 (文档重新包装):https://arxiv.org/abs/2307.03172
Recomp (摘要工具):https://github.com/carriex/recomp
RagLlmFine Tuning人工智能嵌入