受够了RAG检索总不准?这6个预检索优化技巧一次讲清,精准度直线拉升(保姆级代码教程)!

为了提高RAG的检索质量,我们还需要做很多优化的工作。除了之前讲到的分块的优化、向量索引的优化,我们还需要对检索前和检索后做很多优化内容。

今天我们主要关注预检索优化环节中第一阶段查询翻译(Query Translation)

img

什么是查询翻译?

简单理解就是在真正的检索之前,先对用户查询进行“再加工”,让查询的问题变得更清晰、更准确、更适合机器去理解。

当遇到用户查询问题质量不高,表达内容模糊不清,不能覆盖所需要检索信息的所有方面时,我们就需要采取一系列如查询重写、查询分解和查询扩展等优化策略来改写用户的查询,提升查询嵌入与文档嵌入的相关性,从而达到更精确的检索效果。

查询翻译策略

下面我们详细介绍了几种流行的查询翻译策略:

查询重写(Re-Phrase)

核心思想:直接通过提示词去指导大模型对用户的查询进行重写优化。将口语化、不规范的的查询转换成更适合检索的标准化表达。

优势:当用户使用口语化表达、包含错别字或表述不准确的时候,查询重写可以很容易的提升检索精确度。

from openai import OpenAI
import os
from dotenv import load_dotenv

# 加载.env文件中的环境变量,包括API密钥等敏感信息
load_dotenv()

# 初始化OpenAI客户端,指定DeepSeek URL
client = OpenAI(
    base_url="https://api.deepseek.com", 
    api_key=os.getenv("DEEPSEEK_API_KEY")
)

defrewrite_query(question: str) -> str:
    """使用大模型重写查询"""
    
    prompt = f"""
请将以下用户查询重写为更适合知识库检索的标准化表达:

原始查询:{question}

重写要求:
1. 使用更准确的技术术语和标准表达
2. 明确查询意图,避免歧义
3. 去除口语化表达和冗余词汇
4. 扩展缩写,补充完整信息
5. 保持原查询的核心意图不变

请直接给出重写后的查询(不要加任何前缀或说明)。
    """
    # 使用DeepSeek模型重写查询
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[{"role": "user", "content": prompt}],
        temperature=0,
    )
    return response.choices[0].message.content.strip()

query = "那个机器学习的东西怎么调参数啊?"
rewritten = rewrite_query(query)

执行结果:

📝 原始查询: 「那个机器学习的东西怎么调参数啊?」
🔄 正在重写查询...
✨ 重写查询: 「机器学习模型超参数调优方法」

多查询(Multi-Query)

核心思想:将用户查询的同一问题生成多种问法。这能生成多样化的查询嵌入,增加命中相关文档的概率,弥补单一问法可能存在的偏差。

优势:可以大幅提高检索精确度,尤其是针对处理模糊和多语义类型的查询问题。

img

我利用 LangChain 中的 MultiQueryRetriever 实现并记录执行结果。

import os
from dotenv import load_dotenv
from langchain_chroma import Chroma
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_deepseek import ChatDeepSeek
from langchain_huggingface import HuggingFaceEmbeddings

# 加载文档数据
loader = TextLoader("data/txt/糖尿病.txt", encoding="utf-8")
data = loader.load()

# 文本分块
text_splitter = RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=50)
all_splits = text_splitter.split_documents(data)

# 向量存储
embed_model = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh")
vectorstore = Chroma.from_documents(documents=all_splits, embedding=embed_model)

# 设置LLM
llm = ChatDeepSeek(
    model="deepseek-chat", temperature=0.1, api_key=os.getenv("DEEPSEEK_API_KEY")
)

# 创建多查询检索器
multi_query_retriever = MultiQueryRetriever.from_llm(
    retriever=vectorstore.as_retriever(search_kwargs={"k": 3}), llm=llm
)

query = "糖尿病有什么症状?"
# 使用MultiQueryRetriever进行多查询生成和检索
docs = multi_query_retriever.invoke(query)

执行结果:

🔎 测试查询: 「糖尿病有什么症状?」
🔄 正在生成多个查询并检索...
INFO: HTTP Request: POST https://api.deepseek.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO: Generated queries: ['糖尿病常见症状有哪些表现?  ', '糖尿病初期会出现哪些身体信号?  ', '如何识别糖尿病的典型临床体征?']

RAG融合(RAG-Fusion)

核心思想:这种方法是一种增强型多查询,在多查询执行检索后使用倒数排序融合 (RRF) 算法,对查询返回的所有文档按相关性统一排序,而非简单合并,旨在为大模型(LLM)提供最优化、最全面的上下文。

优势:相比于简单的合并,它能够更加有效的筛选出最核心、最相关的结果。

img

查询分解(Query Decomposition)

核心思想:将用户查询拆分成多个子问题,并行或顺序处理。此方法把复杂的查询做了分解简化处理,丰富了检索上下文,从而能生成更细致、准确的答案。

优势:确保复杂问题的各个方面都得到检索,每个子问题都能找到最相关的信息,为LLM提供多维度的背景信息。

img

回溯提示(Step Back Prompting)

核心思想:当用户查询问题太过具体,将问题抽象成一个更高层次的“后退”问题,然后结合对原始问题和抽象问题的双重检索结果,为模型提供宏观与微观相结合的上下文,以生成更深刻、更全面的答案。

优势:同时获取具体信息和通用背景,提供更全面的知识基础,丰富上下文信息。结合具体细节和整体的理解,防止过度聚焦于狭窄信息。

假设文档嵌入(HyDE )

核心思想:针对不佳的用户查询,先由大模型生成一个理想的“假设答案”。再用这个假设答案的嵌入去检索真实文档,以此提高检索的精准度。

优势:假设答案与目标文档语义更接近,减少查询与文档间的语义鸿沟。生成的假设答案包含更多相关概念,同样丰富上下文信息。

总结

通过本文的介绍,我们深入了解了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%免费

在这里插入图片描述

Reranker 模型优化 RAG 检索结果排序的方法体现在多个方面。在 RAG 系统中,Reranker 处于第二阶段,在初始检索步骤之后对检索出的文档块进行重新排序,确保相关文档块优先传递给大语言模型(LLM)处理[^2]。 Reranker 综合评估多个核心维度,通过算法加权计算出每个结果的最终排序得分。这些核心维度包括语义相关度、时效性、权威性以及内容完整性等。语义相关度关注问题与内容的深层匹配,时效性会优先考虑最新资料,权威性会区分专家论述与普通观点,内容完整性则考量覆盖关键要素的程度[^4]。 在现代大模型知识检索系统经典的两阶段流程中,Reranker 负责精排阶段。第一阶段召回(Recall)是快速从海量文本中挑出一批“可能相关”的文档,常用方法有 BM25、向量相似度(embedding),通常取 Top50、Top100,较为宽松。而精排阶段则是对召回出来的这 50 - 100 条再精细排序,找出语义上最贴合问题的内容,会使用更大的模型打分,如 bge - reranker、ColBERT、MiniLM 等,虽然成本高一点,但准确度提升显著[^5]。 ```python # 以下是一个简单示意代码,假设已经有了召回的结果,对结果进行重排序 # 这里仅为示例,实际情况会更复杂 import torch from sentence_transformers import SentenceTransformer # 加载重排序模型 reranker = SentenceTransformer('bge-reranker-large') # 示例问题和召回的文档列表 question = "如何提高编程能力" recalled_docs = ["多实践编程项目可以提高编程能力", "编程书籍有助于提升编程技能", "看电影对编程能力提升不大"] # 计算每个文档与问题的相关性得分 scores = [] for doc in recalled_docs: input_text = "<Q>" + question + "<P>" + doc score = reranker.predict(input_text) scores.append(score) # 根据得分对文档进行排序 sorted_docs = [doc for _, doc in sorted(zip(scores, recalled_docs), reverse=True)] print("重排序后的文档:", sorted_docs) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值