38 LlamaIndex查询转换:优化查询处理 (HyDE 多步查询分解)

LlamaIndex查询转换:优化查询处理

在LlamaIndex中,查询转换功能允许你对索引结构进行查询转换。查询转换模块会将一个查询转换为另一个查询。它们可以是单步的,即在查询执行之前只运行一次转换;也可以是多步的,即查询被转换并执行,响应被检索,然后后续查询以顺序方式进行转换和执行。

使用场景

查询转换有多种使用场景:

  1. 转换初始查询为更易嵌入的形式(例如HyDE)
  2. 将初始查询转换为更容易从数据中回答的子问题(单步查询分解)
  3. 将初始查询分解为多个更容易单独回答的子问题(多步查询分解)

HyDE(Hypothetical Document Embeddings)

HyDE是一种技术,给定一个自然语言查询,首先生成一个假设的文档/答案。然后使用这个假设文档进行嵌入查找,而不是原始查询。

使用HyDE的示例代码

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.core.indices.query.query_transform.base import (
    HyDEQueryTransform,
)
from llama_index.core.query_engine import TransformQueryEngine

# 加载文档,构建索引
documents = SimpleDirectoryReader("../paul_graham_essay/data").load_data()
index = VectorStoreIndex(documents)

# 使用HyDE查询转换运行查询
query_str = "what did paul graham do after going to RISD"
hyde = HyDEQueryTransform(include_original=True)
query_engine = index.as_query_engine()
query_engine = TransformQueryEngine(query_engine, query_transform=hyde)
response = query_engine.query(query_str)
print(response)

查看我们的示例笔记本,了解完整流程。

多步查询转换

多步查询转换是现有单步查询转换方法的泛化。

给定一个初始的复杂查询,查询被转换并执行。响应从查询中检索。根据响应(以及先前的响应)和查询,可能会对索引提出后续问题。这种技术允许查询在单个知识源上运行,直到该查询满足所有问题。

示例图像

在这里插入图片描述

对应示例代码

from llama_index.core.indices.query.query_transform.base import (
    StepDecomposeQueryTransform,
)

# gpt-4
step_decompose_transform = StepDecomposeQueryTransform(llm, verbose=True)

query_engine = index.as_query_engine()
query_engine = MultiStepQueryEngine(
    query_engine, query_transform=step_decompose_transform
)

response = query_engine.query(
    "Who was in the first batch of the accelerator program the author started?",
)
print(str(response))

通过这些查询转换技术,你可以在LlamaIndex中优化查询处理,提升查询效率和准确性。无论是单步还是多步查询转换,都能帮助你更好地从数据中获取所需信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值