免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


RAG优化技巧

发布日期:2025-10-27 22:09:24 浏览次数: 1519
作者:君君AI

微信搜一搜,关注“君君AI”

推荐语

掌握RAG高效召回技巧,从query改写、知识库优化到检索策略,全面提升检索准确率。

核心内容:
1. Query改写的五种实用方法及对应Prompt设计
2. 知识库处理与优化的关键策略
3. 检索阶段提升准确率的技术方案

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家
上期文章介绍了RAG技术与应用,本期接着讲RAG过程中高效召回以及提高召回准确率的一些方法。

RAG介绍

君君 AI,公众号:君君AIRAG技术与应用
首先回到这张图,RAG的基本过程就是拿到用户query,转换成向量在知识库检索出相似度高的chunk,再将chunk和问题丢给大模型,让大模型结合chunk回答问题。
那么要提RAG的高效召回方法就可以从query、知识库检索和知识库的处理三个方面着手优化。
Query改写
首先你可能会问为什么要改写query呢,因为RAG的核心就是“检索-生成”,如果检索的过程就无法提供准确的答案,那生成阶段的质量必然会被降低。而用户提出的问题往往是口语化的、承接上下文的、模糊的,甚至是包含了情绪的,知识库中的内容往往是客观陈述性的。我们需要将用户提问转换成书面化、精确的检索语句。
如何进行改写?
我们只需要精心设计Prompt,让大预言模型帮我们转换即可。
Query改写的几种类型:
  • 上下文依赖型prompt
instruction = """你是一个智能的查询优化助手。请分析用户的当前问题以及前序对话历史,判断当前问题是否依赖于上下文。如果依赖,请将当前问题改写成一个独立的、包含所有必要上下文信息的完整问题。如果不依赖,直接返回原问题。"""prompt = f"""### 指令 ###{instruction}### 对话历史 ###{conversation_history}### 当前问题 ###{current_query}### 改写后的问题 ###"""
  • 对比型prompt

instruction = """你是一个查询分析专家。请分析用户的输入和相关的对话上下文,识别出问题中需要进行比较的多个对象。然后,将原始问题改写成一个更明确、更适合在知识库中检索的对比性查询。"""
  • 模糊指代型prompt

instruction = """你是一个消除语言歧义的专家。请分析用户的当前问题和对话历史,找出问题中"都"、"它"、"这个" 等模糊指代词具体指向的对象。然后,将这些指代词替换为明确的对象名称,生成一个清晰、无歧义的新问题。"""
  • 多意图型prompt

instruction = """你是一个任务分解机器人。请将用户的复杂问题分解成多个独立的、可以单独回答的简单问题。以JSON数组格式输出。"""prompt = f"""### 指令 ###{instruction}### 原始问题 ###{query}### 分解后的问题列表 ###请以JSON数组格式输出,例如:["问题1", "问题2", "问题3"]"""#原始查询: 门票多少钱?需要提前预约吗?停车费怎么收?#分解结果: ['门票多少钱?', '需要提前预约吗?', '停车费怎么收?']
  • 反问型prompt

instruction = """你是一个沟通理解大师。请分析用户的反问或带有情绪的陈述,识别其背后真实的意图和问题。然后,将这个反问改写成一个中立、客观、可以直接用于知识库检索的问题。"""

这么多种类型要如何判断什么时候用哪种类型呢?当然还是让大预言模型告诉我们,我们通过:

instruction = """你是一个智能的查询分析专家。请分析用户的查询,识别其属于以下哪种类型:1. 上下文依赖型- 包含'还有'、'其他'等需要上下文理解的词汇2. 对比型- 包含'哪个'、'比较'、'更'、'哪个更好'、'哪个更'等比较词汇3. 模糊指代型- 包含"它"、"他们"、"都"、"这个"等指代词4. 多意图型- 包含多个独立问题,用"、"或"?"分隔5. 反问型- 包含"不会"、"难道"等反问语气说明:如果同时存在多意图型、模糊指代型,优先级为多意图型>模糊指代型请返回JSON格式:{"query_type": "查询类型","rewritten_query": "改写后的查询","confidence": "置信度(0-1)"}"""prompt = f"""### 指令 ###{instruction}### 对话历史 ###{conversation_history}### 上下文信息 ###{context_info}### 原始查询 ###{query}### 分析结果 ###"""
small to big索引策略

高效的检索方法,特别适用于处理长文档或多文档场景。核心思想是通过小规模内容(如摘要、关键字或段落)建立索引,并链接到大规模内容主体中。

小规模内容检索:用户输入查询后,系统首先在小规模内容(如摘要、关键句或段落)中检索匹配的内容。小规模内容通常是通过摘要生成、关键句提取等技术从大规模内容中提取的,并建立索引。

链接到大规模内容:当小规模内容匹配到用户的查询后,系统会通过预定义的链接(如文档 ID、URL 或指针)找到对应的大规模内容(如完整的文档、文章)。大规模内容包含更详细的上下文信息,为 RAG 提供丰富的背景知识。

上下文补充:将大规模内容作为 RAG 系统的上下文输入,结合用户查询和小规模内容,生成更准确和连贯的答案。


知识库处理

  • 知识库问题生成与检索优化prompt

可以将大段的知识交给大模型,让大模型根据文本生成多个问题,再将这些问题和知识组成chunk存入到知识库,提升知识库的丰富度。

instruction = """你是一个专业的问答系统专家。给定的知识内容能回答哪些多样化的问题,这些问题可以:1. 使用不同的问法(直接问、间接问、对比问等)2. 避免重复和相似的问题3. 确保问题不超出知识内容范围"""
  • 对话知识沉淀prompt

产品上线后每天产生大量对话,可以从这些对话中提取和沉淀有价值的知识,持续丰富知识库。当然实现过程还是交给大模型帮我们去做。

首先提取知识:

instruction = """你是一个专业的知识提取专家。请从给定的对话中提取有价值的知识点,包括:1. 事实性信息(地点、时间、价格、规则等)2. 用户需求和偏好3. 常见问题和解答4. 操作流程和步骤5. 注意事项和提醒"""

然后将知识做整理:

prompt = f"""你是一个专业的知识整理专家。请将以下知识点进行智能合并,生成一个更完整、准确的知识点。### 合并要求:1. 保留所有重要信息,避免信息丢失2. 消除重复内容,整合相似表述3. 提高内容的准确性和完整性4. 保持逻辑清晰,结构合理5. 合并后的置信度取所有知识点中的最高值
### 待合并的知识点:xxxxx"""

最后将整理的知识当成chunk放进知识库。


好了,关于RAG的一些提高召回率的优化技巧就先介绍这些,如果你有更多想法不妨发到评论区,大家共同探讨。最后,点个关注你会收获更多~

#RAG #RetrievalAugmentedGeneration #Query改写 #对话知识沉淀 

#SmallToBig索引策略 #知识库问题生成


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询