介绍
查询转换使用手册展示了在检索增强生成 (RAG) 查询引擎、智能体或其他流程中执行用户查询前进行转换和分解的多种技术。这些转换可以提高 AI 应用中响应的质量和相关性。
https://github.com/adithya-s-k/AI-Engineering.academy/tree/main/RAG/06_Query_Transformation_RAG
查询转换技术
1. 路由
路由涉及识别与给定查询相关的工具子集。
flowchart LR A[用户查询] --> B[选择器] B --> C[工具 1] B --> D[工具 2] B --> E[工具 N] C & D & E --> F[选定工具]
实现方法:
- 使用
LLMSingleSelector
或LLMMultiSelector
进行基于大语言模型的选择 - 使用
PydanticSingleSelector
或PydanticMultiSelector
进行基于函数调用的选择 - 使用
ToolMetadata
定义工具选项
2. 查询重写
查询重写涉及生成原始查询的多个变体,以改善检索结果。
实现方法:
- 使用
PromptTemplate
和大语言模型 (LLM) 进行自定义实现 - 使用
HyDEQueryTransform
进行假设性文档嵌入查询
3. 子查询生成
该技术将复杂查询分解成多个子查询,每个子查询面向特定工具。
实现方法:
- 使用
OpenAIQuestionGenerator
或LLMQuestionGenerator
- 使用
ToolMetadata
定义工具选项
4. ReAct 智能体工具选择
此方法使用 ReAct 框架决定要使用的工具以及在该工具上执行的查询。
实现方法:
- 使用
ReActChatFormatter
进行输入格式化 - 使用
ReActOutputParser
解析大语言模型输出 - 使用
FunctionTool
定义工具
使用
每种查询转换技术都可以作为较大系统中的模块化组件使用。以下是查询重写的基本使用示例:
from llama_index.core import PromptTemplate
from llama_index.llms.openai import OpenAI
query_gen_prompt = PromptTemplate("你的提示模板在这里")
llm = OpenAI(model="gpt-3.5-turbo")
def generate_queries(query: str, llm, num_queries: int = 4):
response = llm.predict(query_gen_prompt, num_queries=num_queries, query=query)
queries = response.split("\n")
return queries
queries = generate_queries("你的查询内容在这里", llm)
总结
查询转换使用手册提供了一套完整的技术,帮助开发者增强 AI 应用中的查询处理能力。通过利用这些转换技术,开发者可以创建更强大、更准确的信息检索和问答系统。
有关详细实现和与特定查询引擎或检索器集成的更多内容,请参考 LlamaIndex 文档。
本 README 提供了查询转换使用手册的概述,包括每种查询转换技术的简要说明和 Mermaid 图表,涵盖四种主要查询转换技术:路由、查询重写、子查询生成、ReAct 智能体工具选择。
每个部分都包括一个流程图可视化、技术简要描述以及基本实现细节。此外,本 README 还包括一个简单的查询重写使用示例,为用户提供起点。
您希望我详细扩展或修改本 README 的哪个部分吗?