什么是 RAG
Retrieval-Augmented Generation 增强检索功能的 AI 模型能力的技术框架。它结合的信息检索 & 内容生成:
- 检索 (Retrival) 阶段:从外部知识库中检索与当前问题或上下文相关的文档或段落。
- 生成 (Genaration) 阶段:将检索到的信息与 AI 模型结合,生成更准确、更相关的输出。
RAG 技术框架实现的 AI 的作用是:
- 减少幻觉(Hallucination) :通过检索外部知识,确保生成内容基于真实信息。
- 提升上下文理解:结合外部知识,使生成内容更符合上下文。
RAG 是一种系统。LLMs 是在庞大的数据集上进行训练以学习一般知识的。然而,它们可能没有在相关和最新的数据上进行训练。RAG 通过从您的数据中查找和检索相关信息,并将其提供给 LLM 来解决这个问题。
RAG 5个关键阶段
详见 LlamaIndex
5 阶段构成了构建的大多数更大型应用程序。
- Loading:
从外部获取数据,无论是文本文件、PDF 文件、另一个网站、数据库还是 API,并将其导入到你的工作流程中。LlamaHub 提供了数百种可选择的集成。输出是原始 Document 对象列表。
【你应该熟悉 LlamaHub 加载器和 LlamaParse 解析器(来源于LlamaIndex 框架),以处理更复杂的数据源。】
- Indexing:
使用 Embedding 模型将数据转化为 vector(vector embeddings)。然后将向量和文本存储到索引结构中(如 VectorStoreIndex)。输出是可查询的 Index 对象
- Storing:
一旦你的数据被索引,你将想要存储你的索引,以及其他元数据,以避免重新索引它。
- Querying:
对于任何给定的索引策略,你可以利用 LLMs 和 LlamaIndex 数据结构以多种方式查询,包括子查询、多步骤查询和混合策略。
- Evaluation:【?】
什么是 Agentic RAG
Agentic RAG 是 RAG 的一种扩展形式,是进化版本,它在 RAG 的基础上引入了 AI Agent。 RAG 本身并不具备 AI Agent 的自主决策能力。
Traditional RAG systems: 通常是静态的,检索和生成过程相对固定。例如,给定一个问题,系统会检索相关的文档片段,然后将这些片段与问题一起输入到生成模型中,生成答案。
Dynamic knowledge retrieval: 指的是可以根据当前的任务和上下文,动态地调整检索策略和知识来源。这意味着系统可以根据需要,从不同的知识库中检索信息,并根据检索结果调整后续的检索策略。
所以 Agentic RAG 的原理是:
- 自主规划: 根据用户的问题,自主地制定检索和生成策略。例如,代理可以决定先检索哪些知识库,然后根据检索结果调整后续的检索方向。
- 动态检索: 根据当前的任务和上下文,动态地调整检索策略和知识来源。例如,代理可以根据用户的问题,从不同的知识库中检索信息,并根据检索结果调整后续的检索策略。
- 迭代生成: 通过多次迭代,逐步完善生成的文本。例如,代理可以先生成一个初步的答案,然后根据用户的反馈和检索到的更多信息,对答案进行修改和完善。
比喻:传统的 RAG 就像一个固定的流水线,而 Agentic RAG 则像一个智能的探险家,能够根据环境的变化,自主地探索和发现知识。
KAQ:关于自主规划,Agent 可以决定先检索哪些知识库。Agent 如何决定先检索哪些知识库?这是如何实现的?
这是Agent 系统中的 控制逻辑决定。
KAQ: 现在的 AI 应用 如 devv.ai 难道不能自己处理复杂的数据源吗?需要用户使用以上工具帮你解析?
是的。直接处理所有类型的复杂数据源仍然有一些挑战:
可以将 Devv.AI 看作是一个强大的 AI 引擎,而 LlamaHub 和 LlamaParse 则是 “数据燃料” 的提供者。 Devv.AI 可以使用这些 “燃料” 来驱动各种 AI 应用。所以 Devv.AI 需要处理的是用户处理过的,格式化的数据,最原始的非格式化的数据,它是不能直接处理的。
比如场景: 用户想要使用 Devv.AI 分析一份 PDF 格式的财务报告。
- 步骤 1: 用户使用 LlamaParse 解析器将 PDF 文件转换为结构化的数据,例如提取表格数据、文本数据等。
- 步骤 2: 用户将结构化的数据导入到 Devv.AI 中。
- 步骤 3: Devv.AI 使用其 AI 算法对数据进行分析,例如生成财务报告摘要、预测未来趋势等。
所以 Devv.ai 更像是套壳的 LLM。