本地部署企业级自适应 RAG 应用的方法与实践

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 本文介绍了本地部署企业级自适应RAG(Adaptive Retrieval-Augmented Generation)应用的方法与实践。RAG结合信息检索与文本生成,广泛应用于问答、编程等领域。自适应RAG通过分类器评估查询复杂度,动态选择无检索、单步检索或多步检索策略,优化生成结果。其特点在于灵活性和适应性,能够根据输入情况调整检索和生成策略。核心技术包括检索策略的自适应、生成策略的自适应以及模型参数的自适应调整。通过实战,深入了解了RAG的工作原理和应用场景,并获得了宝贵经验。

本地部署企业级自适应 RAG 应用的方法与实践


Adaptive RAG(Adaptive Retrieval-Augmented Generation) (自适应检索增强生成)

RAG(Retrieval-Augmented Generation)(检索增强生成)

Adaptive RAG 是对 RAG 的改进和扩展,它能够根据不同的输入情况和任务需求,自适应地调整检索和生成的策略。其特点在于具有更强的灵活性和适应性,能够动态地适应各种变化,以优化生成结果。

  1. 技术迭代:自2020年提出以来,RAG系统不断优化和迭代,以解决实际应用中遇到的问题。例如,朴素RAG(Naive Rag)主要由索引、检索和生成三部分组成;高级RAG(Advance Rag)围绕预检索和后检索提出了多种优化策略;模块化RAG(Modular Rag)引入多个具体的功能模块,表现出更大的灵活性。
  2. 应用场景:RAG技术在问答、编程等领域有广泛应用。在问答领域,RAG技术能够结合外部知识库,为用户的提问提供准确、个性化的回答。在编程领域,RAG技术可以辅助代码生成、代码补全等任务,提高开发效率。

原理介绍

工作原理:Adaptive RAG通过引入一个分类器来评估查询的复杂度,并根据复杂度选择最合适的检索策略。这种方法不仅可以处理简单的单步查询,还能应对需要多步推理的复杂查询。具体来说,Adaptive RAG采用以下三种策略来应对不同复杂度的查询:

  • 无检索策略:适用于可以直接由模型回答的简单查询,无需外部检索。
  • 单步检索策略:用于那些需要外部信息来回答的中等复杂查询。这种策略会从外部知识库中检索相关文档,将其作为模型的输入,从而提高答案的准确性。
  • 多步检索策略:面对复杂的多步查询时,系统会多次检索相关文档,并结合前一轮的输出进行推理,最终生成准确的答案。

自适应的实现方式

  • 检索策略的自适应:根据输入问题的复杂性、领域特点、用户需求等因素,自动调整检索的范围、深度和方法。例如,对于专业性很强的问题,它会更侧重于从专业知识库中检索;对于模糊或宽泛的问题,会扩大检索范围并综合多个来源的信息。
  • 生成策略的自适应:根据检索到的信息质量、数量以及任务的要求,动态调整生成器的参数和生成方式。比如,如果检索到的信息比较丰富和准确,生成器会更多地基于这些信息进行生成;如果信息不足或不够准确,生成器会结合自身的先验知识进行合理的推测和补充。
  • 模型参数的自适应调整:通过强化学习、元学习等技术,根据生成结果的反馈,自动调整模型的参数,以提高模型在不同场景下的性能。例如,根据用户对回答的满意度、准确性评估等反馈信息,调整检索器和生成器的权重、超参数等,使模型能够更好地适应实际应用中的各种情况。

Adaptive RAG的实践步骤

  • 查询复杂度评估:使用一个小型的语言模型(称为分类器)来预测输入查询的复杂度,并将查询分为三类:简单(A)、中等(B)和复杂(C)。
  • 策略选择:根据查询的复杂度,框架动态选择从最简单的非检索方法到单步检索方法,再到多步检索方法的策略。
  • 检索执行:对于需要检索的查询,框架将执行检索模块,从外部知识库中检索相关信息,并将这些信息传递给LLM。
  • LLM处理:LLM利用检索到的信息生成答案。

LangSmith 是由 LangChain 自主研发的用于 LLM 应用程序开发、监控和测试的平台

主要功能

  • 模型管理:可以轻松管理语言模型的多个版本,跟踪其性能表现,并能无缝进行更新,方便开发者对模型进行优化和迭代。
  • 工作流编排:支持通过可视化界面或代码设计复杂的 NLP 工作流,能够集成各种模型和服务,使开发者可以根据具体需求灵活构建和调整工作流程。
  • 部署:能够将模型和工作流以最小配置部署到不同环境中,确保应用程序在不同的生产环境中稳定运行,提高了部署的效率和便捷性。
  • 可扩展性:具备良好的横向扩展能力,可以处理大量的数据和请求,满足企业级应用在高并发场景下的需求。
  • 监控与日志记录:能够实时跟踪模型性能、使用统计信息和错误日志,为开发者提供全面的可观测性,帮助其及时发现和解决潜在问题,提升应用的可靠性和稳定性。

Adaptive RAG核心逻辑

核心代码

在 Retrieval-Augmented Generation (RAG) 中,文档相关性评价扮演着极为关键的核心角色:

  • 提升生成质量:RAG 系统结合信息检索与文本生成,相关性评价能筛选出与用户查询高度适配的文档片段。只有引入精准、相关的知识,语言模型后续生成的回复才会内容详实、切题精准,避免输出含混、偏离主题的内容,显著提升生成文本的质量与可靠性。
  • 优化检索效果:持续对检索出的文档做相关性评判,能够反馈给检索模块,告知哪些检索结果是真正契合需求的,哪些存在偏差。以此为依据,检索算法得以迭代优化,后续检索时更精准定位高相关性文档,让整个 RAG 流程更为高效。
  • 增强用户信任:用户向 RAG 系统发起询问时,期望获得靠谱、直接关联问题的回应。相关性评价保障输出内容和问题紧密相关,使用户快速得到有效信息,每一次精准交互都会累积用户对系统的信任,促使他们持续使用。
  • 控制成本与效率:RAG 系统往往会调用外部知识源,不加筛选检索大量文档耗时又耗资源。相关性评价机制提前甄别,只推送最相关的少部分文档进入生成环节,在降低数据传输、处理成本的同时,加速整个响应流程,让系统运行得更高效经济。

def grade_documents(state):

   print("---检索文档是否与问题相关---")

   question = state["question"]

   documents = state["documents"]

   filtered_docs = []

   web_search = "No"

   for d in documents:

       doc_grader_prompt_formatted = doc_grader_prompt.format(

           document=d.page_content, question=question

       )

       result = llm.invoke(

           [SystemMessage(content=doc_grader_instructions)]

           + [HumanMessage(content=doc_grader_prompt_formatted)]

       )

       grade = json.loads(result.content)["binary_score"]

       if grade.lower() == "yes":

           print("---GRADE: 是相关文档---")

           filtered_docs.append(d)

       else:

           print("---GRADE: 不是相关文档---")

           web_search = "Yes"

           continue

   return {"documents": filtered_docs, "web_search": web_search}

def web_search(state):

   print("---网络搜索---")

   question = state["question"]

   documents = state.get("documents", [])

   # Web search

   docs = web_search_tool.invoke({"query": question})

   web_results = "\n".join([d["content"] for d in docs])

   web_results = Document(page_content=web_results)

   documents.append(web_results)

   return {"documents": documents}

环境配置

LangSmith使用不在这里介绍了

加载本地模型

ollama run qwen2.5

安装相应的依赖库

pip install -r requirements.txt

小结

通过本次实战,我了解了RAG模型的工作原理和训练方法,并获得了宝贵的实践经验。

Retrieval-Augmented Generation(RAG)作为一种结合信息检索与文本生成的技术,拥有极为广泛的应用场景:

  • 智能问答系统
  • 企业客服:企业客服场景下,客户咨询的问题繁杂多样,诸如产品功能、售后政策、使用故障等。RAG 系统能快速检索企业知识库,里面涵盖产品手册、常见问题解答、过往案例,再基于检索的精准知识生成贴合客户疑问的回答,减少人工客服介入,提升响应效率与服务质量。
  • 智能助手:像手机、智能音箱搭载的语音助手,用户提问跨度极大,从生活常识到娱乐资讯。RAG 借助外部知识源检索,补充助手原本有限的预训练知识,回答诸如 “附近有哪些评价高的火锅店” 这类需要实时、本地化知识的问题。
  • 内容创作辅助
  • 新闻写作:记者在撰写新闻稿件,尤其是突发、专题类新闻时,RAG 可从海量的新闻数据库、政府报告、权威调研中检索事实依据、背景资料,为记者快速搭建写作框架,填充关键内容,加速稿件产出,同时保证内容的真实性与丰富度。
  • 学术写作:学生与科研人员撰写论文、报告时,RAG 帮忙搜索相关领域文献、经典案例,把检索成果融入写作流程,既能助力新手快速上手课题研究,也能为资深学者节省资料搜集时间,辅助梳理写作思路。
  • 知识图谱填充与更新
  • 知识图谱构建:在初始搭建知识图谱时,RAG 从各类非结构化文本,如百科全书、行业博客、学术论文里检索实体关系信息,挖掘新知识,转化为图谱里的节点与连线,拓展图谱覆盖范围。
  • 动态更新:知识图谱需要与时俱进,RAG 定期检索最新资讯,识别对已有图谱节点、关系产生影响的新知识,及时更新,保证图谱反映当下最新的知识状态。
  • 代码生成与辅助编程
  • 代码示例检索:程序员面对新需求,或是遭遇编程难题时,RAG 能在代码仓库、技术论坛、开源项目文档中检索相似代码示例,提取关键代码片段,结合语言模型生成可用代码思路,辅助攻克技术难点。
  • 文档生成:大型软件项目需要配套详细的技术文档,RAG 检索项目代码结构、函数注释,生成规范清晰的文档框架与内容,减轻程序员撰写文档负担。

参考资料

Retrieval-Augmented Generation for Natural Language Processing: A Survey,作者 Shangyu Wu 等。论文对 RAG 的重要技术进行了综述,包括检索器和检索融合,提供了实现代表性技术的教程代码,还讨论了 RAG 训练、在自然语言处理任务和工业场景中的应用,以及未来方向和挑战。

Retrieval-Augmented Generation for AI-Generated Content: A Survey,作者 Peng Hao Zhao 等。该论文全面回顾了将 RAG 技术集成到人工智能生成内容(AIGC)场景中的现有工作,对 RAG 基础进行了分类,总结了 RAG 的增强方法,调查了其在不同模式和任务中的实际应用,并介绍了基准、讨论了局限性和未来研究方向。

推荐一些有关RAG应用的实战


目录
相关文章
|
9月前
|
存储 人工智能 数据可视化
阿里云向量引擎快速搭建企业级RAG最佳实践
本文介绍了基于阿里云搭建RAG(检索增强生成)应用的技术分享。首先回顾了RAG技术背景及其面临的挑战,如大模型幻觉、知识局限和数据安全问题。接着详细讲解了阿里云提供的RAG技术架构,涵盖数据处理、模型服务和高性能检索引擎等多方面能力。最后,通过自研引擎与开源组件的结合,展示了如何快速构建RAG应用,并提供端到端的最佳实践方案,确保系统在企业级应用中的高效性和成本优化。
|
12月前
|
人工智能 算法 物联网
企业级RAG全链路优化关键技术
本文深入解析了企业级RAG全链路的关键技术、效果优化、性能优化及应用实践。
2014 2
企业级RAG全链路优化关键技术
|
9月前
|
人工智能 API 数据库
Cognita:小白也能搭建 RAG 系统,提供交互界面的开源模块化 RAG 框架,支持多种文档检索技术
Cognita 是一个面向生产环境的开源模块化 RAG 框架,支持本地部署、无代码 UI 和增量索引,帮助开发者轻松构建和扩展生产级应用。
483 11
Cognita:小白也能搭建 RAG 系统,提供交互界面的开源模块化 RAG 框架,支持多种文档检索技术
|
12月前
|
人工智能 算法 数据安全/隐私保护
基于文档智能和百炼平台的RAG应用-部署实践有感
本文对《文档智能 & RAG让AI大模型更懂业务》解决方案进行了详细测评,涵盖实践原理理解、部署体验、LLM知识库优势及改进空间、适用业务场景等方面。测评指出,该方案在提升AI大模型对特定业务领域的理解和应用能力方面表现突出,但需在技术细节描述、知识库维护、多语言支持、性能优化及数据安全等方面进一步完善。
486 1
|
8月前
|
人工智能 自然语言处理 搜索推荐
高性价比| OpenSearch 智能问答版开箱即用 DeepSeek-R1
OpenSearch LLM智能问答版基于DeepSeek-R1一分钟搭建RAG系统。
1453 11
高性价比| OpenSearch 智能问答版开箱即用 DeepSeek-R1
|
8月前
|
存储 人工智能 数据库
面向教育场景的大模型 RAG 检索增强解决方案
检索增强生成模型结合了信息检索与生成式人工智能的优点,从而在特定场景下提供更为精准和相关的答案。以人工智能平台 PAI 为例,为您介绍在云上使用一站式白盒化大模型应用开发平台 PAI-LangStudio 构建面向教育场景的大模型 RAG 检索增强解决方案,应用构建更简便,开发环境更直观。此外,PAI 平台同样发布了面向医疗、金融和法律领域的 RAG 解决方案。
|
7月前
|
弹性计算 人工智能 架构师
一文揭秘|如何速成RAG+Agent框架大模型应用搭建(二)
一文揭秘|如何速成RAG+Agent框架大模型应用搭建
496 4
|
9月前
|
存储 人工智能 API
七种RAG架构cheat sheet!
RAG 即检索增强生成,是一种结合检索技术和生成模型的人工智能方法。Weaviate厂商给出了七种RAG架构cheat sheet。
607 18
|
9月前
|
人工智能 自然语言处理 数据处理
FlexRAG:不再局限于文本的 RAG!中科院开源多模态 RAG 助手,支持多数据类型、上下文压缩和多种检索器类型
FlexRAG 是中科院推出的高性能多模态 RAG 框架,支持多数据类型、上下文压缩和多模态数据处理,显著提升生成模型的表现。
1055 17
FlexRAG:不再局限于文本的 RAG!中科院开源多模态 RAG 助手,支持多数据类型、上下文压缩和多种检索器类型
|
8月前
|
人工智能
RAG没有银弹!四级难度,最新综述覆盖数据集、解决方案,教你LLM+外部数据的正确使用姿势
在人工智能领域,大型语言模型(LLM)结合外部数据展现出强大能力,尤其检索增强生成(RAG)和微调技术备受关注。然而,不同专业领域的有效部署仍面临挑战,如准确检索数据、理解用户意图等。综述文章《Retrieval Augmented Generation (RAG) and Beyond》提出RAG任务分类方法,将用户查询分为四个级别,并探讨了外部数据集成的三种形式:上下文、小型模型和微调。文章提供了宝贵见解和实用指导,帮助更好地利用LLM潜力解决实际问题。论文链接:https://arxiv.org/abs/2409.14924
253 6