本文详细介绍了RAG系统预检索优化中的查询翻译策略,包括查询重写、多查询、RAG融合、查询分解、回溯提示和假设文档嵌入六种方法。这些策略通过改进用户查询质量,提升检索与文档的相关性,从而提高RAG系统的整体表现。文章针对每种策略提供了核心思想、优势及代码实现,帮助读者根据具体业务场景灵活选择和应用这些优化技术,解决查询模糊、表达不规范等问题,实现更精准的信息检索。
什么是查询翻译?
简单理解就是在真正的检索之前,先对用户查询进行“再加工”,让查询的问题变得更清晰、更准确、更适合机器去理解。
当遇到用户查询问题质量不高,表达内容模糊不清,不能覆盖所需要检索信息的所有方面时,我们就需要采取一系列如查询重写、查询分解和查询扩展等优化策略来改写用户的查询,提升查询嵌入与文档嵌入的相关性,从而达到更精确的检索效果。
查询翻译策略
下面我们详细介绍了几种流行的查询翻译策略:
查询重写(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)
核心思想:将用户查询的同一问题生成多种问法。这能生成多样化的查询嵌入,增加命中相关文档的概率,弥补单一问法可能存在的偏差。
优势:可以大幅提高检索精确度,尤其是针对处理模糊和多语义类型的查询问题。
我利用 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)提供最优化、最全面的上下文。
优势:相比于简单的合并,它能够更加有效的筛选出最核心、最相关的结果。
查询分解(Query Decomposition)
核心思想:将用户查询拆分成多个子问题,并行或顺序处理。此方法把复杂的查询做了分解简化处理,丰富了检索上下文,从而能生成更细致、准确的答案。
优势:确保复杂问题的各个方面都得到检索,每个子问题都能找到最相关的信息,为LLM提供多维度的背景信息。
回溯提示(Step Back Prompting)
核心思想:当用户查询问题太过具体,将问题抽象成一个更高层次的“后退”问题,然后结合对原始问题和抽象问题的双重检索结果,为模型提供宏观与微观相结合的上下文,以生成更深刻、更全面的答案。
优势:同时获取具体信息和通用背景,提供更全面的知识基础,丰富上下文信息。结合具体细节和整体的理解,防止过度聚焦于狭窄信息。
假设文档嵌入(HyDE )
核心思想:针对不佳的用户查询,先由大模型生成一个理想的“假设答案”。再用这个假设答案的嵌入去检索真实文档,以此提高检索的精准度。
优势:假设答案与目标文档语义更接近,减少查询与文档间的语义鸿沟。生成的假设答案包含更多相关概念,同样丰富上下文信息。
总结
通过本文的介绍,我们深入了解了RAG预检索优化中查询翻译的六大核心策略。这些策略各有特色,适用于不同的应用场景:
- • 查询重写适合处理口语化和不规范表达
- • 多查询能够提高检索的召回率和覆盖面
- • RAG融合通过智能排序提供最优质的检索结果
- • 查询分解擅长处理复杂的多维度问题
- • 回溯提示结合宏观与微观视角提供全面理解
- • 假设文档嵌入有效缩小查询与文档间的语义差距
在实际应用中,我们往往需要根据具体的业务场景和数据特点,灵活组合使用这些策略。比如,对于技术文档问答系统,查询重写和假设文档嵌入可能更为有效。而对于复杂的业务咨询场景,查询分解和回溯提示可能是更好的选择。
读者福利大放送:如果你对大模型感兴趣,想更加深入的学习大模型**,那么这份精心整理的大模型学习资料,绝对能帮你少走弯路、快速入门**
如果你是零基础小白,别担心——大模型入门真的没那么难,你完全可以学得会!
👉 不用你懂任何算法和数学知识,公式推导、复杂原理这些都不用操心;
👉 也不挑电脑配置,普通家用电脑完全能 hold 住,不用额外花钱升级设备;
👉 更不用你提前学 Python 之类的编程语言,零基础照样能上手。
你要做的特别简单:跟着我的讲解走,照着教程里的步骤一步步操作就行。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
现在这份资料免费分享给大家,有需要的小伙伴,直接VX扫描下方二维码就能领取啦😝↓↓↓
为什么要学习大模型?
数据显示,2023 年我国大模型相关人才缺口已突破百万,这一数字直接暴露了人才培养体系的严重滞后与供给不足。而随着人工智能技术的飞速迭代,产业对专业人才的需求将呈爆发式增长,据预测,到 2025 年这一缺口将急剧扩大至 400 万!!
大模型学习路线汇总
整体的学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战,跟着学习路线一步步打卡,小白也能轻松学会!
大模型实战项目&配套源码
光学理论可不够,这套学习资料还包含了丰富的实战案例,让你在实战中检验成果巩固所学知识
大模型学习必看书籍PDF
我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。
大模型超全面试题汇总
在面试过程中可能遇到的问题,我都给大家汇总好了,能让你们在面试中游刃有余
这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
👉获取方式:
😝有需要的小伙伴,可以保存图片到VX扫描下方二维码免费领取【保证100%免费】
相信我,这套大模型系统教程将会是全网最齐全 最适合零基础的!!