社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

RAG 关键技术及未来趋势发展 | Dify 在 2024 全球机器学习技术大会

Dify • 3 天前 • 13 次点击  

11 月 14-15 日,由 CSDN 与 Boolan 联合主办的「2024 全球机器学习技术大会」成功举行。大会汇聚了来自科技与人工智能领域的数十位顶尖专家以及上千名开发者和研究者,共同探讨大模型技术演进、多模态、GenAI 产品创新等前沿议题,为当下 AI 技术发展与应用提供了深刻洞察与启发。
大会围绕 12 大专题深入探讨大模型技术创新、多模态突破、AI 基础设施建设等热点议题,共同探索人工智能的发展前沿。Dify 首席架构师姜勇受邀参与“大模型系统技术实践”圆桌论坛和“大模型应用框架与工具”分论坛。他与来自不同机构的专家们一起,探讨从底层框架到上层应用的全栈实践,深入剖析 RAG、知识图谱等关键技术的最新进展,更展示了大规模工程实践中的经验与思考,为开发者构建大模型应用提供了系统性的技术方案。

在其主题演讲《RAG 关键技术及未来趋势发展》中,姜勇基于 Dify 在生成式 AI 领域的技术积累和应用实践,提出了一个系统化的 RAG 技术发展框架。他从构建挑战谈到技术演进,再到多模态与长上下文的技术突破,深入分析了该领域的未来发展方向,为开发者和企业用户提供了切实可行的技术参考。

RAG 技术的七大构建挑战

RAG 系统通过结合信息检索与大型语言模型(LLMs),为用户生成上下文相关的高质量回答。然而,姜勇在演讲中引用了 Barnett 等人的研究,指出 RAG 系统在实际应用中面临的七大技术难点,并在后文提供了解决方法。
  1. 内容缺失:当检索文档中缺少关键信息时,RAG 系统应该返回“抱歉,我不知道”的默认回复。然而,如果问题与文档部分相关但缺乏直接答案,系统可能会被误导,生成看似合理却错误的回答。

  2. 遗漏排名靠前的文档:由于检索算法限制及性能考虑,正常检索时会设置一个最大召回数 Top K,这会导致答案可能存在于文档中但未被选入排名前 K 的结果(K 为系统设定的返回文档数量)而未能呈现给用户。

  3. 上下文不一致:由于合并策略的限制,RAG 系统可能在整合多个文档内容时未能保持上下文一致性,尤其在跨文档提取答案时问题尤为突出。

  4. 提取失败:即便答案存在于上下文中,因噪音过多或内容相互矛盾,LLM 可能无法正确提取出需要的信息。

  5. 格式问题:某些问题需要以特定格式(如表格或列表)呈现答案,但 LLM 可能忽略指令,导致用户无法获得所需的结构化结果。

  6. 特异性错误:系统生成的答案可能过于笼统或过于详细,未能契合用户需求。例如,用户需要具体步骤时系统却给出模糊总结。

  7. 信息不完整:在回答涉及多文档要点的问题时,RAG 系统可能遗漏部分关键信息,即便这些信息确实存在于检索上下文中。

RAG 技术发展历程:从基础到高级

在分析了技术挑战后,姜勇梳理了 RAG 技术的发展历程,展示了从基础向量搜索到高级混合检索的技术演进,以及如何逐步提升问答的精准性和上下文处理能力。

基础 RAG:向量搜索与初级探索

早期 RAG 系统以向量检索为核心,通过文档的向量化匹配用户需求,生成简洁的问答内容。2024 年 5 月,Dify 发布首个基础 RAG 系统版本,其直观的交互界面降低了开发者的使用门槛。尽管这一阶段满足了基础问答需求,但在复杂场景中的检索精度和适配能力上仍有局限性。

高级 RAG:混合检索与结果处理

随着技术迭代,RAG 技术迎来了里程碑式的提升,引入了混合检索(Hybrid Retrieve)与结果处理(Result Process):

  • 混合检索:结合嵌入式搜索、全文搜索与知识图谱检索,大幅提升召回率与答案准确性。
  • 结果处理:通过重新排序(Rerank)与优先级重排(Reorder),提高关键文档的利用率。

实验数据显示,采用这些技术的 RAG 系统在处理不同类型查询时表现出显著的性能提升。姜勇强调,对于开放性用户问题(如模糊需求或多跳逻辑),单一检索策略往往难以奏效,因此需要在检索前对问题进行结构化处理。通过引入 Query Transform 工具,利用 LLM 对用户问题进行重写,不仅优化了检索与生成的流程,还显著增强了系统对用户意图的理解能力。姜勇进一步展示了如何利用 Dify 平台的可视化工作流搭建 Query Transform 的完整处理流程。

这一改进显著提升了系统对用户意图的理解。然而,该阶段 RAG 系统仍面临对文档排序敏感性强、超长上下文处理能力不足等瓶颈。

多模态与长上下文 RAG:未来的突破方向

借助 GPT-4 和 Claude-3 等大模型支持的超长上下文能力(最高支持 128K Tokens 以上)以及 Vision 模型的能力大幅提高,RAG 技术在多模态数据处理方面迎来了新机遇。姜勇从技术突破到应用场景,描绘了 RAG 技术的未来蓝图。

他介绍了 Dify 即将上线的 Parent-Child 检索策略,通过建立文档或知识库的“父子层次结构”,实现高效的递归式检索:首先检索出最相关的“父节点”内容(如整个文档或章节);然后在“父节点”范围内进一步检索具体的“子节点”内容(如段落或句子)。这种策略有效提升了检索效率和相关性。

此外,多模态检索的三种实现方式(独立向量空间、统一模态转换、统一向量空间)为图像、文本等异构数据的融合提供了新思路。

姜勇强调,多模态与长上下文 RAG 是技术迈向更深层次实际应用的关键一步,能够为未来生成式 AI 的扩展与落地提供强大支撑。

企业级 RAG:系统化设计与实践

作为企业级应用场景的核心技术,RAG 系统需要在复杂环境下保持高效、稳定与可控。姜勇结合实际案例,分享了 Dify 在 RAG 系统设计中的 六大模块化实践,帮助企业在复杂环境下实现高效、稳定与可控的系统应用::
  1. Observation(实时监控与可视化):通过工具(如 Langfuse)追踪 API 调用与用户交互的全流程数据,优化系统运行。
  2. Evaluation(性能评估):细化监控检索结果与模型成本,确保经济性与高效性,并通过历史数据与评分模型验证用户满意度。
  3. Load Balancing(负载均衡):采用 API 密钥动态分配机制,优化多模型、多任务场景下的调用压力分配。

  4. Semantic Cache(语义缓存):缓存高频查询结果减少重复调用,制定准确或者固定回答,降低成本并提升响应速度。
  5. Moderation(内容安全控制):基于关键词或 API 扩展,通过自动审核功能保障数据隐私与合规性。
  6. Authentication(认证与权限管理):支持复杂权限场景的自定义规则,确保安全协作。

通过以上模块化设计,Dify 为企业用户提供了强大的工具链支持,使 RAG 技术在企业业务场景中更高效、可控。

未来展望:技术创新与场景适配并行

姜勇在演讲的最后强调:“没有最好的检索模式,只有最适合场景的策略。”
他深入分享了对 RAG 技术未来发展的看法,结合实际案例和系统化方法论,为听众提供了清晰的理论框架和落地经验。他指出,RAG 系统的核心是一种基于自然语言的开放域问答技术,其挑战主要在于如何应对“开放域”所带来的数据复杂性与用户需求的多样性。
针对不同文本关系(如语义关系、时间关系、实体关系)的处理,全文检索与向量检索等模式各有优势,并不存在单一的最佳方案。通过灵活组合多种检索策略和动态重排序,不仅能够实现技术的互补,还能最大化检索的召回效果。在系统开发的初期,明确用户画像和潜在问题类型尤为关键,围绕这些问题设计精准的检索路径能够有效提升系统性能。
演讲中,姜勇通过一个基于 Dify 平台搭建的 GraphRAG 案例,展示了如何利用生成式 AI 技术完成 FTA(故障树分析)过程。该案例生动呈现了 Dify 平台在数据处理模块化和自动化分支设计方面的能力。通过结合检索与推理技术,复杂问题得以溯源,且图形化展示进一步增强了用户对多层因果网络的理解。
未来,Dify 将继续专注于技术创新与场景适配并行推进,通过持续的技术迭代,引领生成式 AI 在实际应用中的深度落地,助力开发者与企业全面拥抱智能化时代。

🥳

如果你喜欢 Dify,欢迎:

  • 在 GitHub 上贡献代码,与我们一同共建更好的 Dify;

  • 通过线上线下活动、社交媒体向你的朋友们分享 Dify,以及你的使用经验;

  • 在 GitHub 上给我们点亮⭐️ 

  • https://github.com/langgenius/dify

  • 你也可以扫描下方二维码添加 Dify 小助手加入我们的好友群聊,相互分享使用经验:

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/176390
 
13 次点击