告别无脑检索!RAG查询路由保姆级指南:多数据源精准路由,问答质量提升300%

模块化RAG技术路线图(Modular RAG Technical Map):从基础Naive RAG 到高级Advanced,再到Modular RAG全方位技术解读 阅读详情

在构建复杂的RAG系统中,会存在有多个数据源的情况。你可能有多个向量数据库,或者用不同类型的数据库(图数据库、关系数据库)来存储不同格式的数据。
我们如何根据用户的查询有效的路由到相关的数据源呢?这就是我们今天要关注另一个预检索优化策略–查询路由(Query Routing)。

img

什么是查询路由?

查询路由 就像一个智能决策中心,在收到用户问题后,它会先停下来思考,而不是直接盲目地在所有资料里进行“大海捞针”。它根据用户问题的类型,决定下一步的路径怎么走:是从内部数据库A查找?还是从外部知识库B获取信息?甚至是直接上网搜索。
这个预检索的优化策略,就是为了确保系统从一开始就走在正确的道路上,大大提升了回答的精准度和效率。

常见查询路由方案

逻辑路由(Logical Routing)

逻辑路由就是来负责决定用户的查询问题应该交给谁来处理。当系统接收到用户查询后,通过大模型来分析和语义理解,然后从它预先掌握的所有数据源的信息和特点中,挑选出最相关、最匹配的那一个,最终将查询交给它来处理。
比如下面图片中的流程中显示,大模型针对用户的查询进行分类,判断与哪个数据库中的内容最相关,是图数据库还是向量数据库?然后决定去哪个数据源中检索。

img

以下是用LangChain实现的逻辑路由的代码示例:

import os
from dotenv import load_dotenv
from langchain_core.prompts import ChatPromptTemplate
from langchain_deepseek import ChatDeepSeek

# 加载环境变量
load_dotenv()

# 初始化DeepSeek大语言模型
llm = ChatDeepSeek(
    model="deepseek-chat",
    temperature=0.1,  # 设置较低的温度,确保路由结果的稳定性
    max_tokens=50,    # 路由只需要简短回答,限制token数量
    api_key=os.getenv("DEEPSEEK_API_KEY")
)

# 设置路由提示模板
system_prompt = """你是一个专业的编程查询路由专家。
根据用户问题中涉及的编程语言,将其路由到相应的数据源:
- 如果问题涉及Python代码或Python相关概念,返回 "python_docs"
- 如果问题涉及JavaScript代码或JavaScript相关概念,返回 "js_docs"
- 如果问题涉及Go/Golang代码或Go相关概念,返回 "golang_docs"
- 如果无法明确判断或涉及多种语言,返回 "general_docs"
请只返回数据源名称,不要包含其他内容。"""

# 创建提示模板
prompt = ChatPromptTemplate.from_messages([
    ("system", system_prompt),
    ("human", "{question}"),
])

defroute_query(question: str) -> str:
    """
    根据问题内容进行路由分析
    Args:
        question: 用户提出的问题
    Returns:
        str: 路由到的数据源名称
    """
    # 构建结构化提示
    formatted_prompt = prompt.invoke({'question': question})
    # 调用大模型进行路由判断
    result = llm.invoke(formatted_prompt)
    return result.content.strip().lower()

defpython_docs_chain(question: str) -> str:
    """Python文档处理链"""
    returnf"🐍 Python文档链处理: {question}\n这里会连接到Python专门的文档检索和回答系统"

defjs_docs_chain(question: str) -> str:
    """JavaScript文档处理链"""
    returnf"📜 JavaScript文档链处理: {question}\n这里会连接到JavaScript专门的文档检索和回答系统"

defgolang_docs_chain(question: str) -> str:
    """Go语言文档处理链"""
    returnf"🚀 Go语言文档链处理: {question}\n这里会连接到Go语言专门的文档检索和回答系统"

defgeneral_docs_chain(question: str) -> str:
    """通用文档处理链"""
    returnf"📚 通用文档链处理: {question}\n这里会连接到通用的文档检索和回答系统"

defchoose_route(route_result: str, question: str) -> str:
    """
    根据路由结果选择相应的处理链
    Args:
        route_result: 路由分析的结果
        question: 原始问题
    Returns:
        str: 处理链的输出结果
    """

    # 清理路由结果,移除可能的引号和空格
    route = route_result.strip().lower().replace('"', '').replace("'", "")
    if"python_docs"in route:
        return python_docs_chain(question)
    elif"js_docs"in route:
        return js_docs_chain(question)
    elif"golang_docs"in route:
        return golang_docs_chain(question)
    else:
        return general_docs_chain(question)

if __name__ == "__main__":
    question = """为什么下面的代码不工作:
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages(["human", "speak in {language}"])
prompt.invoke("french")"""
    # 第一步:路由分析
    route_result = route_query(question)
    # 第二步:选择处理链
    final_result = choose_route(route_result, question)

语义路由(Semantic Routing)

语义路由则是将用户的查询和系统预设的的多个提示词模板进行嵌入,计算它们的相似性,来匹配最相关提示词模板,决定最终使用哪一个提示词。

img

以下是用LangChain实现的语义路由的代码示例:

import os
import numpy as np
from dotenv import load_dotenv
from langchain.utils.math import cosine_similarity
from langchain_core.prompts import PromptTemplate
from langchain_deepseek import ChatDeepSeek
from langchain_huggingface import HuggingFaceEmbeddings

# 加载环境变量
load_dotenv()
# 初始化嵌入模型 - 使用中文优化的模型
embeddings = HuggingFaceEmbeddings(
    model_name="BAAI/bge-small-zh",  # 使用中文优化的嵌入模型
    model_kwargs={'device': 'cpu'},   # 使用CPU计算
    encode_kwargs={'normalize_embeddings': True}  # 启用向量归一化
)

# 定义不同领域的专门化提示模板
physics_template = """你是一位非常优秀的物理学教授。\
你擅长用简洁易懂的方式回答物理学问题。\
当你不知道某个问题的答案时,你会诚实地承认不知道。
请回答以下物理学问题:
{query}"""

math_template = """你是一位非常优秀的数学家。你擅长回答数学问题。\
你之所以如此出色,是因为你能够将复杂问题分解为组成部分,\
逐一解决各个部分,然后将它们整合起来回答更广泛的问题。
请回答以下数学问题:
{query}"""

programming_template = """你是一位经验丰富的程序员和软件工程师。\
你精通多种编程语言和开发技术,能够提供清晰的代码示例和解释。\
你擅长调试代码问题,解释编程概念,并提供最佳实践建议。
请回答以下编程问题:
{query}"""

general_template = """你是一位知识渊博的助手,能够回答各种通用问题。\
你会尽力提供准确、有用的信息,并承认自己不确定的地方。\
请用清晰、结构化的方式组织你的回答。
请回答以下问题:
{query}"""

# 收集所有提示模板
prompt_templates = [
    ("物理学", physics_template),
    ("数学", math_template),
    ("编程", programming_template),
    ("通用", general_template)
]

print("🔄 正在计算提示模板的向量嵌入...")
# 计算所有提示模板的向量嵌入
template_texts = [template for _, template in prompt_templates]
prompt_embeddings = embeddings.embed_documents(template_texts)
print("✅ 提示模板向量化完成")

# 初始化DeepSeek大语言模型
llm = ChatDeepSeek(
    model="deepseek-chat",
    temperature=0.7,  # 适中的创造性
    max_tokens=2048,  # 允许较长的回答
    api_key=os.getenv("DEEPSEEK_API_KEY")
)

defprompt_router(user_input: str):
    """
    基于语义相似度的提示路由器
    Args:
        user_input: 用户输入的查询
    Returns:
        tuple: (选中的领域名称, 格式化的提示)
    """

    # 1. 将用户查询进行向量化
    query_embedding = embeddings.embed_query(user_input)
    # 2. 计算查询与所有提示模板的余弦相似度
    similarity_scores = cosine_similarity([query_embedding], prompt_embeddings)[0]
    # 3. 找到相似度最高的模板
    best_match_idx = np.argmax(similarity_scores)
    best_score = similarity_scores[best_match_idx]
    # 4. 获取最匹配的领域和模板
    domain_name, most_similar_template = prompt_templates[best_match_idx]
    # 5. 创建提示模板对象并格式化
    template = PromptTemplate.from_template(most_similar_template)
    formatted_prompt = template.invoke({'query': user_input})
    return domain_name, formatted_prompt

defsemantic_routing_qa(user_query: str) -> str:
    """
    完整的语义路由问答流程
    Args:
        user_query: 用户查询
    Returns:
        str: 大模型的回答
    """
    # 1. 路由到最适合的提示模板
    domain, refined_prompt = prompt_router(user_query)
    # 2. 使用DeepSeek生成回答
    print(f"\n🤖 正在使用{domain}专家模式生成回答...")
    response = llm.invoke(refined_prompt)
    return response.content

if __name__ == "__main__":
    query = "Python中的装饰器是什么?如何使用?"
    # 执行语义路由问答
    answer = semantic_routing_qa(query)

总结

总之,查询路由(Query Routing) 是在构建高级RAG系统比较常见的预检索优化策略。上一篇文章中提到的优化策略查询翻译(Query Translation) 侧重于将问题转换成更标准的形式,而路由则是在翻译之后选择最合适的下游资源。
无论是通过逻辑路由去匹配最相关的数据源(如向量数据库、图数据库或者关系型数据库),还是利用语义路由动态选择最优的提示词模板,查询路由都扮演着“智能导航”的角色。它核心价值在于:

  1. 提升精准度:避免在不相关的数据集中进行无效搜索,将计算资源集中在最可能产生正确答案的地方。
  2. 提高效率:减少检索范围和响应时间,为用户提供更流畅、更快速的交互体验。
  3. 增强系统扩展性:使RAG系统能更灵活地集成和管理多个不同类型的数据源,能应对更复杂的应用场景。
    在实践中,巧妙地运用查询路由,能让你的RAG系统告别“盲目”检索,更智能、高效的实现复杂的业务场景。

如何学习大模型 AI ?

我国在AI大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着Al技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国Al产业的创新步伐。加强人才培养,优化教育体系,国际合作并进,是破解困局、推动AI发展的关键。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

2025最新大模型学习路线

明确的学习路线至关重要。它能指引新人起点、规划学习顺序、明确核心知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

对于从来没有接触过AI大模型的同学,我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线。

在这里插入图片描述

针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

大模型经典PDF书籍

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路!

在这里插入图片描述

配套大模型项目实战

所有视频教程所涉及的实战项目和项目源码等
在这里插入图片描述

博主介绍+AI项目案例集锦

MoPaaS专注于Al技术能力建设与应用场景开发,与智学优课联合孵化,培养适合未来发展需求的技术性人才和应用型领袖。

在这里插入图片描述

在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

为什么要学习大模型?

2025人工智能大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

在这里插入图片描述

适合人群

  • 在校学生:包括专科、本科、硕士和博士研究生。学生应具备扎实的编程基础和一定的数学基础,有志于深入AGI大模型行业,希望开展相关的研究和开发工作。
  • IT行业从业人员:包括在职或失业者,涵盖开发、测试、运维、产品经理等职务。拥有一定的IT从业经验,至少1年以上的编程工作经验,对大模型技术感兴趣或有业务需求,希望通过课程提升自身在IT领域的竞争力。
  • IT管理及技术研究领域人员:包括技术经理、技术负责人、CTO、架构师、研究员等角色。这些人员需要跟随技术发展趋势,主导技术创新,推动大模型技术在企业业务中的应用与改造。
  • 传统AI从业人员:包括算法工程师、机器视觉工程师、深度学习工程师等。这些AI技术人才原先从事机器视觉、自然语言处理、推荐系统等领域工作,现需要快速补充大模型技术能力,获得大模型训练微调的实操技能,以适应新的技术发展趋势。
    在这里插入图片描述

课程精彩瞬间

大模型核心原理与Prompt:掌握大语言模型的核心知识,了解行业应用与趋势;熟练Python编程,提升提示工程技能,为Al应用开发打下坚实基础。

在这里插入图片描述

RAG应用开发工程:掌握RAG应用开发全流程,理解前沿技术,提升商业化分析与优化能力,通过实战项目加深理解与应用。 在这里插入图片描述

Agent应用架构进阶实践:掌握大模型Agent技术的核心原理与实践应用,能够独立完成Agent系统的设计与开发,提升多智能体协同与复杂任务处理的能力,为AI产品的创新与优化提供有力支持。
在这里插入图片描述

模型微调与私有化大模型:掌握大模型微调与私有化部署技能,提升模型优化与部署能力,为大模型项目落地打下坚实基础。 在这里插入图片描述

顶尖师资,深耕AI大模型前沿技术

实战专家亲授,让你少走弯路
在这里插入图片描述

一对一学习规划,职业生涯指导

  • 真实商业项目实训
  • 大厂绿色直通车

人才库优秀学员参与真实商业项目实训

以商业交付标准作为学习标准,具备真实大模型项目实践操作经验可写入简历,支持项目背调

在这里插入图片描述
大厂绿色直通车,冲击行业高薪岗位
在这里插入图片描述

文中涉及到的完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

高通camx架构学习(零)—— 深入理解Camera 硬件抽象层 从上面的定义可以看出,主要是通过hw_module_t 代表了模块,通过其open方法用来打开一个设备,而该设备是用hw_device_t来表示,其中除了用来关闭设备的close方法外,并无其它方法,由此可见谷歌定义的HAL接口,并不能满足绝大部分HAL模块的需要,所以谷歌想出了一个比较好的解决方式,那便是将这两个基本结构嵌入到更大的结构体内部,同时在更大的结构内部定义了各自模块特有的方法,用于实现模块的功能,这样,一来对上保持了HAL的统一规范,二来也扩展了模块的功能。 阅读详情

相关推荐

图像配准(Image Registration)——深度学习方法

参考:https://www.cnblogs.com/carsonzhu/p/11188574.html

m0_46483236的博客 4万+

【AI论文精读3】RAG论文综述1-P3-检索器

这篇综述论文对RAG在大型语言模型中的应用进行了全面总结,覆盖了如何通过检索增强大规模语言模型的能力,并讨论了不同类型的检索机制及其优化策略。适合对RAG的最新发展进行深入了解。这是我对论文第3部分的解读。

AI完全体 1586

MIT Mini Cheetah--仿真流程

MIT Mini Cheetah–仿真 摘要 由于官方提供代码中,控制仿真环境中的猎豹机器人运动需要遥控器来控制。官方默认推荐使用logitech Gamepad F310游戏手柄:We use the Logitech F310 controller. There’s a switch in the back, which should be in the “X” position. The controller needs to reconnected if you change the switch

Galaxy_Robot的博客 5916

RAG 检索优化关键:手把手教你实现查询路由机制,从源头提升问答质量

在构建复杂的RAG系统中,会存在有多个数据源的情况。你可能有多个向量数据库,或者用不同类型的数据库(图数据库、关系数据库)来存储不同格式的数据。 我们如何根据用户的查询有效的路由到相关的数据源呢?这就是我们今天要关注另一个预检索优化策略–查询路由(Query Routing)。

2401_85154887的博客 1243

工业相机TEC散热技术:从原理到高精度成像的实战解析

本文深入解析了工业相机TEC散热技术的核心原理与实战应用。通过阐述热电制冷器如何利用帕尔帖效应实现精准温控,有效抑制图像传感器暗电流噪声,从而保障高精度成像的稳定性。文章结合工业场景痛点,提供了从TEC选型、系统集成到控制逻辑的完整设计指南,并分享了不同应用场景下的实战案例,是提升工业视觉系统成像质量的关键技术解析。

weixin_29269441的博客 414

Starlink第三代终端和第二代终端的差异性有哪些?

starlink第三代终端和第二代终端的额差异

chen2jiang3的博客 2927

高级 RAG 检索策略之查询路由

今天我们介绍了 RAG 检索策略中的查询路由,并介绍了 LLM Router 和 Embedding Router 两种查询路由的实现原理,最后通过一个实战项目了解了查询路由在实际项目中的使用。但目前的查询路由还有很多不确定性,因此我们无法保证查询路由总能做出完全准确的决策,需要经过精心测试才能得到更加可靠的 RAG 应用程序。

m0_59235699的博客 2027

基于Transformer和图卷积网络的时空人体运动预测网络

本文主要介绍了基于Transformer和图卷积网络的时空人体运动预测网络。首先,文章详细阐述了Transformer模型的原理和优点,指出其通过自注意力机制实现序列数据的建模和处理,能够捕捉长距离依赖关系。然后,文章介绍了图卷积网络的基本概念和应用场景,强调其通过邻居节点信息聚合实现空间特征的提取和融合。接着,文章详细设计了时空人体运动预测网络的总体架构,包括基于Transformer的时间特征提取模块、基于图卷积的空间特征融合模块以及时空特征联合预测模块。

babyai996的博客 1481

【ProxySQL 介绍】

ProxySQL  ProxySQL 是一个高性能,高可用性,的数据中间层项目。   高性能 ProxySQL 具有先进的多核架构。 它从根本上构建,支持数十万个并发连接,复用到可能数百个后端服务器。 最大的 ProxySQL 部署跨越了几百个代理。     高效的工作负载管理 ProxySQL 可帮助您从 MySQL 集群中挤出最后一滴性能,而无需控制生成查询的应用程序。  ...

541

信贷风控分析—征信数据源

详解企业和个人征信报告,以及信贷风控之指标构造案例参考

csdnbt的博客 3638

机器学习势能(MLPs) 第一章 基础理论与核心概念 第二章 数据生成与训练集构建

密度泛函理论(DFT)作为现代计算材料科学的基石,通过求解Kohn-Sham方程在电子结构层面提供可靠的势能面信息。然而,其计算复杂度随体系电子数呈O(N3) 至O(N4) 增长,对于包含数百个原子的体系,单点计算往往需消耗数小时至数天的计算资源。这一瓶颈严重限制了分子动力学模拟的时间尺度,传统DFT-MD通常仅能覆盖皮秒量级,远不足以观测扩散、相变等慢动力学过程。经验力场通过解析函数形式描述原子间相互作用,实现了经典力学的计算效率,但其参数化过程高度依赖物理直觉与经验调参。

VectorShift的博客 182

Pinot架构介绍

Pinot 是一个实时分布式的 OLAP 数据存储和分析系统。LinkedIn 使用它实现低延迟可伸缩的实时分析。Pinot 从离线数据源(包括 Hadoop 和各类文件)和在线数据源(如 Kafka)中攫取数据进行分析。Pinot 被设计是可以进行水平扩展的。

手边笔记 5120

怎样让你的论文看起来“像人写的”?只用三招直接去除AI味(附提示词)

当然如果你在实际使用中还有其他需求,比如降重润色、改写翻译等,也可以结合七哥的专业写作平台来辅助,这个高级学术平台已经内置了ChatGPT4o、ChatGPT4.1、Claude3.7、满血版DeepSeek-R1等AI大模型,帮你写文献综述、干课题申报、写论文等学术任务绝对每一点问题。比如我自己的一套学术写作平台,其中的“降重与润色”模块整合了多种GPTs应用,除了能帮助调整语言风格、避免雷同表达,还可以顺带降个重,对于提升学术文本的整体质量还是非常有用的。一、为什么用AI写出来的文章会有AI味?

智能AI让学术科研更容易 1686

【AI大模型教程】RAG检索增强生成

大型语言模型(LLM)会产生“幻觉”现象,检索增强生成(RAG)通过从外部知识库检索相关文档chunk并进行语义相似度计算,增强了LLM的功能,很大程度解决幻读。

DEVELOPERAA的博客 2023

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

路由(routing)

就是通过互联的把从源地址传输到目的地址的活动。路由发生在的第三层即。形式路由引導分组轉送,經過一些中間的後,到它們最後的目的地。作成硬體的話,則稱為。路由通常根據——一個儲存到各個目的地的最佳路徑的表——來引導分组轉送。因此為了有效率的轉送分组,建立儲存在路由器內的路由表是非常重要的。路由與橋接的不同,在於路由假設位址相似的節點距離相近。這使得路由表中的一項紀錄可以表示到一群位址的路徑。因此,在大型網路中,路由優於橋接,且路由已經成為上尋找路徑的最主要方法。

weixin_40191861的博客 856

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

看懂RAG-检索增强生成

RAG就是一种使用来自私用或专有数据源的信息来辅助文本生成的技术。它将检索模型(设计用于搜索大型数据集或知识库)和生成模型(例如大型语言模型,此类模型会使用检索到的信息生成可供阅读的文本回复)结合在一起。

weixin_51889618的博客 2625

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【AI大模型进阶教程】RAG:检索增强生成技术详解

大型语言模型(LLM)会产生“幻觉”现象,检索增强生成(RAG)通过从外部知识库检索相关文档chunk并进行语义相似度计算,增强了LLM的功能,很大程度解决幻读。通过引用外部知识,RAG有效地减少了生成事实不正确内容的问题。RAG目前是基于LLM系统中最受欢迎的架构,有许多产品基于RAG构建,使RAG成为推动聊天机器人发展和增强LLM在现实世界应用适用性的关键技术。

2401_85373691的博客 1233

Elasticsearch中的路由(Routing)机制是如何工作的?

提高查询性能:当查询涉及一组相关文档时,如果这些文档都位于同一个分片上,那么查询只需要在一个分片上执行,而不需要跨多个分片进行协调,这样可以显著提高查询速度。数据局部性:通过将相关文档放置在一起,可以减少网络通信开销,因为Elasticsearch不需要从多个节点获取数据。负载均衡:合理地设置路由可以帮助平衡集群中的数据分布,避免某些分片过载。当你索引文档时,可以通过routing参数来指定一个自定义的路由键。这个键可以是任何字符串,通常是一个与文档关联的标识符,如用户ID或产品ID。

qq_33240556的博客 617

Redis分片(分布式缓存)

分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包含所有键的子集. 1 分片何用 Redis 的分片承担着两个主要目标: 允许使用很多电脑的内存总和来支持更大的数据库。没有分片,你就被局限于单机能支持的内存容量。 允许伸缩计算能力到多核或多服务器,伸缩网络带宽到多服务器或多网络适配器。 2 分片基础 ...

测试0901-1 322

告别新手级RAG!一文掌握专业级后检索优化流水线

众所周知,检索是检索增强生成 (RAG) 系统的核心。它直接决定哪些文档片段给到大语言模型(LLM)来生成最终答案。

2401_82469710的博客 563

如何使用查询路由构建更先进的 RAG

目前大部分RAG的实践方案都是通过检索模型从外部数据库中获取与输入相关的文档或信息;然后,将这些信息与输入结合,输入到生成模型中进行文本生成。这种方案往往会有一个问题就是所有的数据都存储在一起,但这往往是没法在生产实践的,一般情况下单个prompt无法处理所有情况,单个数据源也可能无法适合所有数据。比如这个问题:假设现在需要构建一个聊天机器人来回答员工有关管理的问题,例如工资或绩效相关的问题。如果查询涉及员工福利、绩效评估、休假政策或任何与人力资源直接相关的主题,我们需要将查询路由到 HR 向量数据库。

优快云DN的博客 1414

高级 RAG 技术图解概览

这样的搜索分为两步:首先利用摘要来筛选出相关文档,然后只在这个筛选出的相关文档集中继续深入搜索。

白天写代码,晚上追AI大模型,偶尔搞点八卦 开源动态|技术干货|实习机会|生态活动 我负责分享,你负责变强 2125

为什么 RAG 应用需要路由器?一文搞懂 6 种不同的路由器

我们在此介绍了目前在不同的 RAG 和 LLM 框架和软件包中发现的几种不同的自然语言路由器。随着时间的推移,围绕路由的概念、软件包和库肯定会越来越多。在构建 RAG 应用程序时,你会发现在某些时候,为了构建一个对用户有用的应用程序,路由功能确实是必要的。路由器是这些基本构建块,允许您将对应用程序的自然语言请求路由到正确的位置,以便尽可能最好地满足用户的查询。

m0_59164520的博客 1702

检索增强生成RAG系列5--RAG提升之路由(routing)

在系列3和系列4我讲了关于一个基本流程下,RAG的提高准确率的关键点,那么接下来,我们再次讲解2个方面,这2个方面可能与RAG的准确率有关系,但是更多的它们是有其它用途。本期先来讲解RAG路由。

代码让AI扣 2318

go-elasticsearch大规模数据处理:如何应对亿级文档索引

在当今数据驱动的时代,处理亿级文档索引已成为企业面临的普遍挑战。go-elasticsearch作为Elasticsearch的官方Go客户端,提供了强大的工具来应对这一挑战。本文将为您揭示如何利用go-elasticsearch高效处理大规模数据,实现亿级文档的快速索引和检索。🚀 ## 为什么选择go-elasticsearch处理大规模数据? go-elasticsearch是专门为Go

gitblog_00776的博客 410

通用RAG:通过路由模块对多源异构知识库检索生成问答思路

如何在多个语料库(多源异构知识库,如:文本、图片、视频)中检索和整合来自不同模态和粒度的知识?UniversalRAG:一种新的RAG框架,用于从多个模态和粒度的语料库中检索和整合知识。下面来看看思路,供参考。

余俊晖,NLP炼丹师,目前专注自然语言处理领域研究。曾获得国内外自然语言处理算法竞赛TOP奖项近二十项。 1136
上一篇: 2025年AI终极形态!自进化Agent深度综述:多模态融合+自主决策,企业落地避坑指南
下一篇: 微软GraphRAG全解剖!从图构建到智能检索:7大核心模块拆解,企业级落地避坑指南
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值