RAG系列(六):问题优化 - 意图识别&同义改写&多视角分解&补充上下文

从RAG到Agentic:AI助手的智能进化与实战优化 检索增强生成(RAG)技术通过结合向量数据库与大语言模型(LLM),实现了外部知识库与生成能力的融合,成为解决AI信息时效性问题的关键技术。其核心原理是将用户查询向量化后检索相关文档,再交由LLM生成回答。然而传统RAG存在被动检索、静态处理等局限,无法应对复杂场景需求。Agentic RAG通过引入智能体(Agent)架构,赋予系统动态工具选择、多轮验证等能力,显著提升了在电商客服、知识问答等场景的问题解决率。特别是在处理需要实时数据(如物流状态)或复杂决策(如行程规划)的任务时,结合了LLM推理与API 阅读详情

引言

在实际业务场景中,知识库不会只有单一领域的知识,可能会存在多个领域的知识,如果对用户问题不提前做领域区分,在对基于距离的向量数据库进行检索时,可能会检索出很多与用户问题不属于同一个领域的文档片段,这样的上下文会存在较多的噪音或者不准确的信息,从而影响最终的回答效果。

另一方面知识库中涵盖的知识表达形式也是有限的,但用户的提问方式却是千人千面的,用户遣词造句的方式以及描述问题的角度可能会与向量数据库中存储的文档片段存在差异,这就可能导致用户问题和知识库之间不能很好匹配,从而降低检索效果。

为了解决此问题,我们可以对用户问题进行查询增强,比如对用户问题进行意图识别、同义改写、多视角分解以及补充上下文,通过这几个查询增强方式来更好地匹配知识库中的文档片段,提升检索效果和回答效果。

本文完整代码地址[1]:https://github.com/laixiangran/ai-learn/blob/main/src/app/rag/04_question_optimize/route.ts

现在我们准备两份文档《2024少儿编程教育行业发展趋势报告.pdf》、《2021年低代码行业研究报告.pdf》,将这两份文档同时存储到向量数据库中,同时我们在每个文档片段的元数据中加上 category 这个字段,用来标记每个片段所属的领域,作为后续的检索筛选条件。

代码实现如下:

const pdfs = [
    {
path: 'src/app/data/2024少儿编程教育行业发展趋势报告.pdf',
category: '少儿编程',
    },
    {
path: 'src/app/data/2021年低代码行业研究报告.pdf',
category: '低代码',
    },
  ];
for (const pdf of pdfs) {
const { path, category } = pdf;
const pdfContent = awaitloadPdf(path); // pdf 文件解析
const documents = awaitsplitDocuments(pdfContent); // 文档切分
for (constdocumentof documents) {
// 添加元数据
document.metadata.category = category; // 少儿编程 or 低代码
    }
awaitaddDocuments(documents); // 保存文档到向量数据库
  }

到这里,我们的知识库就同时存在两个不同领域的文档,在不对问题进行任何优化的前提下,我们将该 RAG 系统版本定为 V2.0,现在我们先通过RAG系列(五):系统评估 - 基于LLM-as-judge实现评估系统这一篇文章实现的评估系统来对 V2.0 进行评估,得分如下:

可以看到,相对于 V1.0,五个指标得分都有不同程度的下降,主要的原因就是同样的问题在 V2.0 中会检索到不属于“少儿编程”领域的文档片段。比如用户问题 “少儿编程教育行业当前的发展动力主要来自哪些方面?”检索出了“低代码”相关的文档片段,从而影响了各个指标的得分:

"question":"少儿编程教育行业当前的发展动力主要来自哪些方面?",
"retrievedContext":[
"低代码行业发展趋势-产品易用性提升路径\n基础能力\n易用性\n增加引擎和交付模块数量,提升整个集成引擎\n的组合方式,覆盖更多应用场景。\n⚫架构落地\n增加引擎和交付模块数量,提升整个集成引擎\n的组合方式,覆盖更多应用场景。\n⚫平台架构设计\n客户知道怎么设计才能发挥无代码、低代码平\n台的真正能力,现阶段国内对这方面认知逐渐\n提升。\n低\n代\n码\n/\n零\n代\n码\n产\n品\n落地能力\n使用能力",
"低代码商业模式-前后端开发平台\n厂商角度\n•厂商角度:面向具有一定开发能力的专业人员,降低专业开发人员的使用门槛,减少对\n高级别研发人员的依赖,大大提升了开发效率和降低开发人员成本。\n软件开发商\n产品提供方\n低代码平台厂商\n微服务架构\n大多提供给一\n定开发能力的\n专业人员。\nDevOps\n控件、组件\n企业\n客户\n元数据管理\n......\n中台化能力",
"•多鲸是多鲸资本旗下教育行业垂直内容平台,专注产业视角下的教育行\n业研究,依托对教育产业的深度认知,通过原创图文视频等媒体内容、\n链接一线教育从业者的线上线下活动,打造教育行业媒体影响力,与教\n育从业者同行,助力行业发展。\n扫\n\n描\n\n二\n\n维\n\n码\n\n关\n\n多\n\n鲸\n获\n\n取\n\n更\n\n多\n\n资\n\n讯"
],

本文将以 V2.0 作为基准版本,以此来验证对用户问题进行查询增强后的效果。

意图识别

意图识别是根据用户问题来识别问题所属的知识领域,这样可以缩小或者准确定位到需要检索哪个知识库,从而更精准地检索出相关的文档片段。比如,对于这样一个用户问题:“少儿编程教育行业当前的发展动力主要来自哪些方面?”,可以知道这个问题属于“少儿编程”这个知识领域,那么在检索的时候就要去检索与“少儿编程”相关的知识库,而不应该去检索其它知识库。

对用户问题的意图识别有很多方法,比如规则匹配、传统机器学习以及深度学习等等,这里先不做展开。

本文采用的方法是直接通过 LLM 来识别用户问题的意图,代码实现如下:

/**
 * 问题优化 - 意图识别
 * @param question 原始问题
 * @returns
 */
asyncfunctionintentRecognition(question) {
const prompt = `
你是一个语言专家,你的任务是分析下面的问题是属于哪个领域。

说明:
1. 无法判断时,默认为“少儿编程”;
2. 只需要回答领域名称,不要输出其他内容。

领域列表:
["少儿编程", "低代码"]

问题:
${question}

回答:

  `;
const res = await generateModel.invoke(prompt);
const data = res.content;
console.log('intentRecognition: ', data);
return data;
}

这里的意图对应的是每个文档片段的元数据的 category,这样我们就可以将 category 作为检索条件来查询对应领域的知识库:

// 意图识别
const intent = awaitintentRecognition(evaluateData.question);

// 检索条件
const vectorFilter = {
category: intent, // 将意图作为筛选条件
};

// 文档检索
const docs = await chromadb.similaritySearchWithScore(
  question,
  topK,
  vectorFilter
);

这样我们检索到的文档片段都是属于“少儿编程”领域,不会再有“低代码”的文档片段了。

"question":"少儿编程教育行业当前的发展动力主要来自哪些方面?",
"retrievedContext":[
"•多鲸是多鲸资本旗下教育行业垂直内容平台,专注产业视角下的教育行\n业研究,依托对教育产业的深度认知,通过原创图文视频等媒体内容、\n链接一线教育从业者的线上线下活动,打造教育行业媒体影响力,与教\n育从业者同行,助力行业发展。\n扫\n\n描\n\n二\n\n维\n\n码\n\n关\n\n多\n\n鲸\n获\n\n取\n\n更\n\n多\n\n资\n\n讯",
"的需求,具备快速成长和创造巨大价值的潜力。然而,曾经的从业逻辑,已不再适配当前大量新玩家涌入、市场\n竞争愈发激烈的全新格局。",
"具保持同步。\n【多鲸资本创始合伙人/姚玉飞 】\n•未来教育的关注点,是培养个性鲜明、独立自强的大写的“人”。我们希望孩子们面对一个繁杂多样、极\n不确定的世界时,拥有高阶的分析判断力,能在给定条件下找到最优选择。作为世界公认的未来语言,编\n程已经成为打造孩子们面向未来的核心竞争力的重要方式。"
],

我们将版本定为 V3.0,评估得分如下:

可以看到,相对于 V2.0,通过对问题的意图识别实现知识库的精准检索,五个指标得分都恢复到 V1.0 的水平了。

接下来,我们在 V3.0 的基础上再进一步对问题进行优化。

同义改写

同义改写是通过将原始查询改写成相同语义下不同的表达方式,来解决用户查询单一的表达形式可能无法全面覆盖到知识库中多样化表达的知识。比如,对于这样一个用户问题:“少儿编程教育行业当前的发展动力主要来自哪些方面?”,可以改写成下面几种同义表达:1、“少儿编程教育行业的当前发展是由哪些因素推动的?”;2、“是什么力量在驱动着少儿编程教育行业目前的发展?”;3、“目前推动少儿编程教育行业发展的重要因素有哪些?”。每个改写后的问题都可独立用于检索相关文档片段,随后从这些不同问题中检索到的文档片段集合进行合并和去重处理,从而形成一个更大的相关文档集合。

本文采用的方法是直接通过 LLM 来对用户问题进行同义改写,代码实现如下:

/**
 * 问题优化 - 同义改写
 * @param question 原始问题
 * @param num 同义改写后的同义问题数量
 * @returns
 */
asyncfunctionsynonymyRewritten(question, num = 3) {
const prompt = `
你是一个语言专家,你的任务是将给定的原始问题改写成${num}个语义相同但表达方式不同的问题。

说明:
1. 严格按以下JSON格式返回:["问题1", "问题2", ...],不能输出其他无关内容。

原始问题:
${question}

回答:

  `;
const res = await generateModel.invoke(prompt);
const data = formatToJson(res.content) || [];
console.log('synonymyRewritten: ', data);
return data;
}

然后将原始问题和同义改写出来的问题同时用于检索,再将每个问题检索到的文档片段组合起来,根据文档 id 去重并按文档片段相似度升序排列,最终取 topK(此时是 3) 个文档片段作为最终的上下文,代码实现如下:

const allQuestions = [evaluateData.question];

// 同义改写的问题
allQuestions.push(...evaluateData.synonymyQuestions);

// 检索条件
const vectorFilter = {
category: evaluateData.category,
};

const allDocs = [];
while (allQuestions.length > 0) {
const question = allQuestions.shift();
const docs = await chromadb.similaritySearchWithScore(
    question,
    topK,
    vectorFilter
  );
  allDocs.push(...docs);
}

// 根据文档 id 去重并按文档相似度升序排列,最终取 topK 个文档作为上下文
const uniqueDocs = Array.from(
newMap(allDocs.map((doc) => [doc[0].id, doc])).values()
);
uniqueDocs.sort((a, b) => a[1] - b[1]);

// 最终的上下文
const retrievedContext = uniqueDocs
  .slice(0, topK)
  .map((doc) => doc[0].pageContent);

我们将版本定为 V4.0,评估得分如下:

可以看到,相对于 V3.0,似乎效果提升的并不明显,有的指标(上下文召回率、上下文相关性、答案正确性)得分反而下降了。

出现这个现象的主要原因是虽然我们通过同义改写的方式扩大了检索文档片段集合,但由于我们只是简单做了去重和根据相似度排序,在 topK 不变的情况下,最终的上下文会有一些与同义问题相似度高但与原问题相似度低的文档片段,从而影响部分指标的下降。

解决这个问题的方法有很多,可以直接增大 topK,也可以通过重排序模型进行重排和筛选,这块后面会单独详细介绍,这里先不做展开。

本文先直接增大 topK,将 topK 设置为 6,我们将版本定为 V4.1,评估得分如下:

此时我们可以看到,相对于 V3.0,除了上下文相关性得分下降了(因为检索文档片段多了,就可能会包含更多与问题无关的文档片段),其他指标都有提升来,基本复合预期。

多视角分解

多视角分解采用分而治之的方法来处理复杂问题,将复杂问题分解为来自不同视角的子问题,以检索到问题相关的不同角度的文档片段。比如,对于这样一个问题:“少儿编程教育行业当前的发展动力主要来自哪些方面?”,可以从多个视角分解为:1、“推动少儿编程教育行业发展的重要因素有哪些?”;2、“目前支撑少儿编程教育市场的关键力量是什么?”;3、“少儿编程教育领域发展的主要驱动来源有哪些?”等子问题。每个子问题能检索到不同的相关文档片段,这些文档片段分别提供来自不同视角的信息。通过综合这些文档片段,LLM 能够生成一个更加全面和深入的最终答案。

本文采用的方法是直接通过 LLM 来对用户问题进行多视角分解,代码实现如下:

/**
 * 问题优化 - 多视角分解
 * @param question 原始问题
 * @param num 多视角分解后的子问题数量
 * @returns
 */
asyncfunctionsubRewritten(question, num = 3) {
const prompt = `
你是一个语言专家,你的任务是将给定的原始问题分解成${num}个不同视角的子问题。

说明:
1. 严格按以下JSON格式返回:["问题1", "问题2", ...],不能输出其他无关内容。

原始问题:
${question}

回答:

  `;
const res = await generateModel.invoke(prompt);
const data = formatToJson(res.content) || [];
console.log('subRewritten: ', data);
return data;
}

然后将原始问题和多视角分解出来的子问题同时用于检索,再将每个问题检索到的文档片段组合起来,根据文档 id 去重并按文档片段相似度升序排列,最终取 topK(此时是 3) 个文档片段作为最终的上下文,代码实现如下:

const allQuestions = [evaluateData.question];

// 多视角分解
allQuestions.push(...evaluateData.subQuestions);

// 检索条件
const vectorFilter = {
category: evaluateData.category,
};

const allDocs = [];
while (allQuestions.length > 0) {
const question = allQuestions.shift();
const docs = await chromadb.similaritySearchWithScore(
    question,
    topK,
    vectorFilter
  );
  allDocs.push(...docs);
}

// 根据文档 id 去重并按文档相似度升序排列,最终取 topK 个文档作为上下文
const uniqueDocs = Array.from(
newMap(allDocs.map((doc) => [doc[0].id, doc])).values()
);
uniqueDocs.sort((a, b) => a[1] - b[1]);

// 最终的上下文
const retrievedContext = uniqueDocs
  .slice(0, topK)
  .map((doc) => doc[0].pageContent);

我们将版本定为 V5.0,评估得分如下:

这里的问题情况和解决方案与同义改写的情况类似,这里就不重复讲解了。

补充上下文

补充上下文旨在通过生成与原始问题相关的上下文信息,从而丰富查询内容,提高检索的准确性和全面性。比如,对于这样一个问题:“少儿编程教育行业当前的发展动力主要来自哪些方面?”,可以生成如下上下文信息:“少儿编程教育行业的快速发展得益于政策支持、家长对孩子未来竞争力的重视以及技术进步和市场需求的增长”。这些生成的上下文信息可以作为原始问题的补充信息,提供更多的上下文内容,从而提高检索结果的相关性和丰富性。

本文采用的方法是直接通过 LLM 来根据用户问题生成补充的上下文,代码实现如下:

/**
 * 问题优化 - 补充上下文
 * @param question 原始问题
 * @param maxLen 补充上下文的最大字符长度
 * @returns
 */
asyncfunctioncontextSupplement(question, maxLen = 200) {
const prompt = `
你是一个语言专家,你的任务是根据给定的原始问题,生成一段与原始问题相关的背景信息。

说明:
1. 背景信息最大不超过${maxLen}个字符;
2. 只要输出背景信息,不能输出其他无关内容。

原始问题:
${question}

回答:

  `;
const res = await generateModel.invoke(prompt);
const data = res.content;
console.log('supplementContext: ', data);
return data;
}

然后将原始问题和生成的补充上下文同时用于检索,再将每个问题检索到的文档片段组合起来,根据文档 id 去重并按文档片段相似度升序排列,最终取 topK(此时是 3) 个文档片段作为最终的上下文,代码实现如下:

const allQuestions = [evaluateData.question];

// 补充上下文
allQuestions.push(evaluateData.supplementaryContext);

// 检索条件
const vectorFilter = {
category: evaluateData.category,
};

const allDocs = [];
while (allQuestions.length > 0) {
const question = allQuestions.shift();
const docs = await chromadb.similaritySearchWithScore(
    question,
    topK,
    vectorFilter
  );
  allDocs.push(...docs);
}

// 根据文档 id 去重并按文档相似度升序排列,最终取 topK 个文档作为上下文
const uniqueDocs = Array.from(
newMap(allDocs.map((doc) => [doc[0].id, doc])).values()
);
uniqueDocs.sort((a, b) => a[1] - b[1]);

// 最终的上下文
const retrievedContext = uniqueDocs
  .slice(0, topK)
  .map((doc) => doc[0].pageContent);

我们将版本定为 V6.0,评估得分如下:

这里的问题情况和解决方案与同义改写的情况类似,这里就不重复讲解了。

结语

通过本文的研究与实践,我们系统验证了在多领域知识库场景下,通过意图识别、同义改写、多视角分解和补充上下文等查询增强技术对 RAG 系统性能的提升作用。通过实践验证,意图识别通过领域过滤可有效减少跨领域噪音,而后续的语义优化策略进一步解决了表达差异问题,使系统在准确率、相关性和完整性等关键指标有一定程度的提升。

当然我们也看到了,仅仅通过问题优化还不够,要想进一步提升 RAG 系统各个指标的表现,还需要通过更多的优化,比如切分优化、检索优化等等,这些后续都会一一讲解,敬请期待。

大模型算是目前当之无愧最火的一个方向了,算是新时代的风口!有小伙伴觉得,作为新领域、新方向人才需求必然相当大,与之相应的人才缺乏、人才竞争自然也会更少,那转行去做大模型是不是一个更好的选择呢?是不是更好就业呢?是不是就暂时能抵抗35岁中年危机呢?

答案当然是这样,大模型必然是新风口!

那如何学习大模型 ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。但是具体到个人,只能说是:

最先掌握AI的人,将会比较晚掌握AI的人有竞争优势。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

但现在很多想入行大模型的人苦于现在网上的大模型老课程老教材,学也不是不学也不是,基于此我用做产品的心态来打磨这份大模型教程,深挖痛点并持续修改了近100余次后,终于把整个AI大模型的学习路线完善出来!

在这里插入图片描述

在这个版本当中:

您只需要听我讲,跟着我做即可,为了让学习的道路变得更简单,这份大模型路线+学习教程已经给大家整理并打包分享出来, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉优快云大礼包🎁:全网最全《LLM大模型学习资源包》免费分享(安全咨料,放心领取)👈

​

一、大模型经典书籍(免费分享)

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套大模型报告(免费分享)

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
在这里插入图片描述

三、大模型系列视频教程(免费分享)

在这里插入图片描述

四、2025最新大模型学习路线(免费分享)

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

img

L1阶段:启航篇丨极速破界AI新时代

L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

img

L2阶段:攻坚篇丨RAG开发实战工坊

L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

img

L3阶段:跃迁篇丨Agent智能体架构设计

L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

img

L4阶段:精进篇丨模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

img

L5阶段:专题集丨特训篇 【录播课】

img

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方二维码,免费领取

👉优快云大礼包🎁:全网最全《LLM大模型学习资源包》免费分享(安全资料,放心领取)👈

​

开源模型应用落地-RAG优化小技巧-拆解复杂问题的多步推理引擎(三) 通过问题裂变引擎将复杂问题拆解为逻辑子问题、逐层推进形成“知识雪球”的智能问答系统,有效克服传统AI的知识碎片化难题,使复杂推理更精准深入。 阅读详情

相关推荐

从零到一:基于Matlab的二阶系统时域性能指标计算与可视化实战

本文提供了一份基于Matlab的二阶系统时域性能指标计算与可视化实战指南。通过详细的代码示例,手把手教你如何利用Matlab计算超调量、调节时间等关键指标,并绘制阶跃响应曲线进行可视化分析,帮助控制工程学习者和从业者快速掌握系统性能评估方法。

weixin_29096377的博客 269

query语义改写

1. 问题背景   商品检索的主要的问题还是在于用户query和商品描述之间存在GAP,特别是中长尾query。把问题分成以下几种类型: 多种描述:划痕笔/补漆笔/修补笔/点漆笔 信息冗余: 冰箱温控器温度控制==冰箱温控器 属性检索: 118冰箱、60寸液晶电视机4k高清智能60曲面 宽泛意图: 超美吊灯、大容量冰箱 2.所做工作   quer...

weixin_33835103的博客 2679

BGE-Reranker-v2-M3介绍

重排序模型介绍

吉米_王 5892

RAG Query 改写==>意图识别

RAG Query 改写

core815的专栏 1351

医疗设备安规入门:一张图搞懂BF型设备的MOOP/MOPP绝缘路径(附GB 9706.1附录解析)

本文深入解析了BF型医疗设备的MOOP/MOPP绝缘路径设计,结合GB 9706.1标准附录J的实战应用,帮助工程师快速掌握医疗设备安规要点。通过典型绝缘路径图分析,详细对比了MOOP与MOPP的防护差异,并提供了海拔修正、漏电流测试等关键设计指南,助力医疗设备安全合规。

weixin_30633405的博客 390

汽车电子电气架构诊断功能开发全流程解析

文章作者是一位在魔都工作的汽车电子工程师,坚持长期主义,并分享了一段关于“钝感力”的文字,强调面对困境的韧劲和耐力,以及不被外界噪音干扰的重要性。文章详细介绍了汽车电子电气架构(EEA)的诊断功能开发流程,涵盖设计、实现、生产、运维及售后五大环节。作者从技术实现维度展开,详细描述了诊断系统架构设计、供应商功能实现、产线集成与标定、云端数据交互以及售后诊断应用场景。文章还总结了技术演进趋势,包括AI融合、OTA 2.0和区块链应用等,强调了标准化协议与工具链在全链路诊断能力中的重要性。最后,作者鼓励读者相信时

Soly_kun的博客 1220

传统NLP与大模型入门:基础概念篇

本文主要介绍前期传统nlp学习和大模型的一些基础知识和相关概念,方面小白更好的入门和理解。

IT大头的博客 2521

别再为数码管引脚发愁了!用STM32的普通IO口驱动TM1650数码管模块(附完整模拟I2C代码)

本文详细介绍了如何利用STM32的普通IO口通过模拟I2C协议驱动TM1650数码管模块,提供了完整的硬件连接方案和软件实现代码。通过模拟I2C技术,开发者可以灵活使用任意GPIO引脚控制多位数码管显示,解决了传统驱动方式占用大量IO资源的问题。文章包含TM1650寄存器解析、亮度控制等实用功能实现,并分享了常见问题排查与性能优化技巧。

weixin_30764771的博客 659

【AI大模型】微调碾压RAG?大模型意图识别工程化实践

检索增强生成(Retrieval-Augmented Generation,RAG)指的是在LLM回答问题之前从外部知识库中检索相关信息,RAG有效地将LLM的参数化知识与非参数化的外部知识库结合起来,使其成为实现大型语言模型的最重要方法之一早期的神经网络模型,在处理需要依赖外部知识或特定信息的任务时遇到了瓶颈。LLM的问题:幻觉、依赖信息过时、缺乏专业领域知识。RAG的提出,是为了解决如何将广泛的、分布式的外部信息库与生成模型相结合,从而提高模型在问答、摘要等任务中的性能和准确度。

2401_85325557的博客 1363

在 CentOS Stream 10 上搭建 Kubernetes 集群并支持开发调试与日志查看

搭建 Kubernetes 集群的每个步骤详细的文档。

灵犀物润 1644

SAP-PP MD04详解一

MD04是SAP运行MRP后的结果查询事务码,其他功能强大,标准功能比如:查询/更改物料主数据、转换计划订单到生产订单/采购申请、查询/更改各个MRP元素对应的单据等等。而且还可以附加标准的菜单或者自定义添加事务码上去。老铁将做一个MD04详细说明系列,本篇为第一篇之MRP元素说明。 我们来看看MD04基本界面 可以看到主要的数据显示界面,有日期、MRP元素、MRP元素数据、再计划日期、收货/需求、可用数量、工厂、库存地点等栏位。光标定位到MRP元素列,按F1即可看到各类MRP元素的说...

weixin_52158549的博客 1万+

构建AI智能体:二十一、精准检索“翻译官”:qwen-turbo在RAG Query改写中的最佳实践

因为用户的自然提问方式与知识库的客观组织方式天生存在不可调和的差异。如果不进行改写,直接将原始查询用于检索,就如同让一个不懂检索的人自己去漫无目的地查字典,结果往往是找不到、找错了或找到的没法用。Query 改写是保障 RAG 系统可靠性、准确性和可用性的“第一道防线”和“核心基础设施”。它通过一系列技术手段,将用户的意图“翻译”成检索器能高效理解的语言,从而确保后续步骤能在一个高质量的基础上进行。

minhuan的专栏 1488

智能车图像处理16-进阶篇8--右环岛状态机与补线

这篇文章主要讲述智能车竞赛中如何判断右环岛并且进行状态补线。

taiyuezyh的博客 1万+

RAG :查询改写(Query Rewriting)

RAG 实际业务中,用户查询常存在意图不明确的问题。 即便采用更好的检索技术方案,收益可能并不能达到预期。 因此,在检索开始之前,对用户查询进行改写,可以增加检索到最相关内容块的可能性。

weixin_58753619的博客 303

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

腾讯: Query改写不是你RAG使用LLM查询优化的唯一方案

查询抽象旨在提供对事实需求的更广泛视角,可能导致更多样化和全面的结果。这涉及到识别和提炼查询的基本意图和核心概念元素,然后创建一个高层次的表示,捕捉本质含义的同时去除具体细节。如:用精心设计提示引导 LLM 推理,使输出契合原始查询意图;要求 LLMs 对抽象查询进行概念推理,在可验证符号空间生成解决方案;将通用 CoT 推理抽象为含抽象变量推理链,借助领域工具解决查询;用抽象框架构建推理过程,集成不同层次抽象;生成高层抽象信息作查询上下文背景;定义查询方面辅助复杂查询推理;

2401_85375186的博客 1287

假人有限元模型

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

【AI的热门应用】构建“二代 RAG”:查询改写、重写/重排、迭代检索各自解决了什么?

构建“二代 RAG”:查询改写、重写/重排、迭代检索各自解决了什么?

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 959

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【LangChain】MultiQueryRetriever:多视角查询如何优化向量检索效果

本文深入解析了LangChain框架中的MultiQueryRetriever组件,它通过大语言模型自动生成多个不同视角的查询,有效解决了向量检索中因查询表述差异导致的语义鸿沟问题。该技术能显著提升检索的覆盖率和鲁棒性,是优化RAG系统检索效果的关键工具。

weixin_29216957的博客 573

RAG的进化之路:从单兵作战到多智协作

它的核心思想是,首先从一个大规模的文档库中检索出与问题最相关的一些片段,然后将这些片段作为附加的知识信息,输入到一个生成式语言模型中,由语言模型根据问题和检索到的知识生成最终答案。黑洞对周围环境的影响主要体现在两个方面:一是强大的引力场会吸积周围的物质,包括恒星、气体、尘埃等,形成吸积盘,并在吸积过程中释放出大量的能量,产生耀眼的光和其他辐射;正是得益于多个领域专家模型的无缝配合、多视角答案的智能融合,以及持续的反馈优化,这个方法成功地解决了一个高度复杂的问题,生成了一个全面、准确、易懂的答案。

wwlsm_zql的博客 1218

【RAG技术从小白到深入理解】RAG 查询优化策略:从多查询到 HyDE 的完整指南

在构建 RAG(Retrieval-Augmented Generation)应用时,我们常常遇到一个尴尬的场景:知识库里有答案,但系统就是检索不出来。问题往往不在于向量模型不够好,而在于用户的原始查询和知识库中的文档之间存在语义鸿沟。用户提问的方式千差万别:有人问得过于简短,有人问得过于宽泛,有人用的术语和文档中的不完全一致。如果我们只是简单地把原始问题向量化然后做相似度检索,检索效果往往会大打折扣。查询优化(Query Optimization)

2503_91308599的博客 808

RAG 查询重写

RAG系统中查询重写技术通过多策略优化解决用户查询模糊、复杂或依赖上下文的问题。多查询重写生成语义相关的查询变体提升召回率;问题分解将复杂查询拆解为子问题逐个检索;Step-Back策略先检索抽象框架再定位细节;指代消解解决对话中的代词指代问题。四种策略协同应用可显著提升检索效果:召回率提升20-30%,复杂查询准确率提升40-50%,专业查询漏检率降低35-45%,对话场景错误率降低50-60%。实现时需根据查询类型灵活组合策略,平衡效果与成本。

malog的博客 1033

Advanced RAG 全链路检索优化之查询优化

全链路检索优化讲究**对症下药**,并不是所有手段全上效果最好,有可能适得其反。

m0_59163425的博客 185

“RAG界的deepseek”开源-企业复杂私域知识理解与推理框架PIKE-RAG

PIKE-RAG框架的设计目标是提供一个灵活且可扩展的RAG系统,应对工业应用中复杂多样的任务需求。框架的核心是通过有效的知识提取、理解和组织,以及构建连贯的推理逻辑,解决了RAG系统在工业应用中的局限性。下面来看下微软开源的PIKE-RAG框架及其实现过程,供参考。

Androiddddd的博客 1907

当 RAG 学会了思考:Agentic RAG 架构与实战(上)

传统 RAG 依赖固定的"检索-生成"流程,面对复杂研究任务时常显得力不从心。Agentic RAG 通过引入 AI Agent 的自主决策能力,让检索系统具备了主动规划、多轮迭代、工具调用和记忆管理的能力。本文从架构原理出发,详细对比了 Agentic RAG 与传统 RAG 在检索策略、推理模式、交互方式等方面的差异,并提供了完整的评估指标体系、主流框架对比、常见问题排错指南以及安全与隐私考量,为技术选型和系统开发提供了全面参考。

深耕人工智能底层逻辑,专注大模型架构、分布式训练与推理优化。在这里,不贩卖焦虑,只拆解硬核技术。从Transformer的数学之美到Agent的工程落地,用代码和论文说话,记录在AI浪潮中探索技术边界的每一步的专栏 1634
上一篇: RAG系列(五):系统评估 - 基于LLM-as-judge实现评估系统
下一篇: RAG系列(七):解析优化 - 不同文件类型统一转换成Markdown
Llama-Turbo
博客等级 码龄4年 9901粉丝 2022原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值