自定义查询引擎的定义与实现
1. 概述
在 LlamaIndex 中,您可以(并且应该)定义自定义查询引擎,以便将其集成到下游的 LlamaIndex 工作流中,无论是构建 RAG(检索增强生成)、代理还是其他应用程序。我们提供了一个 CustomQueryEngine
,使定义您自己的查询变得容易。
2. 设置
首先,我们需要加载一些示例数据并对其进行索引。
安装依赖:
%pip install llama-index-llms-openai
!pip install llama-index
下载数据:
!mkdir -p 'data/paul_graham/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay.txt'
加载文档并创建索引:
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
# 加载文档
documents = SimpleDirectoryReader("./data/paul_graham/").load_data()
index = VectorStoreIndex.from_documents(documents)
retriever = index.as_retriever()
3. 构建自定义查询引擎
我们构建一个自定义查询引擎,模拟 RAG 管道。首先执行检索,然后进行合成。
要定义一个 CustomQueryEngine
,您只需定义一些初始化参数作为属性并实现 custom_query
函数。
导入必要的库:
from llama_index.core.query_engine import CustomQueryEngine
from llama_index.core.retrievers import BaseRetriever
from llama_index.core import get_response_synthesizer
from llama_index.core.response_synthesizers import BaseSynthesizer
选项 1:返回一个 Response
对象(RAGQueryEngine)